Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

All Products SEO


Jack_mcs

Recommended Posts

What version of Header Tags do you have installed?

 

Jack

 

 

I have version 3.09 installed. I originally had 3.08 and I followed the instructions to update to 3.09 by uploading all that was in the admin part of the catalog.

 

Thanks.

Link to comment
Share on other sites

Hmm, I don't know what that could be then. The error is saying that the Header Tags code is being declared twice but this contribution doesn't decalre it anywhere so either a mistake was made with the Header Tags installation or there is code elsewhere in the shop that is causing the extra call. You might want to try replacing the includes/header_tags.php file and see if the error goes away. Other than that, you will have to try to isolate where the code is being redeclared. See if it only fails on one page, like all products, or if it is on any page - that sort of thing.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

Hmm, I don't know what that could be then. The error is saying that the Header Tags code is being declared twice but this contribution doesn't decalre it anywhere so either a mistake was made with the Header Tags installation or there is code elsewhere in the shop that is causing the extra call. You might want to try replacing the includes/header_tags.php file and see if the error goes away. Other than that, you will have to try to isolate where the code is being redeclared. See if it only fails on one page, like all products, or if it is on any page - that sort of thing.

 

Jack

 

 

I replaced the includes/header_tags.php file and nothing changed. It's only happening on that one page (all products) so I'm clueless as to where to look... I'll just have to dig around a bit.

 

I appreciate you taking your time to help me Jack. Thanks.

Link to comment
Share on other sites

That file comes with the Header Tags code already installed so be sure that you didn't add it again when making the changes for Header Tags.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

That file comes with the Header Tags code already installed so be sure that you didn't add it again when making the changes for Header Tags.

 

Jack

 

 

I didn't add it again... but I did find the deathstar! I turned off STS and All Products works as expected. So this is an STS compatibility issue I guess. I hadn't even thought of that earlier. I did just recently alter the header tags code in the sts_inc folder to accommodate FWR's duplicate content manager contribution... perhaps this is the problem?

 

Thanks again for your help Jack. The All Products SEO contribution really does look great!

Link to comment
Share on other sites

Thanks. If you are using STS, you should add the code to the <head> section of each page. That might be the problem.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

Thanks. If you are using STS, you should add the code to the <head> section of each page. That might be the problem.

 

Jack

 

 

So apparently my problem solving skills went on vacation and didn't tell me before they left...

 

The header tags code is already in the top of all-products.php and with STS turned on I get the redeclare error. When I remove the code from the top of all-products.php the page works perfectly with STS, header tags and all. Obviously, then, when I turn off STS (with the mentioned code still removed) the page will display but without the header tag information.

 

So what am I missing? With the code removed somehow Header Tags SEO is still able to locate this page and apply the tags to it. This must be some function of STS right? I'm sure I must be thinking too hard into this...

 

Thanks again.

Link to comment
Share on other sites

Yes, there is code in STS that handles that part of the code. If you turn off STS and that code isn't in the head section, then Header Tags won't work properly for that page. It isn't usally a problem since most people don't turn STS off and on, excpet for testing.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

  • 3 weeks later...
Yes, there is code in STS that handles that part of the code. If you turn off STS and that code isn't in the head section, then Header Tags won't work properly for that page. It isn't usally a problem since most people don't turn STS off and on, excpet for testing.

 

Jack

 

 

Sorry for the late response. The problem was, as you correctly pointed out, that I was testing STS... hence the errors. All is working perfectly now and the contribution looks amazing. I really appreciate the time you invest in helping (myself and others) on the forums. I strongly believe that osCommerce would be nothing without the support and dedication of community members like you Jack.

 

Thanks.

Link to comment
Share on other sites

  • 3 weeks later...

Hi,

 

I did a translation to spanish of the installation instructions and the file catalog/includes/languages/espanol/all-products.php

 

Because I cant upload an spanish version of the contribution I put the translation in the next link to anyone that need it or in the case that could be add to the contribution:

 

http://www.oscatalogo.com/all-products-seo-en-espanol/473/

 

 

