Friday, May 22, 2009

XSLT to XML

Displaying XML Data

Attach the XSLT Page to the XML Page

Once your XSLT page is finished, you must attach it to the XML page. When you use Dreamweaver to attach the page, Dreamweaver inserts a link to the XSLT page at the top of the XML page.

The XML page is the page to which your site visitors will browse when viewing the page online. This is because they must browse to the "content" page containing the data (the XML file), instead of the page that contains the styles (the XSLT page).

The XML and XSL files you use for client-side transformations must reside in the same directory. If they don't, the browser will read the XML file and find the XSLT page for the transformation, but will fail to find assets (style sheets, images, and so on) defined by relative links in the XSLT page.

  1. With the xml_menu.xsl page open in the Document window, open the Bindings panel (Window > Bindings) if it isn't already open.
  2. In the Bindings panel, double-click on Schema for specials.xml to open the specials.xml file. (You must double-click the words, and not the page icon.)
  3. Select Commands > Attach an XSLT Stylesheet.
  4. In the Attach an XSLT Stylesheet dialog box, click the Browse button, browse to the xml_menu.xsl page, select it, and click OK.
  5. Click OK to close the Attach an XSLT Stylesheet dialog box.

    Browsing to the XSL file to attach an XSLT stylesheet

    Figure 16. Browsing to the XSL file to attach an XSLT stylesheet

    Dreamweaver inserts the reference to the XSLT page at the top of the XML document.

    The reference to the XSLT page at the top of the XML document

    Figure 17. The reference to the XSLT page at the top of the XML document

  6. Save the specials.xml page.
  7. Preview the XML page (not the XSLT page) in a browser by pressing F12 (Windows) or Option+F12 (Macintosh). The XML page is displayed in a browser, styled with the XSLT page you created.

    The XML page displayed in a browser, styled with the XSLT page you created

    Figure 18. The XML page displayed in a browser, styled with the XSLT page you created

    (+) View larger

Remember, your site visitors will browse to the XML page (not the XSLT page) once you've deployed both pages to your server. For more information, see About client-side XSL transformations.

DATA Displaying BY XML

Displaying XML Data

Learn About Using XML and XSL with Web Pages

Extensible Markup Language (XML) is a language that lets you structure information. Like HTML, XML lets you structure your information using tags, but XML tags are not predefined as HTML tags are. Instead, XML lets you create tags that best define your data structure. Tags are nested within others to create a schema of parent and child tags. Like most HTML tags, all tags in an XML schema have an opening and closing tag. The following example illustrates the basic structure of an XML file:

<?xml version="1.0">
<mybooks>
<book bookid="1">
<pubdate>03/01/2004</pubdate>
<title>Displaying XML Data with Macromedia
Dreamweaver</title>
<author>Charles Brown</author>
</book>
<book bookid="2">
<pubdate>04/08/2004</pubdate>
<title>Understanding XML</title>
<author>John Thompson</author>
</book>
</mybooks>

In this example, each parent <book> tag contains three child tags: <pubdate> , <title> , and <author>. But each <book> tag is also a child tag of the <mybooks> tag, which is one level higher in the schema. You can name and structure XML tags in any way you like, provided that you nest tags accordingly within others, and assign each opening tag a corresponding closing tag.

