The X-cart is very wide used software, however it is not very well optimized for the search engines. In the same time it is pretty simple to make it.
First of all you should change the skin1/dialog.tpl and include the dialog title to the “h2” tag. In the same time it is better to simplify the dialog itself, for example this way:
<h2 class="DialogTitle">{$title}</h2> <div class="Dialog">{$content}</div>
Of course you will need to redesign the default styles a little.
Secondly you should definitely use the reverse title order, you can find it in the general settings (“SEO”). It will help to start the title from the unique part of the title. So, for example, it will start from the product name and will end by the company (by default it is vice versa).
Thirdly the xml sitemap and some module for the URL rewrite is required. Usually it is not a problem to install it (including the customized carts).
And lastly you shouldn't forget to fill the meta keywords/description on the product and category pages. If you have a trouble with it, just copy the description text (withou any html tags).
I believe that most of the shop keepers can make these changes.
If you are ready for the next steps, it is possible to make more changes to receive the better result. But you should admit that these changes is big work.
The X-cart is very old software and you have to redesign it totally. It should be based on div. If you are using the 4.2.0 version (which is already based on divs), you should make the same because it is not light enought. You can compare the standart skin1/dialog.tpl:
<table cellspacing="0" {$extra}> <tr> <td class="DialogTitle">{$title}</td> </tr> <tr><td class="DialogBorder"><table cellspacing="1" class="DialogBox"> <tr><td class="DialogBox" valign="{$valign|default:"top"}">{$content} </td></tr> </table></td></tr> </table>
with the light one:
<h2 class="DialogTitle">{$title}</h2> <div class="Dialog">{$content}</div>
The same for skin1/menu.tpl:
<table cellspacing="0" cellpadding="0" width="100%" class="VertMenuBorder"> <tr> <td class="VertMenuTitleBox"> <table cellspacing="0" cellpadding="0" width="100%"> <tr> <td>{$link_begin}<img src="{$ImagesDir}/{if $dingbats ne ''}{$dingbats}{else}spacer.gif{/if}" class="VertMenuTitleIcon" alt="{$menu_title|escape}" />{$link_end}</td> <td width="100%"><font class="VertMenuTitle">{$menu_title}</font></td> {if $link_href} <td style="padding-right: 7px;"><a href="{$link_href}"><img src="{$ImagesDir}/menu_arrow.gif" alt="" /></a></td> {/if} </tr> </table> </td> </tr> <tr> <td class="VertMenuBox"> <table cellpadding="{$cellpadding|default:"5"}" cellspacing="0" width="100%"> <tr> <td>{$menu_content}<br /></td> </tr> </table> </td> </tr> </table>
instead of:
<div class="menu"> <div class="title {$dingbats}">{$menu_title}</div> <div class="content">{$menu_content}</div> </div>
It looks pretty simple, but you will need an experience person to make it, in other case you will receive the X-Cart constructions, but based on divs. On my experience the pages should be 2-3 times lighter.
When the layout will be based on divs, you will be able to move the main content of the page upper. So the menus and header should be more close to the bottom of the page in the code. Of course the absolute positions will be used in this case, but it wont be a problem. The container with “position: relative” should be used widely, and only inside these containers, the “position: absolute” should be used.
The next step is advanced meta tags management. The X-cart is not allow to set the titles for the pages, the page location is used, but it is not the best solution. The location can be used only if the title is not set.