Thanks for this new version of All Products!

 

 

regards

nicko107

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

A new version has been uploaded. It contains these changes:

 

- Added css class for h1. Not needed if Header Tags is installed.

- Added german language file as supplied by dargond in the support thread.

- Changed the bredcrumb code on the page to use NAVBAR_TITLE.

- Added code to control title and sub-text on all-products page from admin.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

Hi,

 

According to ur instructions made changes to all files,but In Categories.php I couldn't find exactly this

 

"new infoBox($info_box_contents);"

 

 

 

Instead found:

 

new infoBox($info_box_contents, true);

 

at the end of the file.

 

Infact the code for categories.php is as following:

<?php
/*
 $Id: show_subcategories.php,v 1.0 2003/01/08 10:37:00 Exp $

 osCommerce, Open Source E-Commerce Solutions
 [url="http://www.oscommerce.com/"]http://www.oscommerce.com/[/url]

 Based on: main_categories.php Ver. 1.0 by Gustavo Barreto

 History: 1.0 Creation

 Released under the GNU General Public License

*/

// Preorder tree traversal
 function preorder($cid, $level, $foo, $cpath)
 {
   global $categories_string, $HTTP_GET_VARS;

// Display link
   if ($cid != 0) {
     for ($i=0; $i<$level; $i++)
       $categories_string .=  '  ';
     $categories_string .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath
=' . $cpath . $cid) . '">';

// 1.6 Are we on the "path" to selected category?
     $bold = strstr($HTTP_GET_VARS['cPath'], $cpath . $cid . '_') ||  $HTTP_GET_VARS['cPath'] == $cpath . $cid;
// 1.6 If yes, use <b>
     if ($bold)
       $categories_string .=  '<b>';
     $categories_string .=  $foo[$cid]['name'];
     if ($bold)
       $categories_string .=  '</b>';
     $categories_string .=  '</a>';
// 1.4 SHOW_COUNTS is 'true' or 'false', not true or false
     if (SHOW_COUNTS == 'true') {
       $products_in_category = tep_count_products_in_category($cid);
       if ($products_in_category > 0) {
         $categories_string .= ' (' . $products_in_category . ')';
       }
     }
     $categories_string .= '<br>';
   }

// Traverse category tree- this is for older snapshots pre-November 2002
/*    foreach ($foo as $key => $value) {
     if ($foo[$key]['parent'] == $cid) {
//        print "$key, $level, $cid, $cpath<br>";
       preorder($key, $level+1, $foo, ($level != 0 ? $cpath . $cid . '_' : ''))
;
     } */
// Function used for post November 2002 snapshots
 function tep_show_category($counter) {
   global $foo, $categories_string, $id;

   for ($a=0; $a<$foo[$counter]['level']; $a++) {
     $categories_string .= "  ";
   }
   }
 }

?>
<!-- show_subcategories //-->
         <tr>
           <td class="infoBox_left">

<?php

//////////
// Display box heading
//////////
 $info_box_contents = array();
 $info_box_contents[] = array('align' => 'left', 'text'  => BOX_HEADING_CATEGORIES);
 new infoBoxHeading($info_box_contents, true, false, false, true);

//////////
// Get categories list
//////////
// 1.2 Test for presence of status field for compatibility with older versions
//  $status = tep_db_num_rows(tep_db_query('describe categories status')); used for older snapshots
$status = tep_db_num_rows(tep_db_query('describe ' .  TABLE_CATEGORIES . ' status'));


 $query = "select c.categories_id, cd.categories_name, c.parent_id, c.categories_image
           from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd
           where c.categories_id = cd.categories_id";
// 1.3 Can't have 'where' in an if statement!
 if ($status >0)
   $query.= " and c.status = '1'";
 $query.= " and cd.language_id='" . $languages_id ."'
           order by sort_order, cd.categories_name";

 $categories_query = tep_db_query($query);


// Initiate tree traverse
 $categories_string = '';
 preorder(0, 0, $foo, '');