XML documents do not contain any formatting--they are simply containers of structured information. (You'll notice that the sample code contains no font, table, or heading tags.) Once you have an XML schema, you can use Extensible Stylesheet Language (XSL) to display the information. In the way that Cascading Style Sheets (CSS) let you format HTML, XSL lets you format XML data. You can define styles, page elements, layout, and so forth in an XSL file and attach it to an XML file so that when a user views the XML data in a browser, the data is formatted according to whatever you've defined in the XSL file. The content (the XML data) and presentation (defined by the XSL file) are entirely separate, providing you with greater control over how your information appears on a web page. In essence, XSL is a presentation technology for XML, where the primary output is an HTML page.

Extensible Stylesheet Language Transformations (XSLT) is a subset language of XSL that actually lets you display XML data on a web page, and "transform" it, along with XSL styles, into readable, styled information in the form of HTML. You can use Dreamweaver to create XSLT pages that let you perform XSL transformations using an application server or a browser. When you perform a server-side XSL transformation, the server does the work of transforming the XML and XSL, and displaying it on the page. When you perform a client-side transformation, a browser (such as Internet Explorer) does the work.

The approach you ultimately take (server-side transformations versus client-side transformations) depends on what you are trying to achieve as an end result, the technologies available to you, the level of access you have to XML source files, and other factors. Both approaches have their own benefits and limitations. For example server-side transformations work in all browsers while client-side transformations are restricted to modern browsers only (Internet Explorer 6, Netscape 8, Mozilla 1.8, and Firefox 1.0.2). Server-side transformations let you display XML data dynamically from your own server or from anywhere else on the web, while client-side transformations must use XML data that is locally hosted on your own web server. Lastly, server-side transformations require that you deploy your pages to a configured application server, while client-side transformations only require access to a web server.

This tutorial takes you through the steps of creating an XSLT page and performing a client-side transformation (mainly because the client-side workflow is much easier to execute, and doesn't require the use of an application server.) Once you have completed this tutorial, I recommend that you read John Skidgel's server-side transformation versoin of this article and Marius Zaharia's article on Consuming RSS feeds using server-side transformations. For more information about other ways to deploy XSLT pages, see the Learn About Other Deployment Options section at the end of this article.

Dreamweaver TUTORIAL


XML and Dreamweaver

by Kevin Ruse
June 09, 2004

While certainly not a full-blown XML editor, Dreamweaver MX 2004 includes a fair amount of support for XML. This latest release eases the web designers' transition into the area of structured markup. Many web designers using Dreamweaver rarely view their code, preferring instead to stay within the safe confines of the Dreamweaver Design View. Other designers frequent Code View often while writing JavaScript, CSS or simply because they are well-versed in HTML and prefer to write code as opposed to the WYSIWIG, drag-and-drop methods. Viewing or writing XML files will force the designer into Code View and may provide for all the functionality that's needed for web designers working with XML. This will prevent the need for the web designer to open additional software such as XML Spy, which is an excellent tool but provides for more than what is needed.

Programmers of XML applications that include XML database connectivity or those creating Web Services will indeed find full-service XML editors to be the correct choice for their toolbox. For web designers however, it may be the equivalent of learning how to use a 500w Variable Speed Keyless Chuck Hammer Drill when a screwdriver will do the job. This is not to say, however, that Dreamweaver is a mere screwdriver capable of performing only one function. The XML support in Dreamweaver combined with Flash and ColdFusion provide the means for rich internet applications including RSS feeds, Flash Remoting, Database Connectivity, Web Services and more. This article provides a summary of what can be done with Dreamweaver MX 2004 in the area of XML for the average Web designer.

Writing Well-Formed and Valid XML in Dreamweaver MX 2004

Web designers who work with XML will, foremost, want to ascertain if their documents are well-formed. Dreamweaver MX 2004 is capable of checking the file for well-formedness. The Validation tab of the Results panel allows a check for both well-formed XML and valid XML. Dreamweaver can validate a single file, user-selected files, or an entire site.

Results panel showing a validation error
Figure 1. The Results panel showing a validation error.

Another method for checking the well-formedness of an XML file is to open it in Dreamweaver and preview it in a Web browser. Netscape 7.0, Mozilla 1.0 and Internet Explorer 6.0 will return a parse-error message if your file is not well-formed.

In addition to checking for well-formed XML, Dreamweaver MX 2004 can validate XML documents against DTDs (other schema technologies are currently not supported). If the XML file has an associated DTD, the Results Panel will display validity errors as shown in Figure 1. Dreamweaver can also validate against a supplied DTD in addition to its built-in DTDs for XHTML 1.0 Transitional and Strict.

Related Reading

Learning XML
By Erik T. Ray

Table of Contents
Index
Sample Chapter

Read Online--Safari Search this book on Safari:
 

Code Fragments only

XML and Dreamweaver MX Templates

Dreamweaver offers two primary ways of incorporating XML in your web sites. The first method, to be used at design-time only, is to use templates (.dwt files). Templates hold the basic static sections of a web site; including site navigation, copyright statements, and so on. Templates include editable regions, which web authors use to add content. When a new Web page is created using a template, the static regions appear as defined by the template ensuring the integrity of the site design. Templates also allow for rapid global changes, because editing the original template file will cause the changes to propagate to each Web page created via the template.

Once a page is created based on a template, XML can be imported into the template's editable regions, provided the region names match elements in the XML file.

XML and Server Side Technologies in Dreamweaver

The second method for incorporating XML data to your Web site is through server side technologies such as ColdFusion, ASP or JSP. This removes the design-time-only restriction imposed by templates. Using these server side technologies to access XML, however, requires working in "Code View". Thus, there are no dialog boxes, wizards or other forms of prompting the user for the requisite information. Therefore, the developer must be well-versed in the language utilized by the server-side technology.

Server-Side XML Processing with ColdFusion

An obvious choice for server-side technology for DreamWeaver users is ColdFusion. Using ColdFusion to access XML files requires following these basic steps while in code view:

  1. Load the XML file:

    <CFSET MyXmlFile = ExpandPath("name_of_file.xml")>

    This declares a variable called MyXmlFile and sets it to the results of the ExpandPath() method, which returns the path of the XML file supplied as the argument.

  2. Read the XML file:

    <CFFILE ACTION="READ" FILE="#MyXmlFile#" VARIABLE="MyXmlCode">

    This reads a text file from the server. The "file" attribute points to the file to be read using the MyXmlFile variable declared above. At this point the variable MyXmlCode contains a text string of the XML file on the server.

  3. Parse the XML file:

    <CFSET MyXml = XmlParse(MyXmlCode)>

    This sets a variable, MyXml, to the result of the XmlParse(). This result is a DOM (Document Object Model) tree.

Searching XML Documents

The following script illustrates searching through an XML document and outputting the search results to the Web browser.

<cfscript>
MyXml = XmlParse(MyXmlCode);
selectedElements = XmlSearch(MyXml, "Tag_A/Tag_B/Tag_C/*");
for (i = 1; i LTE ArrayLen(selectedElements); i = i + 1)
writeoutput(selectedElements[i].XmlName & " = " &
selectedElements[i].XmlText & "<br />");
</cfscript>

Figure 2. ColdFusion Script for searching XML

The main business of the search is done with the XmlSearch() method. This method accepts as an argument the XML DOM object to be searched and an XPath expression. In the example code in Figure 2, the elements being searched are all the children of Tag_C (indicated by /*), where Tag_C is the child of Tag_B, which is the child of Tag_A.

The code will then loop through all of the searched elements and output the child element's name, and its text contents.

After you write the server-side code you can return to Dreamweaver's WYSIWYG "Design View". You can then access the live XML data as it would appear to the Web browser after processing by the Application Server. This view is accessed via the "Live View" button on the "Document Toolbar| (see Figure 3), from the View menu in the main menu bar (View a Live Data), or the keyboard equivalent "Control-Shift-R".

Toolbar with the 'Live Data' button
Figure 3. The Toolbar, with the "Live Data" button circled.

Directly Outputting XML

As well as using the writeoutput function as explained above, XML DOM objects can be more directly referenced in ColdFusion code. This requires first the loading, reading and parsing of the XML file as explained above. The next step simply uses the ColdFusion output tag <cfoutput> to display the XML content, which is surrounded by the # symbol. Thus, with reference to Figure 2, the contents of Tag_C would be output to the Web page as follows:

<cfoutput>
#MyXml.Tag_A.Tag_B.Tag_C.XmlText#
</cfoutput>

If you wish to process the individual children of Tag_C, you must loop over them:

<cfloop index="c" from="1" to="#ArrayLen(MyXml.Tag_A.Tag_B.Tag_C)#">
#MyXml.Tag_A.Tag_B.Tag_C[c].Tag_D.XmlText#
</cfloop>

ColdFusion can also query XML files in a similar way to databases. Using a loop we can create a query of the XML file using the ColdFusion QueryNew() function.

<cfset numProducts = ArrayLen(MyXML.Product.XmlChildren)>
<cfset productInfoQuery = QueryNew("ProductName, Size, Weight, Price") >

<cfloop index="i" from = "1" to = #numProducts#>
<cfset temp = QueryAddRow(productInfoQuery)>
<cfset ProductName = QuerySetCell(productInfoQuery, "ProductName",
#MyXml.Catalog.Product[i].ProductName.XmlText#)>
<cfset Size = QuerySetCell(productInfoQuery, "Size",
#MyXml.Catalog.Product[i].Size.XmlText#)>
<cfset Weight = QuerySetCell(productInfoQuery, "Weight",
#MyXml.Catalog.Product[i].Weight.XmlText#)>
<cfset Price = QuerySetCell(productInfoQuery, "Price",
#MyXml.Catalog.Product[i].Price.XmlText#)>
</cfloop>

Like any database query, the results of this query can be used to display data in the website. ColdFusion can also be used to set the values of form fields dynamically, allowing for the creation of a dynamic search based on the users' parameters.

Conclusion

You can see through this introductory look, that Dreamweaver MX 2004 is capable of rudimentary work with XML and is often all a Web designer needs. The XML files created, viewed, edited and validated in Dreamweaver can then be accessed via the ColdFusion Markup Language. However, Dreamweaver falls short in comparison to XML editors such as XML Spy which include many more capabilities. Yet for the Web designer, who occasionally sees or creates XML files, and needs to edit or validate them, Dreamweaver MX 2004 is just the job. If you need to process XML for output, Macromedia ColdFusion as well as Macromedia Flash MX 2004 can be a good place to start.

Friday, May 15, 2009

Upload menggunakan ZIP

Cara Efektif Upload File

December 3rd, 2008  |  Published in Web Hosting

Di artikel sebelumnya kami telah menulis panduan untuk mengupload file, baik melalui File Manager cPanel juga melalui FTP Client FileZilla. Ada beberapa keunggulan dan kekurangan dari masing-masing cara tersebut. Misalnya saja dengan File manager di cPanel lebih simple untuk mengupload beberapa file saja sekalian bisa mengedit file tersebut. Namun kita akan kesulitan jika mengupload banyak file dan dengan ukuran yang besar. Menggunakan FTP Client kita mengupload banyak file sekaligus, tapi tidak semua bisa menggunakan fasilitas tersebut. FTP Client menggunakan port 21 yang mana tidak semua ISP atau admin jaringan membuka port tersebut. Lalu bagaimana jika kita akan mengupload banyak file, tapi dengan cara yang cepat dan praktis? Kami buka sedikit tips untuk mengatasi masalah tersebut.

Syarat yang dibutuhkan untuk bisa melakukan cara praktis tersebut adalah di komputer anda sudah terinstall program kompresi file. Kalau di windows kita bisa menggunakan program Winzip atau winrar untuk mengkompresi file menjadi .zip. Dalam contoh kali ini saya menggunakan sistem operasi linux untuk mengkompresi beberapa File menjadi .zip. Silahkan menuju folder yang akan di upload, lalu blok semua file dan folder yang akan di kompresi. Sebagai contoh, saya tampilkan screenshot mengkompres file/folder di linux.

Di contoh tersebut saya mengkompress instalasi untuk wordpress dimana di folder wordpress terdapat beberapa file dan folder. Saya masuk ke folder wordpress, kemudian blok semua file dan foldernya, baru saya kompress menjadi .zip.

Setelah file kompresi.zip selesai, silahkan anda buka cPanel atau FTP Client. Upload file kompresi.zip tersebut ke lokasi yang anda inginkan. Setelah file kompresi tersebut sudah di server (account hosting anda), silahkan masuk ke File manager. Masuk ke lokasi dimana tadi anda mengupload file kompresi.zip, klik kanan filenya dan pilih ekstrak file seperti pada gambar berikut.

Proses upload selesai dalam sekaligus

Wednesday, May 13, 2009

FILE PROTECTIONS

IIS Directory and File Protection

MS IIS - Access by Window Authentication (OS users) only!

  • Allow access to web files via Windows Authentication (Tested w/ IIS v5.0).  When the user hits the web page a Windows Authentication login screen will appear.
    • Launch IIS (Internet Information Services)
    • Find the directory that you want to protect - probably under "Default Web Site"
    • Right click on the directory and choose "Properties"
    • Click the tab "Directory Security"
    • Click "Edit" under the section "Anonymous access and authentication control"
    • Authentication Mode
      Blank – Anonymous access (uncheck this !!!)
      Blank – Basic Authentication
      Check – Integrated Windows authentication.
    • OK
    • Apply, OK
    • Testing - If you test from the server, then you already have Windows Authentication.  You may want to test from a workstation and access via a browser.
    • Directory Security - if you are still having issues, you may want to use Win Explorer on the server and look at the Directory security permissions.  Using Windows Explorer right click on the directory, the Properties, then "Security".  (FYI - Usually you should not need to play with these settings - just IIS's settings).

MS IIS - directory protection software via ISAPI filters.

For the products that I have tested/used you can email me if you want talk:  (www.michael-thomas.com - then look for an email link)

Note:  http://localhost or http://127.0.0.1 is your local IP address if testing on your PC.

  • Search Engine Key Words

  • Testing Issues with ISAPI Filters
    • .wmv - I've had issues with these type files.
    • .swf - I've had issues with these type of files.
    • .pdf - I've had issues with Adobe v6.  v7 seems to work.
    • "By Referrer" - seems to have issues with .wmv, .swf files and possibly .pdf.  I think the reason why is tied to the client requesting additional bytes without sending the "By Referrer" info.
  • http://www.iisprotect.com - Quote from there site "iisPROTECT password protects all file types: .jpg, .gif, .pdf, .mdb, .txt, .asp, .aspx .htm .anything!  Independent of NT security, iisPROTECT uses its own database or can easily tie into an existing database."
    • I have used this product to secure content (on multiple servers) based on a user having logged into a Web Application.
    • Form Based Cookie Login: Enable - set this to enable. 
    • The "By Referrer" filter has issues with .swf and .wmv files.  (Use the "Allow" option and then enter the allowed IP addresses.)
      • .swf - hangs with IE.
      • .wmv - has issues with certain "codec" versions of WMPv10, IE and IIS.  I could never pin down the solution.    I also tried the following tags:  object & embed.
    • The Filter "IP" filters by the IP address of the client's connection to the internet (see By Referrer for from what IP did the link originate.)
    • Filter & AutoLogin Options:  Domain, IP (client's IP), User Agent, Referrer.
  • http://www.flicks.com
    • WebQuota - works with IIS.
      • The "By Referrer" has issues with .swf and .wmv files.
        • .swf - hangs with IE.
        • .wmv - has issues with certain "codec" versions of WMPv10, IE and IIS.  I could never pin down the solution.  I also tried the following tags:  object & embed.
  • http://www.iismods.com - free open source software.
    (Note:  I never could get this product to function in my environment.)
    • Mod Auth Lite
    • Mod Auth Standard - Mod Auth Lite plus database and MD5 support.

MS IIS - (Windows Media Server)

  • Notes
    • Search Engine Key Words

    • Notes
      • DRM (Digital Rights Media) -
        • http://www.microsoft.com/windows/windowsmedia/knowledgecenter/technicalarticles.aspx - Info on DRM.
        • Windows Media Rights Manager - licenses and keys are used to protect content.
        • Windows Media Encoder - enables content owners to protect digital media content during the content creation process.  Quote from MS, "In order to play back protected content, a user must have the corresponding license. This separate license "unlocks" the content and determines how the content can be used. For example, a license for promotional content might allow a user to play the content five times, or the license for rental content might expire after three days.  The license is issued by a third-party license provider. Before you can protect your content, you must set up an account with a license provider and establish the business model and terms of the licenses for the content."
          http://www.microsoft.com/windows/windowsmedia/howto/articles/ProtectContent.aspx - excellent info on how DRM works.
      • Codecs - Quote from MS: "Codecs enable content authors to specify the bit rate of a stream, which, when coupled with the duration of that stream, determines the size of the resulting file. Codecs also provide the flexibility to adjust the way encoded video and audio content looks and sounds."
  • http://www.flicks.com
    • VideoQuota - works with Windows Media Services web server.
      • Warning: This product caused WMS to quit serving out content in my testing.  I uninstalled VideQuota and WMS started working again.

Active Directory Users CFC

Pull user info out of Active Directory for Flex

So I have been working on a project for creating a Company Directory in Flex and wanted to pull the data about employees out of Microsoft's Active Directory.  I chose AD because this seems to be the most up to date info about employees and their status as employees. Some employee databases don't get updated right away when someone get hired/fired, but AD sure does due to it's security model on the network.  People need to login on their first day, and Managers want them locked out on their last.

Upon doing some research a few years ago on this subject I saw that ColdFusion had an LDAP tag built-in and could query AD relatively easily.  I decided to once again go this route and create a CFC that would query Active Directory, and Flex could just call using Remote Object.

Some of the challenges with using AD is that I wanted it to be easy for Admins to populate AD the way they've always done it and feel most comfortable.  This means using the Active Directory Users and Computers dialog forms within Windows.  The problem here is that not every field I wanted, even though it may be in Active Directory, is available within the dialog forms.  Some of the workarounds I came up with was to populate the un-used fields that already exist in the dialog but use them for other purposes.  For example on the General tab there is a field called "Web Page"...so no one at this company has their own webpage,and this is usually just left blank.  I decided to put the employee photo filename here, and have Flex work it out to pull the image directly from the server using this information.  Also, DOB is not included in any of the forms, so I had to add this to the Notes field and preceed it with "DOB:" and let Flex parse it out and convert it to a date.

Despite the shortcomings of Microsoft, this CFC and Flex does a really good job at getting this info and it's really fast!  I think the ultimate in customization would be to have a Flex Users admin screen where we can just populate AD directly and add in any custom fields we want into AD, including a raw ByteArray field for images.

<cfcomponent extends="Service">
   
<cffunction name="getEmployees" access="remote" returntype="query">
<!---This function will bomb in Flex if the defaults below are not set properly--->

<!---************CHANGE DEFUALTS BELOW**************--->
<!---Replace with your Domian name--->
<cfparam name="domain" default="YOUR_DOMAIN">
<!---Replace with your Domian Controller name--->
<cfparam name="server" default="YOUR_ACTIVE_DIRECTORY_SERVER_NAME">
<!---Replace with an Administrative AD account--->
<cfparam name="username" default="Administrator">
<!---Replace with account password --->
<cfparam name="password" default="ADMINPASSWORD">
<!---Replace with your specific LDAP port number if different from MS default--->
<cfparam name="port" default="389">
<!---************END OF DEFAULTS***See Below for more options--->

<!---OK, Ready?...Try to get employee data from Active Directory--->
<cftry>
<cfldap action="QUERY"
    name="ldapquery"
<!--- Most popular fields pulled from AD Users you can add more if you wish. View AD schema with any LDAP viewer --->
    attributes="sn,givenname,initials,title,department,company,ipPhone,telephoneNumber,mail,physicalDeliveryOfficeName,wwwhomepage"
<!---Look in Users containter only, Bitch--->
    start="cn=users,dc=#domain#"
<!---Used to filter AD...looks at "Office" field in AD Users (physicalDeliveryOfficeName) and pulls record if populated with "DCC"  Change as nessesary.  userAccountControl makes sure to only select users who are NOT(!) disabled in AD.  Looks crazy, but we're talking Microsoft here--->
    filter="(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)) (physicalDeliveryOfficeName=DCC))"
    sort="givenname"  <!--- Sort records by First Name.  Change fields as nessesary or comment out for "random" results--->
     server="#sever#.#domain#"
    port="#port#"
    username="#domain#/#username#"  
    password="#password#">                 

        <cfcatch type="any"> <!---If LDAP query fails for any reason...execute this and return 0 records.--->
            <cfset UserSearch = "Failed">
            <cfset ldapquery.RecordCount = 0>
        </cfcatch>
</cftry>
    
    <cfreturn ldapquery>  <!---Return data back to Actionscript--->

</cffunction>    
</cfcomponent>

-Christopher C. Keeler

Monday, May 11, 2009

Corousel Horisontal

Carousel Lite - A jQuery plugin August 9th, 2007

jCarousel Lite is a jQuery plugin that carries you on a carousel ride filled with images and HTML content. Put simply, you can navigate images and/or HTML in a carousel-style widget. It is super light weight, at about 2 KB in size, yet very flexible and customizable to fit most of our needs.

Did I mention that it weighs just 2 KB?

As if that wasn't enough, the best part is yet to come… You don't need any special css file or class name to get this to work. Include the js file. Supply the HTML markup. Then, construct the carousel with just a simple function call.

Visit the project page for more information. There you can find a lot of demos and exhaustive documentation. This blog entry is just a teaser for further exploration.

Installing and getting it to work is as trivial as following the 3 steps given below…

Step 1:

Include a reference to the jQuery library and the jCarouselLite plugin. If you like interesting effects, include the Easing plugin as well (Optional). If you would like to navigate the carousel using mouse wheel, then include the mouse-wheel plugin as well (Optional).

<script type="text/javascript" src="path/to/jquery.js"></script>
<script type="text/javascript" src="path/to/jcarousellite.js"></script>
<!-- Optional -->
<script type="text/javascript" src="path/to/easing.js"></script>
<script type="text/javascript" src="path/to/mousewheel.js"></script>

Step 2:

In your HTML file, provide the markup required by the carousel (a "div" enclosing an "ul"). You also need the navigation buttons, but these buttons need not be part of the carousel markup itself. An example follows…

<button class="prev"><<</button>
<button class="next">>></button>
<div class="anyClass">
<ul>
<li><img src="someimage" alt="" width="100" height="100" ></li>
<li><img src="someimage" alt="" width="100" height="100" ></li>
<li><img src="someimage" alt="" width="100" height="100" ></li>
<li><img src="someimage" alt="" width="100" height="100" ></li>
</ul>
</div>

Step 3:

Fire a call to the plugin and supply your navigation buttons. You just managed to architect your own carousel.

$(function() {
$(".anyClass").jCarouselLite({
btnNext: ".next",
btnPrev: ".prev"
});
});

If you have any comments/suggestions/requests, feel free to drop in a comment or you can find me lurking around the jquery mailing list.

Bouncing Picture Screen

Floating images script All

Credits:
Name: Virtual Max
Homepage: Virtual Max Homepage

Note: Updated October 7th, 04 for NS6/Opera 7, doctype compatibility.

Description: One important feature of DHTML is it's ability to move elements around the page freely, without having to be tied down to one single spot on the page. "Virtual Max" took full advantage of this feature and created his cool "floating images" script for our Dynamic Drive surfers to use and enjoy. It's a cross-browser script that moves any number of images around the page (by wrapping the images inside <div>s, and animating each <div>), each following a randomly determined path. Furthermore, the images are clickable, making this script not only insanely cool, but practical as well!

Demo: Look around you...


Directions: Developer's View

Step 1: Download the following .js file and upload it into your webpage directory (either by clicking it, or clicking it with the shift key depressed for NS users):

moveobj.js

Step 2: Add the following into the <head> section of your page:


Step 3: Add the following into the <body> section of your page, outside any other tags. This contains the actual HTML codes used to display the images themselves:


You now essentially have the script installed and ready to run. Read on to see how to configure it to your liking.

Configuring the script

As mentioned in the description, this script can animate an unlimited number of images. The instructions above creates a situation where three images are animated (like in the demo). Obviously, you'll want to know how to configure it to handle any number of images. The process to this is simple but rather long. Each image is identified throughout the entire script with the name "flyimagex". For example, the first image is called "flyimage1", the second "flyimage2", and so on. Look in the code of Steps 2 and 3. Here are the exact steps to modifying the script so it animates any number of images:

1) Inside the code of Step 2, add/delete more "flyimagex" variables to it as specified in the documentation, depending on the number of images you're using.

2) Inside the code of Step 3, add/delete more of the <div> tags to your page accordingly as well. Make sure the "ID" attribute inside each of these <div> is defined with the unique variable name of the flying image (ie: flyimage1).

Recommend Us!
-If you like Dynamic Drive, please recommend us to a friend...

Legend
All- Script works with Netscape 4 AND Internet Explorer 4+
NS- Indicates script works with Netscape 4 (NOT NS 6 yet)
IE- Indicates script works with Internet Explorer 4 and above
NS6!- Temporary index set up on script category pages to indicate script works in NS6

COROUSEL ON LOAD

<body onload="Carousel()">

<script type="text/javascript">

/***********************************************
* Carousel Slideshow script- © Ger Versluis 2003
* Permission granted to DynamicDrive.com to feature script
* This notice must stay intact for legal use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/

/********************************************************
Create a div with transparent place holder in your html 
<div id="Carousel" style="position:relative">
<img src="placeholder.gif" width="404" height="202">
</div>
placeholder width:
4 sided: 1.42 * carousel image width + 3
6 sided: 2 * carousel image width +4
8 sided: 2.62 * carousel image width + 5
12 sided: 3.87 * carousel image width + 7
placeholder height: 
carousel image height+2

Insert onload in body tag
<body onload="Carousel()"> 
*********************************************************/

// 7 variables to control behavior
var Car_Image_Width=140;
var Car_Image_Height=225;
var Car_Border=true; // true or false
var Car_Border_Color="white";
var Car_Speed=4;
var Car_Direction=true; // true or false
var Car_NoOfSides=8; // must be 4, 6, 8 or 12

/* array to specify images and optional links. 
For 4 sided carousel specify at least 2 images
For 6 sided carousel specify at least 3
For 8 sided carousel specify at least 4
For 12 sided carousel specify at least 6
If Link is not needed keep it ""
*/
Car_Image_Sources=new Array(
"photo1.jpg","http://www.dynamicdrive.com",
"photo2.jpg","http://www.javascriptkit.com",
"photo3.jpg","", //this slide isn't linked
"photo4.jpg","http://www.codingforums.com" // NOTE No comma after last line
);

/***************** DO NOT EDIT BELOW **********************************/
CW_I=new Array(Car_NoOfSides/2+1);C_ClcW=new Array(Car_NoOfSides/2);
C_Coef=new Array(
3*Math.PI/2,0,3*Math.PI/2,11*Math.PI/6,Math.PI/6,3*Math.PI/2,7*Math.PI/4, 0,
Math.PI/4,3*Math.PI/2,5*Math.PI/3,11*Math.PI/6,0,Math.PI/6,Math.PI/3);
var C_CoefOf=Car_NoOfSides==4?0:Car_NoOfSides==6?2:Car_NoOfSides==8?5:9;
C_Pre_Img=new Array(Car_Image_Sources.length);
var C_Angle=Car_Direction?Math.PI/(Car_NoOfSides/2):0,C_CrImg=Car_NoOfSides,C_MaxW,C_TotalW,
C_Stppd=false,i,C_LeftOffset,C_HalfNo=Car_NoOfSides/2;

function Carousel(){
if(document.getElementById){
for(i=0;i<Car_Image_Sources.length;i+=2){
C_Pre_Img[i]=new Image();C_Pre_Img[i].src=Car_Image_Sources[i]}
C_MaxW=Car_Image_Width/Math.sin(Math.PI/Car_NoOfSides)+C_HalfNo+1;
Car_Div=document.getElementById("Carousel");
for(i=0;i<C_HalfNo;i++){
CW_I[i]=document.createElement("img");Car_Div.appendChild(CW_I[i]); 
CW_I[i].style.position="absolute";
CW_I[i].style.top=0+"px";
CW_I[i].style.height=Car_Image_Height+"px";
if(Car_Border){
CW_I[i].style.borderStyle="solid";
CW_I[i].style.borderWidth=1+"px";
CW_I[i].style.borderColor=Car_Border_Color}
CW_I[i].src=Car_Image_Sources[2*i];
CW_I[i].lnk=Car_Image_Sources[2*i+1];
CW_I[i].onclick=C_LdLnk;
CW_I[i].onmouseover=C_Stp;
CW_I[i].onmouseout=C_Rstrt}
CarImages()}}

function CarImages(){
if(!C_Stppd){
C_TotalW=0;
for(i=0;i<C_HalfNo;i++){
C_ClcW[i]=Math.round(Math.cos(Math.abs(C_Coef[C_CoefOf+i]+C_Angle))*Car_Image_Width);
C_TotalW+=C_ClcW[i]}
C_LeftOffset=(C_MaxW-C_TotalW)/2;
for(i=0;i<C_HalfNo;i++){
CW_I[i].style.left=C_LeftOffset+"px";
CW_I[i].style.width=C_ClcW[i]+"px";
C_LeftOffset+=C_ClcW[i]}
C_Angle+=Car_Speed/720*Math.PI*(Car_Direction?-1:1);
if((Car_Direction&&C_Angle<=0)||(!Car_Direction&&C_Angle>=Math.PI/C_HalfNo)){
if(C_CrImg==Car_Image_Sources.length)C_CrImg=0;
if(Car_Direction){
CW_I[C_HalfNo]=CW_I[0];
for(i=0;i<C_HalfNo;i++)CW_I[i]=CW_I[i+1];
CW_I[C_HalfNo-1].src=Car_Image_Sources[C_CrImg];
CW_I[C_HalfNo-1].lnk=Car_Image_Sources[C_CrImg+1]}
else{ for(i=C_HalfNo;i>0;i--)CW_I[i]=CW_I[i-1];
CW_I[0]=CW_I[C_HalfNo];
CW_I[0].src=Car_Image_Sources[C_CrImg];
CW_I[0].lnk=Car_Image_Sources[C_CrImg+1]}
C_Angle=Car_Direction?Math.PI/C_HalfNo:0;C_CrImg+=2}}
setTimeout("CarImages()",50)}

function C_LdLnk(){if(this.lnk)window.location.href=this.lnk}
function C_Stp(){this.style.cursor=this.lnk?"pointer":"default";C_Stppd=true;}
function C_Rstrt(){C_Stppd=false}
</script>

<div id="Carousel" style="position:relative">
<img src="placeholder.gif" width="371" height="225">
</div>

<p><font face="Arial" size="-2">Free DHTML scripts provided by<br><a href="http://www.dynamicdrive.com">Dynamic Drive</a></font></p>

</body>

Corousel

Carousel Slideshow

Description: Carousel Slideshow is a fabulous DHTML script for the showcasing of images on your site. It displays images in a 3D, carousel fashion. Highlights of this script other than its stunning appearance are:

  • Slideshow can be set to either slide in from right to left, or the reverse.

  • Slideshow can be set to be 4-sided, 6, 8, or 12. A 4-sided slideshow for example means 2 images will be in view at all times (the other two behind the scene).

  • Each image can have an optional link associated with it.

  • Slideshow pauses on mouseover.

  • A DOM based script that works in modern DHTML browsers- IE5+, NS6+, Opera 7+. 

Are you impressed yet?

Demo (6-sided):


Directions Developer's View

Step 1: Insert the below script into the BODY section of your page where you wish the slideshow to appear:

Select All

Step 2: Download the the below image "placeholder.gif", which the above script requires and references:

(enlarged for easier download. Right click and choose "Save As").

Step 3: Finally, add the below onload event handler inside the <BODY> tag itself:

<body onload="Carousel()"> 

That's a wrap. Read on for important customization info.

Customizing the script

All changes to the script takes place in the code of Step 1, which is documented for the purpose. First, customize the 7 variables near the top of the script per the comments. Then, locate the <DIV> tag at the bottom of the code, which reads:

<div id="Carousel" style="position:relative">
<img src="placeholder.gif" width="371" height="227">
</div>

This is where things get interesting. You now need to change the width and height of the "placeholder.gif" image above using the preset formula:

placeholder width:
-4 sided: 1.42 * carousel image width + 3
-6 sided: 2 * carousel image width +4
-8 sided: 2.62 * carousel image width + 5
-12 sided: 3.87 * carousel image width + 7

placeholder height: 
-carousel image height+2

In other words, depending on the number of sides your Carousel slideshow is set to, the width and height of the placeholder.gif image needs to change accordingly. In the demo, the slideshow is 8-sided, with images each having a dimension of "140" and "225". So the placeholder.gif is set to "371" (2.62*140+5) and "227" (225+2).

And that's it. FYI the above customization steps are repeated within the script for easy reference.

Friday, May 8, 2009

GUEST DESIGN

How to Design a Commercial Website

These are the guidelines we use here at Words in a Row to design a commercial website. This used to be one very long page; we've broken it up into separate pages covering the subjects below. To get more details click on the underlined words in the summary:

  • Look at your website as a continual advertisement. Make your site work like an ad.

    How do you make your site work as an effective advertisement?

  • Your website should be enjoyable. If it's not a joyride, at least it shouldn't be unpleasant.

  • A website should make you money. Sell something! Make at least part of your website a great sales pitch for whatever service or product you're selling.

  • Your site should give something away. There are many ways to give something valuable to your visitors without giving away the store.

  • Your site should build up an email list for you so you can promote to past visitors.

  • Your website should make it easy for people to contact you. Don't hide your company from your customers.

  • Design your site with the search engines in mind or you won't get many visitors.

  • Frequently neglected opportunities to get better rankings in search engines:

    • Neglected Headings--Graphics are not always better than text headings. Search engines don't index the text in images.

    • Neglected Text--You need lots of plain old written words (text). How much is enough? At least 250 words. Where do you need it?

    • Neglected Captions on Pictures--With a little thought, the humble ALT tag can get you more visitors.


  • Jakob Neilsen did a survey to find out the ten most common web design mistakes in October 2005. These same design issues keep coming up year after year. Make sure you're not doing them.

Note: Those of our competitors who read this information and are savvy enough to apply it are welcome to it! Good luck!

If you need help applying what we cover on these pages to your own website, feel free to contact us.

Return to Top of Page.

REFERENCES

Search Engine Optimizing References

The Google Directory's page which lists out marketing tutorials for webmasters, includes a link to our page about how to do directory registrations.

There are also many links from answers.google.com, where Google staff have referred webmasters to the technical information presented on our website. Here's an example, where someone asked a Google Forum about why his site was dropping in the search ranking results on Google.

Note: A link from Google DOES NOT imply an endorsement by Google of Words in a Row; but even so it is flattering and validative to have the experts at Google refer webmasters to the information and expertise on our website.

Search Engine Watch is also a great resource for webmasters, and they link to our site from their page about Online Publicity and Promotion Resources, Danny Sullivan saying our page is a "nicely done summary of key search engines and directories, with links to Add URL pages..." Which links to our page about how to Register at Directories. That page has been greatly expanded and improved since we received that accolade several years ago, and is always kept up to date with our advice about the best directories and search engines to go to when registering your site.

Free Consultation

If you own or market a website, get a free 15-minute phone consultation from Words in a Row. No one will twist your arm to buy anything.
It's easy! Call 541-572-2569 now to set up your free appointment or contact us by email to set a time.




What our Clients Say About Us

Our clients range from Fortune 500 companies to mom-and-pop shops. We provide services that range from Search Engine Optimization to web design to development of large database-driven ecommerce websites, to consulting and marketing services. Here's what our clients say about working with us:






In March of 2009, we received this unsolicited success story from David Wahl of DesignerFloor.com:

area rugs "The great thing about working with Jere Matlock at Words in a Row is that he makes the technical aspect of Search Engine Optimization about as understandable as it can possibly be made, whether he works with in person or just provides the information on his web site. In learning the art of marketing our web site at DesignerFloor.com, this has been extremely valuable so that we could sell as many area rugs to home owners, interior designers and just regular people as possible."

David Wahl
www.designerfloor.com





In September of 2008, we optimized and redesigned a website for Matt Roberts of Lavello Farmhouse Sinks. He sent us the following note:

farmhouse sink"Jere and Desi have been great to work with. Totally professional and completely knowledgeable about SEO, and the internet in general. Within 3 days of completing my site redesign, I went from having only 1 web page indexed, to having all of my pages indexed on Google. I will continue to use them for all of my web design/SEO work."

Matt Roberts
www.lavello-sinks.com





In September of 2008, we built a website for Lesa Benjamin of Facials Greenville. She sent us the following testimonial:

Facials in Greenville"I am a small business owner and knew that I needed a web presence. After much research and inquiry into the search engine optimization, web hosting, and web site building, I began to think it would never come about. Then I came across the Words in a Row web site... and what a lucky and blessed find that was for me! I knew I had found the people for my project. I have only positive words for my experience. I have been so pleased with the work that Desi has put into the building of my web site--her professionalism, expertise, talent and patience has brought about the most beautiful and impressive web site that I have ever seen! And has exceeded my expectations. Jere has been patient and thorough in helping me to understand the process and steps involved in building a successful web site and all that goes along with maintaining it. I have found them to be ethical, fair, through, patient and talented! And that is exactly what I wanted; I recommend them very highly!"

Lesa Benjamin
Owner
www.facialsgreenville.com

Note: Kudos also go to Amy Collen of Design Wise Art, who created the lovely graphics for this site.






In May of 2008, after we built the website for Mickelson Life Insurance Services based on a graphic design that they provided in-house, we received this unsolicited testimonial:

life insurance settlement"When looking for a partner to help build a new life insurance settlement website that was SEO optimized, a good start was to get someone who was able to get themselves well optimized. Fortunately that lead me to Jere Matlock and Words In A Row. From the very first call the experience was excellent. He took the time to understand the project and patiently answer any questions. In constructing our website he has been diligent and built the site with every possible angle planned in to improve our SEO.

I have no hesitation recommending Words In A Row to anyone who wants to build a serious search optimized website."

Simon Leach
VP Marketing- David Mickelson Insurance Services





We built the website for Virginia Mountain Cabins:

virginia mountain cabins "We can't recommend Jere Matlock of Words in a Row highly enough. He's always there for me with the answers I need. If he doesn't know, which is rare, he knows where to go. We love our website - Virginia Mountain Cabins. We've had so many compliments on it already - in fact, a friend said - 'I want a cabin in the mountains after looking at your site and I don't even like to go outside!' That says it all for us. Thanks Jere and Desi too! You guys are the best!"

Judy W.

Note: Kudos also go to Christian Peritore of Endless Graphics, who created the graphic design for this site.






Our client Front Sight Firearms Training Institute wrote this as an unsolicited recommendation at LinkedIn:

ignatius piazza "... [Jere Matlock] has done a magnificent job - in fact, he has taken one client to better results than 99% of his competition. Jere does a great job in helping orchestrate web activities to go up into top rankings on Google, Yahoo, etc."

David S.





Joanne Forman of DreamStreet Real Estate said the following:

"I've found that, in Portland at least, being #1 for my search terms means about $100,000 per year for me. Thank you so much!"

Joanne Forman
Realtor
DreamStreet Real Estate

Note: Here's Joanne's testimonial from a year earlier:

Homes for Sale Portland"My [real estate] business is within the top 10 most competitive categories on the web. After enjoying some success at the early stages of the internet, my web site had gradually lost any placement whatsoever. I had built my business on an internet marketing model and so losing any positioning was devastating to my bottom line.

"Choosing a web optimizer can be a challenge. There are those who profess to know Google's secrets, those who guarantee placement on search engines and directories and everyone is absolutely certain they have the key. How to choose? If part of life is just plain old dumb luck then you can say I 'lucked out'. I read a book on internet marketing and it mentioned Words In A Row. I contacted Jere Matlock at Words in a Row and decided to just 'go on intuition'. And, what a great choice it was!

"Two months after completion my site is either #1 or #2 in a VERY competitive category across all search engines and directories! ['homes for sale portland'] I'm pretty much a bottom line person so results matter. I would, without any reservation, recommend Jere Matlock at Words in a Row.

"On a personal note: If you enjoy the journey as much as the destination then Jere at Words in a Row is is the person for you."

Thank You Jere!
JoAnne F.
www.Homes-for-sale-Portland.com





Ron Smith of Speak Any Language.

Learn Spanish"A few years ago now, my business, Speak Any Language, got a huge boost from the stellar work of Jere Matlock at Words in A Row. In fact, our Yahoo site was going not much of anywhere and Jere gave us more than a boost. With his work and recommendations, we had a successful small business in short order. Of course I was very pleased to write a letter of reference that is still posted.

Alas, about a year ago I failed to take my own advice and let the boyfriend of a granddaughter re-do the site as I was leaving Yahoo to form my own site. It was a serious mistake.

The business floundered. So I got back into the 'queue' and Jere came to the rescue again. Business has resumed and is picking up strongly. Whew... do I have the temerity to make another recommendation? I guess I should. So - again - if you want to build or start your web business, get in line without delay. Jere remains a great guy and I especially appreciate his follow up and attention to detail. He'll teach you if you are ready to learn.

Ron Smith
Owner,
Speak Any Language





Ned Berndt of Miami Condo Lifestyle says:

luxury miami condos"Sometimes you just get real lucky. Finding Jere Matlock at Words in a Row was, for me, one of those special times! After several years of a no-results template site, I decided to find a web designer who could build a high ranking site for the competitive web world of Miami preconstruction luxury condo real estate.

"Well, not only does my luxury miami condos website look great -- really clean, not junked up -- but it's ranking like a racehorse!

"And to top it all off, Jere's a heck of a guy. He's easy-goin' but very knowledgable and plain fun to talk with about most anything! As a website novice, I felt he steered me correctly through all decisions necessary by providing great information and resources so I could make quality decisions. From design to SEO, coding to linking, he really knows his stuff! Thanks Jere."

Ned Berndt
Miami Condo Lifestyle





Kevin Johnson of Evan's Garden said this in recommendation:

Organic makeupWe retained Words in a Row first as search engine consultants and came to trust their expertise in this complex and challenging field. As they are also expert in designing fully search-engine-friendly, database-driven websites, they suggested that we create a new, fully-optimized site for our organic beauty products company.

They've done an excellent job on it and have been very responsive to our requests and happy to advise us on their workability, too.

The new site went live only a week ago and already our customers are sending pleased-to-glowing feedback on it. Also, we have already noted a significant increase in large orders from both existing customers and new customers. Many people are now buying considerably more products than they used to in one session, which is very, very happy-making for us, to say the least.

Kudos to Words in a Row for a job well done!

Kevin Johnson
EvansGarden.com





Testimonial from Brian Habel of www.st-george-realestate.com about the help he received from Words In A Row in optimizing his site for South Utah Real Estate:

south utah real estate"Being an astute, 'weed through the junk on the internet' kind of guy, I have noticed that once in a while you actually know when you picked on the right guy. That is the way I feel after working with a full time web developer in my office for six months and after all the things we have done to try to SEO our way up in the rankings... after all that to find Jere's services the most helpful out of all of it. Not just in 'feel good', but in actual rankings.

"We had 'tweaked' the SEO stuff to death on our fairly large site to where I thought I need to just go out and get more links. But then I thought of how, getting confined in my own world or too narrowly focused is so easy, yet anxiety-producing with all the SEO scams that exist. Still I needed some outsider feedback and critiqueing.

"What we noticed was that Jere was free enough with his secrets to engender trust, that we did not fear scheduling the consultation because he would be allowing us to either do the changes or to pay him to make the changes for us.

"The consultation critique was received by email and I followed up with a verbal consultation with questions and received excellent service and advice. Prior to this, I knew that going it alone was not good enough, when some knowledgeable, but wise help was needed. However, the prospect of the information not being good enough and me out the consultation fee was there, but what I felt or ascertained from Jere was this mild, unpretentous 'take the bull by the horns' assurance with the no-pressure sales hype.

"So after getting the consultation and making the changes we instantly have climbed in the search engines with some of our good key terms being number 2 and 3 on the first page and most of our terms being on the first two pages.

"There were things that my web developer could not find any information about on the internet that Jere was telling us to do, purely legitimate 'help the spiders' kind of stuff. Well, you can't argue with the results and there is promise for getting better results into the future--all because of the help we have received from a consultation with Words In A Row. We have been cautious about 'milking' the initial consultation with follow-up calls, but we have found the ability to make good on every bit of follow-up that we have needed to make clear on the intial consultation plus some. Words In A Row is dollar signs in a row!!!

Thanks for all your help Jere!

Brian Habel
www.SoUtah.com





Our client, COMgroup East, a top firm in the field of technology consulting, Voice over Internet (VoIP consulting) and telephone system design, sent in the following:

VoIP consultants"Thank you so much for the update [on our search engine rankings since your SEO project].

"Our team is beyond pleased with the results and with all of your efforts.

Keep em coming!!"


Regards, Michelle Moskowitz Saidi

COMgroup East
Director of Marketing
335 Madison Avenue, 16th Floor
New York, NY 10017
212.850.8806 (w)





Our client, Susan Hanasab of Christmas Gifts.com, sent in this testimonial:

Christmas Gifts "I have known Jere Matlock since October of 1998. Due to his efforts of optimizing the site with search engines, we are listed number one on Yahoo and Google, to name a few, when one searches for 'Christmas Gifts'. Our statistics of number of page views and number of visitors have been going up ever since.

"I asked Jere also to rebuild the site... He created a site that my clients are very happy about.

"I highly recommend Jere and look forward to a a great working relationship in the future and a greater expansion."

S. Hanasab, Owner
www.ChristmasGifts.com

Words in a Row first provided Search Engine Optimizing for this client in late 1998. At that time, the site was impossible to find in the search engines. Now, in a search on almost any search engine, www.ChristmasGifts.com comes up at or near the top of the listings in a search for the popular key word phrase "Christmas gifts", most often in the #1 spot. The Search Engine Optimizing service we provide is not a gimmick that quickly fades--it is a service that keeps on working over time. This website has gone through three major re-designs in the last nine years, each time we've been asked to re-optimize it to ensure that the ranking did not fall from the #1 spot. That ranking is very important to this client - without doing any advertising, during the Christmas season (October, November and December) this site serves over 3 million page views to over a million unique visitors.






Our SEO client Jon Prince of Candy Favorites was concerned that the SEO work we did might not pay off at Google, even though he loved the results we were getting at Yahoo (see below). Google didn't display ANY of his pages for the last few months, despite the site having a Google PageRank of 5. However, recently his site started showing up in first place of the search results at Google for most of his main key words, including "wholesale candy" and many more. Here's what he had to say:

candy "To not use Words In A Row would be to do your website a disservice! Others claim to be able to do SEO but Jere actually can do it!!

"I am amazed by the results and I suspect they will only get better.... It's wild and, again, I couldn't ask for better! Proves that all good things come in time as well as that it is important to be persistent.

"Wow!"

Jon sent me this email earlier, when his site made it onto many first-page positions at Yahoo for quite a few of his main search terms:

"Your SEO skills really do work wonders and all the effort is worth the wait! All I can say is Yahoo!!!"

Jon Prince
www.CandyFavorites.com





Erik Schimek. We performed Search Engine Optimization (SEO) of the Harmony Cedar Amish Furniture website for Erik Schimek, who says:

cedar chests Our business model is based on low retail markups, and high volume. Hiring Jere [Matlock of Words in a Row] to help promote our website was one of the smartest business decisions we ever made.

"Traffic rose significantly, we had effective ads running, and we began selling more products.

"More importantly, because Jere was happy to help with questions, we understood how to improve upon his work and produce even more hits and higher sales."

Erik Schimeck
www.HarmonyCedar.com

In 2008, we re-designed this site completely, switching to an x-Cart shopping cart with SEO modules and CSS modules installed. The site looks much like it did, but is now easy to maintain and still ranking very well at Google for his keywords, such as "cedar chests"






Ron Smith of Speak Any Language, a distributor of Pimsleur Language learning tapes and CDs

Pimsleur language system "I want to commend most highly the professional service provided by Jere Matlock of Words In a Row.

"Last Fall I began a new internet-based business, Speak Any Language and undertook a few steps to bring visitors to my new site including use of some of the automated or exclusively computer-driven search engine placement services--without much success. At the time I became aware of Words In A Row, I was getting only about 10 to 12 hits on the front page per day. Sales were minimal.

"Once I found Words In A Row, I carefully followed the free counsel and specific recommendations given by Jere and found almost immediate improvement. Hits went up to over 80 a day in short order with a consequent upsurge in sales. I also followed Jere's tips on site improvement including credibility enhancements. In this process, Jere himself was accessible, friendly, patient, and helpful even though I was not yet a paying customer.

"I decided to get in line and benefit from his complete search engine optimization (SEO) service. This is without question the best business decision I have made to date. After Jere completed his work, daily hits grew to over 400 with a proportionate increase in sales. The fee charged by Words In A Row was quickly amortized by a dramatic rise in revenues.

"The above speaks for itself. But let me add some qualitative comments. It is a pleasure to work with Jere. He is invariably even-tempered, attentive, and places focused attention on the customer's concerns. He is available for follow-up and continued help as needed. Most importantly, Jere operates with genuine concern for what is most helpful to his clients and displays great integrity in so doing.

"Rare enough in the business world or elsewhere.

"My advice: get in the 'queue' without delay. The odds are that it will be your best business decision as well."

Ron Smith, Owner,
Speak Any Language


Website Design References

Dr. Decuypere of www.HealthAlternatives2000.com, a natural health products provider.

sleep aid"We started a project to get our website up and running about two years ago. Various things came up along the way creating barriers to the achievement of this goal. Two months ago we decided, OK, we're going to just do it! I got in touch with Jere at Words In A Row and got all the pieces and parts to him that our previous web designer had created. He gave me a very clear proposal of what needed to be done to actually get our site up and running. We did our part as requested and then it was time for him to perform. This was done in a very 'A-to-B' fashion. Anything I didn't understand was easily explained by him so that I could understand it without having to be a computer programmer to get it.

"Our website is now undergoing its registration with the top directories and we'll be fully launched in a few days. Jere has been absolutely wonderful to work with and I would highly recommend him to anyone wanting the services of a website designer."

Dr. Decuypere
www.HealthAlternatives2000.com





Leor Zolman of BD Software, a provider of on-site advanced C++ training.

advanced C++ programming "I'm really, really pleased with your work on the site, both in terms of the design, being open to my picayune demands, responsiveness, patience, and good nature. If I ever get the chance to send business your way, I'll be sure to do so..."

Leor Zolman
BD Software





Marie Gale of Chandler's Handmade Natural Soaps. Words in a Row designed and optimized this site for the search engines and handles all online marketing. This site makes money for its owner:

natural soaps "Thanks so much for getting us first page placement at Google for the very competitive term 'natural soaps'. Much appreciated! We were nowhere to be found before you did your search engine optimization of our site."

Marie Gale
Owner, www.ChandlersSoaps.com





Barbara Dunn-Reeves, of Dark Horse Ranch, a site selling equine art. This is a site we designed from scratch, and optimized for the search engines:

equine art "Words in a Row created a very beautiful website for my business, DarkHorse Ranch, Inc.

"I absolutely love my site, as do those who visit it.
I routinely receive compliments from internet visitors, and requests to link to my site because it is so upscale and aesthetic. Since Jere Matlock created my site, my ecommerce business has increased.

"Being a computer novice, and at the same time an artist who is very particular about my artform and its presentation, I made voluminous requests of Jere, and asked endless technical questions. Jere incorporated all my requests and gave me the artistic license that I needed and wanted. At the same time, he expertly incorporated his talent as a designer into a technically sophisticated website that functions as an ecommerce site. He was patient and kind throughout the evolution of the design from start to finish, answering all my questions in layman's terms that I could understand.

"I take great pride in my website and how it presents my work, my art and my business to the world wide web.

"I would highly recommend Jere Matlock and Words in a Row to any individual or business desiring the very best in website design."

Barbara Dunn-Reeves
DarkHorse Ranch Inc.





Marketing References

We consulted with Cheri and Keith of Bahamas Vacation Guide when their site lost its good position in the search engines:

"Wanted to say thank you once again - we are now really reaping the rewards of following your instructions. January highs have always been extreme but I think this year we will have cause to really celebrate! We have had 8 GB traffic ... since 24 Dec! The year of our record highs without any help we did like 155K unique visitors per month. I don't know what the exact combination of things leading to this is but we are going so strong! I suspect that 155K is gonna be an old, stale record when this is through. For a 'Bahamas only' guide this is an amazing feat.... So this is most certainly an accomplishment that should bear credit to you!"

Cheri Kraus
Bahamas Vacation Guide





Dan Mueller, of Gloves in a Bottle. This is a site we optimized for the search engines, and which we are marketing. With a lot of patient work and testing various avenues of online and offline promotion, this site has finally become a "cash cow" for its owner. It is usually on the first page of results at Google for its main key word, "dry skin." That's a term that is extremely competitive and goes head to head with companies like Procter & Gamble. Currently this client has 4 of the top 10 spots at Google for that phrase!






Writing References

Susan Ochart of Sterling Management. Jere Matlock has interviewed many of Sterling Management's professional clients and written up articles based on those interviews for publication in Sterling's publications (such as Premiere Dentistry Magazine or Premiere CPA Magazine). Hundreds of those interviews are also posted on Sterling's website, at http://www.sterling-management.com.






Dr. Frank Davis co-wrote the book "Confronting Diabetes" with Jere Matlock. Dr. Davis is a foot doctor practicing in Reno, Nevada, who has seen thousands of patients suffering from the complications of diabetes. He wanted to write a book to help people who do not yet have the complications of diabetes avoid ever getting them. This book is available on our Books page.

The text of an article by Jere Matlock on the basics of marketing a website is available online at http://www.frugalmarketing.com/dtb/matlock.shtml.


Return to Top of Page.