//////////
// Display box contents
//////////
 $info_box_contents = array();
 $row = 0;
 $col = 0;
 while ($categories = tep_db_fetch_array($categories_query)) {
  if ($categories['parent_id'] == 0) 
  {
           $temp_cPath_array = $cPath_array;  //Johan's solution - kill the array but save it for the rest of the site
        unset($cPath_array);

           $cPath_new = tep_get_path($categories['categories_id']);

        $text_subcategories = '';
    $subcategories_query = tep_db_query($query);
    while ($subcategories = tep_db_fetch_array($subcategories_query)) 
        {

               if ($subcategories['parent_id'] == $categories['categories_id'])
               {

                                       $cPath_new_sub = "cPath="  . $categories['categories_id'] . "_" . $subcategories['categories_id'];

                   $text_subcategories .= '' . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new_sub, 'NONSSL') . '" class="menusubcateg">' . '   ' . tep_image(DIR_WS_IMAGES . 'pointer_blue_light.gif', '') . $subcategories['categories_name'] . '</a>' . " ";
               } // if
    } // While Interno
   $info_box_contents[$row] = array('align' => 'left',
                                          'params' => 'class="smallText" width="125" valign="top"',
                                          'text' => '' . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '" class="menucateg"><b>' . ' ' . tep_image(DIR_WS_IMAGES . 'pointer_blue.gif', '') . $categories['categories_name'] . '</b></a>' . $text_subcategories);
   $col ++;
   if ($col > 0) 
       {
               $col = 0;
               $row ++;
   }
   $cPath_array = $temp_cPath_array; //Re-enable the array for the rest of the code
  }
 }
 new infoBox($info_box_contents, true);


?>
           </td>
         </tr>
<!-- show_subcategories_eof //-->

Link to comment
Share on other sites

  • 2 months later...
The database code for that contribution blindly deletes any entry with SEO in it so you have to run the database changes for this one again. But you should only have to run the following, not the full file.

INSERT INTO configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, use_function) 
VALUES ('','All Products: ON/OFF', 'ALL_PRODUCTS_SEO', 'true', 'All Products <br>(true=on false=off)', '279', '1', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now(), NULL);
INSERT INTO configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, use_function)
VALUES ('','All Products: Display Mode', 'ALL_PRODUCTS_SEO_DISPLAY_MODE', 'true', 'Display in standard table format <br>(true=on false=off)', '279', '2', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now(), NULL);
INSERT INTO configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, use_function)
VALUES ('','All Products: Display Numbers in list', 'ALL_PRODUCTS_SEO_DISPLAY_NUMBERS', 'true', 'Show numbers in the list of clickable links at the top of the All Products page.', '279', '3', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now(), NULL);
INSERT INTO configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, use_function)
VALUES  ('', 'All Products: Link Separator', 'ALL_PRODUCTS_SEO_LINK_SEPARATOR', '|', 'Separate the clickable links with this character.', '279', '4', NULL, now(), NULL);
INSERT INTO configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added, use_function)
VALUES  ('', 'All Products: Exclude Characters', 'ALL_PRODUCTS_SEO_EXCLUDE_LIST', '', 'Enter a comma separated list of characters to be excluded from the clickable links. For example, entering a,b will cause the list not to show A and B.', '279', '5', NULL, now(), NULL);

 

Jack

 

 

Jack, This was very helpful for me too. For some reason, I have been having a conflict with the database for All Products SEO and Sitemap SEO. I still have not been able to restore my header thought which appears as:

 

ALL_PRODUCTS_SEO_HEADING_TITLE

 

ALL_PRODUCTS_SEO_SUB_HEADING_TEXT

 

Your continued assistance is always appreciated.

Link to comment
Share on other sites

Those are entries in the database. Since they are appearing as capital letters, it means the database changes were not made. You'll need to delete all of the entries for this contribution in the database and run it again or just upload those two commands. Although I doubt that just those two are missing so it is probably better to reload them all.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

Hi.

 

Jack, Thanks for another great contribution. It installed and is working perfectly. :thumbsup:

 

setup ready to run with Header Tags SEO.

 

I can see (potential) problems for users without header tags installed (I use cdynamic)

All pages will have the same header tags which will cause Google Duplicates.

 

So I have temporarily added

<META NAME="ROBOTS" CONTENT="NOINDEX, FOLLOW">

I have added the missing </A>’s to make it W3 validate and changed the breadcrumb to

 

$breadcrumb->add($firstletter . ' - ' . NAVBAR_TITLE, tep_href_link(FILENAME_ALLPRODS_SEO, '', 'NONSSL'

Also I added this for the title tags

define('TEXT_INFORMATION', $firstletter.' - All Products ');

and

<title><?php echo TEXT_INFORMATION; ?></title>
<meta name="description" content="<?php echo TEXT_INFORMATION; ?>">

which should help with duplicates on each letter (fl=A, fl=B, etc).

But what about fl=C&sort=2a&page=2 and fl=C&sort=2a&page=3?

Is there any way to avoid duplicates on these?

 

I also have some letters which contain no data eg fl=Y

There are no products to list in this category.

Is there any way to stop Google from spidering these pages?

 

Sorry if this is posted in the wrong thread but I could not find a thread for the Non SEO Version.

 

Regards

 

Ken

Link to comment
Share on other sites

Thanks for the code changes notes. I will look them over for the next release. To stop google from looking at the pages, if the lack of products is permanent, there is a setting in admin that will allow those letters not be shown so google would never see the no-result page. The other option is to add a no index meta tag to the page if the results are empty. Although I think the proper way is to use the canonical meta tag since google will probably complain about the valid result pages too.

 

Jack

Edited by Jack_mcs

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

Hi Jack

 

Thanks for the info.

 

there is a setting in admin that will allow those letters not be shown

 

I just know that in 6 months time I will forget this and some new products will get missed. It would be nice if it were automatic.

 

canonical URLs

 

According to Google this should be used for urls whos’ content is identical or nearly identical.

 

Such as

 

product_info.php?cPath=12&products_id=61

and

product_info.php?products_id=61

 

In a paginated series, each page contains entirely different content/items so they shouldn't be grouped as one URL

 

So it would not be correct to use canonical URLs here.

 

Regards.

 

Ken.

Link to comment
Share on other sites

Hi.

 

I did some more reading, but now I’m really confused.

 

Google says

it should only be used in situations where the content is identical or nearly identical. In a paginated series, each page contains entirely different content/items so they shouldn't be grouped as one URL

 

But Google also says

When Google “canonicalizes” a url, we try to pick the url that seems like the best representative from that set

 

These two statements appear to contradict each other?

 

So should we add

 

<link rel="canonical" href="http://www.mysite.co.uk/all-products.php">

 

or not?

 

Confused

 

Ken

Link to comment
Share on other sites

The problem is that google never defined "duplciate content." They took the approach that they would know it when they saw it leaving many shop owners to figure it out for themselves. The general rule for the canonical tag seems to be that if one url has extensions to it, like page numbers and the content is not duplicate, then the tag shouldn't be used. The best solution, in my opinion, is to set up the code without the tag and monitor your google sitemap account (create one if you don't have one). It will list url's that are excluded based on duplicate content. If this page shows up, you know it needs to be changed.

 

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

Hi Jack.

 

Thank You for your reply.

 

I have been trying to avoid duplicate content even though Google says there is no penalty for this type of duplicate.

 

I’ll remove my no index tag from this contribution and monitor the results but I will leave in my changes to the breadcrumb and title tags.

 

Thanks again.

 

Ken.

Link to comment
Share on other sites

  • 1 month later...

Hi Jack,

 

sorry for my english.

I have installed your contib All Products SEO . I have also sitemap seo1.4 , seo header tags v4 installed . this is my first shop and I'm new here. I must change something? if so, what should I change? can you please help me to find this out? my Shop is still under construction . but you can see it here! . can you please tell me whether your contib working correctly?

 

please help

 

thank you

 

regards Pascal

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...