Header Tags SEO admin install instructions
===================================================================

WANT IT DONE FOR YOU?
Order the installation and have Header Tags SEO installed and working
within 24 hours. This includes assistance with setting it up:
http://www.oscommerce-solution.com/header-tags-seo-p-122.html
Use the coupon code headertags_discount and save 10% off of the cost
of installation.

Works with any version of osCommerce 2.3 or higher

NOTE: The Responsive version of oscommerce has code similar to that
      used in this addon and is for the same purpose. Some of the 
      changes below witll remove some of that code. It should all be
      removed since only one can work at a time.

Remember!
 1) BACKUP FIRST - NO RESPONSIBILITY HELD

********* If you have performed the instructions in the *********
********* Install_Catalog.txt file, skip steps 2 and 3. *********

 2) Make the database changes as explained in the Install_Catalog.txt file.

 3) Make changes in Install_Catalog.txt file

 4) If you have not installed other addons into your shop, then upload all 
    of the files both the catalog and catalog_only_new_files directories 
    to the same location in your shop and that will complete the 
    installation. If you have installed other addons, then you should only 
    upload the files in the catalog_only_new_files directory and then make 
    the following edits. 

    PLEASE NOTE: The Bootstrap files change fairly often so the files included 
    in this package may not match them. In that case, uploading the files could 
    remove changes in the latest version of Bootstrap. If in doubt, perform 
    the manual installation below.

The changes below are separated by =====, which indicates a new file, and
by -----, which is a change in the same file. This is an attempt to make 
the instructions a little easier to follow.

===================================================================
In admin/includes/languages/english/categories.php at the end of the 
file. Repeat for any other language you would like Header Tags SEO to 
work with.

ADD:

/*** Begin Header Tags SEO ***/
define('TEXT_PRODUCT_METTA_INFO', 'Header Tags SEO Meta Tag Data');
define('TEXT_PRODUCTS_BREADCRUMB', 'Breadcrumb Text');
define('TEXT_PRODUCTS_PAGE_TITLE', 'Title Tag');
define('TEXT_PRODUCTS_PAGE_TITLE_ALT', 'Title Tag - Alternate');
define('TEXT_PRODUCTS_PAGE_TITLE_URL', 'Title Tag - URL');
define('TEXT_PRODUCTS_HEADER_DESCRIPTION', 'Meta Description');
define('TEXT_PRODUCTS_KEYWORDS', 'Meta Keywords');
define('TEXT_PRODUCTS_LISTING_TEXT', 'Product Listing Text');
define('TEXT_PRODUCTS_SUB_TEXT', 'Product Page Sub Text');
define('TEXT_PRODUCTS_ADDITIONAL_WORDS', 'Additional Words: (comma separated)');
/*** End Header Tags SEO ***/

===================================================================
In admin/includes/template_top.php, 

FIND (around line 39):

</head>

ADD ABOVE:

<?php
/*** Begin Header Tags SEO ***/
include('includes/header_tags_seo/hts_template_top.php');
/*** End Header Tags SEO ***/
?>
        
===================================================================
In admin/categories.php,

FIND (about line 65)

          $categories_name_array = $_POST['categories_name'];

ADD BENEATH:

          /*** Begin Header Tags SEO ***/
          $categories_htc_title_array = str_replace('"', '&quot;', $_POST['categories_htc_title_tag']);
          $categories_htc_title_alt_array = str_replace('"', '&quot;', $_POST['categories_htc_title_tag_alt']);
          $categories_htc_title_url_array = str_replace('"', '&quot;', $_POST['categories_htc_title_tag_url']);
          $categories_htc_desc_array = str_replace('"', '&quot;', $_POST['categories_htc_desc_tag']);
          $categories_htc_keywords_array = $_POST['categories_htc_keywords_tag'];
          $categories_htc_breadcrumb_array = $_POST['categories_htc_breadcrumb_text'];
          $categories_htc_description_array = $_POST['categories_htc_description'];

Find (a few lines down):          

          $sql_data_array = array('categories_name' => tep_db_prepare_input($categories_name_array[$language_id]));

ADD BENEATH:
          
          $sql_data_array['categories_htc_title_tag'] = (tep_not_null($categories_htc_title_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_title_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_array[$language_id])));
          $sql_data_array['categories_htc_title_tag_alt'] = (tep_not_null($categories_htc_title_alt_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_title_alt_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_alt_array[$language_id])));
          $sql_data_array['categories_htc_title_tag_url'] = (tep_not_null($categories_htc_title_url_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_title_url_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_url_array[$language_id])));
          $sql_data_array['categories_htc_desc_tag'] = (tep_not_null($categories_htc_desc_array[$language_id]) ? tep_db_prepare_input($categories_htc_desc_array[$language_id]) :  tep_db_prepare_input($categories_name_array[$language_id]));
          $sql_data_array['categories_htc_keywords_tag'] = (tep_not_null($categories_htc_keywords_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_keywords_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_array[$language_id])));
          $sql_data_array['categories_htc_breadcrumb_text'] = (tep_not_null($categories_htc_breadcrumb_array[$language_id]) ? tep_db_prepare_input(strip_tags($categories_htc_breadcrumb_array[$language_id])) :  tep_db_prepare_input(strip_tags($categories_name_array[$language_id])));
          $sql_data_array['categories_htc_description'] = tep_db_prepare_input($categories_htc_description_array[$language_id]);
      /*** End Header Tags SEO ***/   
          
    -------------------------------------------------------------------------------
FIND (around line 98):

        tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath . '&cID=' . $categories_id));
        break;
      case 'delete_category_confirm':

ADD ABOVE:

        /*** Begin Header Tags SEO ***/
        if (HEADER_TAGS_ENABLE_CACHE != 'None') {  
          require_once('includes/functions/header_tags.php');
          ResetCache_HeaderTags('index.php', 'c_' . $categories_id);
        }
        /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 149):

        tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath));
        break;
      case 'delete_product_confirm':

ADD ABOVE:

        /*** Begin Header Tags SEO ***/
        if (HEADER_TAGS_ENABLE_CACHE != 'None') {  
          require_once('includes/functions/header_tags.php');
          ResetCache_HeaderTags('index.php', 'c_' . $categories_id);
        }
        /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 173):

        tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath));
        break;
      case 'move_category_confirm':

ADD ABOVE:

        /*** Begin Header Tags SEO ***/
        if (HEADER_TAGS_ENABLE_CACHE != 'None') {  
          require_once('includes/functions/header_tags.php');
          ResetCache_HeaderTags('product_info.php', 'p_' . $product_id);
        }
        /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 285):

          $language_id = $languages[$i]['id'];

          $sql_data_array = array('products_name' => tep_db_prepare_input($_POST['products_name'][$language_id]),
                                  'products_description' => tep_db_prepare_input($_POST['products_description'][$language_id]),
                                  'products_url' => tep_db_prepare_input($_POST['products_url'][$language_id]));
REPLACE it with

          $language_id = $languages[$i]['id'];
          
          /*** Begin Header Tags SEO ***/
          $products_head_title_tag = (tep_not_null($_POST['products_head_title_tag'][$language_id]) ? str_replace('"', '&quot;', $_POST['products_head_title_tag'][$language_id]) : str_replace('"', '&quot;', $_POST['products_name'][$language_id]));
          $products_head_title_tag_alt = (tep_not_null($_POST['products_head_title_tag_alt'][$language_id]) ? str_replace('"', '&quot;', $_POST['products_head_title_tag_alt'][$language_id]) : str_replace('"', '&quot;', $_POST['products_name'][$language_id]));
          $products_head_desc_tag = (tep_not_null($_POST['products_head_desc_tag'][$language_id]) ? str_replace('"', '&quot;', $_POST['products_head_desc_tag'][$language_id]) : str_replace('"', '&quot;', $_POST['products_name'][$language_id]));
          $sql_data_array = array('products_name' => tep_db_prepare_input($_POST['products_name'][$language_id]),
                                  'products_description' => tep_db_prepare_input($_POST['products_description'][$language_id]),
                                  'products_url' => tep_db_prepare_input($_POST['products_url'][$language_id]),
                                  'products_head_title_tag' => tep_db_prepare_input(strip_tags($products_head_title_tag)),
                                  'products_head_title_tag_alt' => tep_db_prepare_input(strip_tags($products_head_title_tag_alt)),
                                  'products_head_title_tag_url' => ((tep_not_null($_POST['products_head_title_tag_url'][$language_id])) ? tep_db_prepare_input(strip_tags($_POST['products_head_title_tag_url'][$language_id])) : tep_db_prepare_input(strip_tags($_POST['products_name'][$language_id]))),
                                  'products_head_desc_tag' => tep_db_prepare_input(strip_tags($products_head_desc_tag)),
                                  'products_head_keywords_tag' => ((tep_not_null($_POST['products_head_keywords_tag'][$language_id])) ? tep_db_prepare_input(strip_tags($_POST['products_head_keywords_tag'][$language_id])) : tep_db_prepare_input(strip_tags($_POST['products_name'][$language_id]))),                                     
                                  'products_head_breadcrumb_text' => tep_db_prepare_input($_POST['products_head_breadcrumb_text'][$language_id]),                                     
                                  'products_head_listing_text' => tep_db_prepare_input($_POST['products_head_listing_text'][$language_id]),                                     
                                  'products_head_sub_text' => tep_db_prepare_input($_POST['products_head_sub_text'][$language_id]),                                     
                                  'products_head_additional_words' => tep_db_prepare_input($_POST['products_head_additional_words'][$language_id]));                                     
         /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 377):

          tep_redirect(tep_href_link('categories.php', 'cPath=' . $cPath . '&pID=' . $products_id));
        break;
      case 'copy_to_confirm':

ADD ABOVE:

          /*** Begin Header Tags SEO ***/
          if (HEADER_TAGS_ENABLE_CACHE != 'None') {  
            require_once('includes/functions/header_tags.php');
            ResetCache_HeaderTags('product_info.php', 'p_' . $products_id);
          }
          /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 407);

            $description_query = tep_db_query("select language_id, products_name, products_description, products_url from products_description where products_id = '" . (int)$products_id . "'");
            while ($description = tep_db_fetch_array($description_query)) {
              tep_db_query("insert into products_description (products_id, language_id, products_name, products_description, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0')");
            }

REPLACE WITH:

           /*** Begin Header Tags SEO ***/
           require_once('includes/functions/header_tags_general.php');
	           
           $hts_fields = GetHTSFieldList();
            
           $description_query = tep_db_query("select language_id, products_name, products_description, products_url, products_seo_title, products_seo_description, products_seo_keywords, " . $hts_fields['fields'] . " from products_description where products_id = '" . (int)$products_id . "'");
            
           while ($description = tep_db_fetch_array($description_query)) {
              
               tep_db_query("insert into products_description (products_id, language_id, products_name, products_description, products_url, products_viewed, products_seo_title, products_seo_description, products_seo_keywords, " . GetHTSFieldListWithIDs(true) . ") values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0', '" . tep_db_input($description['products_seo_title']) . "', '" . tep_db_input($description['products_seo_description']) . "', '" . tep_db_input($description['products_seo_keywords']) . "', " . $hts_fields['input'] . ")");
            
           }
           /*** End Header Tags SEO ***/
           
    -------------------------------------------------------------------------------
FIND (around line 448):

    if (isset($_GET['pID']) && empty($_POST)) {
      $product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_url, p.products_id, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, p.products_status, p.products_tax_class_id, p.manufacturers_id from products p, products_description pd where p.products_id = '" . (int)$HTTP_GET_VARS['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");

REPLACE WITH:

    if (isset($_GET['pID']) && empty($_POST)) {
    /*** Begin Header Tags SEO ***/
      $hts_fields = GetHTSFieldListWithIDs();
      $product_query = tep_db_query("select pd.products_name, pd.products_description, pd.products_url, p.products_id, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, date_format(p.products_date_available, '%Y-%m-%d') as products_date_available, p.products_status, p.products_tax_class_id, p.manufacturers_id, p.products_gtin, " . $hts_fields . " from products p, products_description pd where p.products_id = '" . (int)$_GET['pID'] . "' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'");
    /*** End Header Tags SEO ***/ 
    
    -------------------------------------------------------------------------------
FIND (around line 620):

NOTE: There can be several instances of the code:
        for ($i=0, $n=sizeof($languages); $i<$n; $i++)
   so you need to be sure you have the correct one. The best way to do that is to do 
   a search for TEXT_PRODUCTS_DESCRIPTION, which is part of the code to be replaced.

<?php
    for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
          <tr>
            <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_DESCRIPTION; ?></td>
            <td><table border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td class="main" valign="top"><?php echo tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']); ?>&nbsp;</td>
                <td class="main"><?php echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (empty($pInfo->products_id) ? '' : tep_get_products_description($pInfo->products_id, $languages[$i]['id']))); ?></td>
              </tr>
            </table></td>
          </tr>
<?php
    }
?>
          <tr>
            <td colspan="2"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
          </tr>

REPLACE WITH:

<?php /*** Begin Header Tags SEO ***/ ?>
<?php
    for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
?>
          <tr>
            <td class="main" valign="top"><?php if ($i == 0) echo TEXT_PRODUCTS_DESCRIPTION; ?></td>
            <td><table border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td class="main" valign="top"><?php echo tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']); ?>&nbsp;</td>
                <td class="main">
                <?php 
                  if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_PRODUCTS == 'false')
                    echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (isset($products_description[$languages[$i]['id']]) ? stripslashes($products_description[$languages[$i]['id']]) : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])));
                  else 
                  {
                    if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') { 
                      echo tep_draw_fckeditor('products_description[' . $languages[$i]['id'] . ']', '600', '300', (isset($products_description[$languages[$i]['id']]) ? stripslashes($products_description[$languages[$i]['id']]) : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])));
                    } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') { 
                        echo tep_draw_textarea_ckeditor('products_description[' . $languages[$i]['id'] . ']', '70', '10',(isset($products_description[$languages[$i]['id']]) ? stripslashes($products_description[$languages[$i]['id']]) : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])),'id = products_description[' .$languages[$i]['id'] . ']');
                    } else { 
                      echo tep_draw_textarea_field('products_description[' . $languages[$i]['id'] . ']', 'soft', '70', '15', (isset($products_description[$languages[$i]['id']]) ? stripslashes($products_description[$languages[$i]['id']]) : tep_get_products_description($pInfo->products_id, $languages[$i]['id'])));
                    }
                  } 
                ?>
                </td>
              </tr>
            </table></td>
          </tr>
<?php
    }
?>
          <tr>
            <td colspan="2" class="main" style="padding:10px 0;"><hr></td>
          </tr>
          <?php require('includes/modules/header_tags_seo.php'); ?>
          
          <tr>
            <td colspan="2" class="main" style="padding:10px 0;"><hr></td>
          </tr>
<?php /*** End Header Tags SEO ***/ ?>

    -------------------------------------------------------------------------------
FIND (around line 787):

<?php
  } elseif ($action == 'new_product_preview') {
    $product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_url, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id, pd.products_seo_title, p.products_gtin, pd.products_seo_description, pd.products_seo_keywords from products p, products_description pd where p.products_id = pd.products_id and p.products_id = '" . (int)$_GET['pID'] . "'");

REPLACE WITH:
 
<?php
  } elseif ($action == 'new_product_preview') {
    /*** Begin Header Tags SEO ***/ 
    $product_query = tep_db_query("select p.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_url, p.products_quantity, p.products_model, p.products_image, p.products_price, p.products_weight, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p.manufacturers_id, p.products_gtin, " . GetHTSFieldListWithIDs() . " from products p, products_description pd where p.products_id = pd.products_id and p.products_id = '" . (int)$_GET['pID'] . "'");
    /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 800):

    $languages = tep_get_languages();
    for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
      $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
      $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);

REPLACE WITH:

    /*** Begin Header Tags SEO ***/    
    $languages = tep_get_languages();
    for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
      $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
      $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);
      $pInfo->products_head_title_tag = tep_db_prepare_input($products_head_title_tag[$languages[$i]['id']]);
      $pInfo->products_head_title_tag_alt = tep_db_prepare_input($products_head_title_tag_alt[$languages[$i]['id']]);
      $pInfo->products_head_title_tag_url = tep_db_prepare_input($products_head_title_tag_url[$languages[$i]['id']]);
      $pInfo->products_head_desc_tag = tep_db_prepare_input($products_head_desc_tag[$languages[$i]['id']]);
      $pInfo->products_head_keywords_tag = tep_db_prepare_input($products_head_keywords_tag[$languages[$i]['id']]);
      $pInfo->products_head_breadcrumb_text = tep_db_prepare_input($products_head_breadcrumb_text[$languages[$i]['id']]);
      $pInfo->products_head_listing_text = tep_db_prepare_input($products_head_listing_text[$languages[$i]['id']]);
      $pInfo->products_head_sub_text = tep_db_prepare_input($products_head_sub_text[$languages[$i]['id']]);
      $pInfo->products_head_additional_words = tep_db_prepare_input($products_head_additional_words[$languages[$i]['id']]);
    /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 929):

      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, cd.categories_description, cd.categories_seo_description, cd.categories_seo_keywords, cd.categories_seo_title, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified from categories c, categories_description cd where c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and cd.categories_name like '%" . tep_db_input($search) . "%' order by c.sort_order, cd.categories_name");
    } else {
      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, cd.categories_description, cd.categories_seo_description, cd.categories_seo_keywords, cd.categories_seo_title, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified from categories c, categories_description cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by c.sort_order, cd.categories_name");
    }
    
REPLACE WITH:

    /*** Begin Header Tags SEO ***/
      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified, cd.categories_htc_title_tag, cd.categories_htc_title_tag_alt, cd.categories_htc_title_tag_url, cd.categories_htc_desc_tag, cd.categories_htc_keywords_tag, cd.categories_htc_breadcrumb_text, cd.categories_htc_description from categories c, categories_description cd where c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' and cd.categories_name like '%" . tep_db_input($search) . "%' order by c.sort_order, cd.categories_name");
    } else {
      $categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.categories_image, c.parent_id, c.sort_order, c.date_added, c.last_modified, cd.categories_htc_title_tag, cd.categories_htc_title_tag_alt, cd.categories_htc_title_tag_url,cd.categories_htc_desc_tag, cd.categories_htc_keywords_tag, cd.categories_htc_breadcrumb_text, cd.categories_htc_description from categories c, categories_description cd where c.parent_id = '" . (int)$current_category_id . "' and c.categories_id = cd.categories_id and cd.language_id = '" . (int)$languages_id . "' order by c.sort_order, cd.categories_name");
    /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 1034):

        $category_inputs_string = $category_description_string = $category_seo_description_string = $category_seo_keywords_string = $category_seo_title_string = '';
        $languages = tep_get_languages();
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          $category_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']');
          $category_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
          $category_seo_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
          $category_seo_keywords_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_keywords[' . $languages[$i]['id'] . ']', NULL, 'style="width: 300px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"');
          $category_seo_title_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_title[' . $languages[$i]['id'] . ']');

REPLACE WITH:

        $category_inputs_string = '';
        $languages = tep_get_languages();
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          $category_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']');
          /*** Begin Header Tags SEO ***/
          $category_htc_title_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_title_tag[' . $languages[$i]['id'] . ']');
          $category_htc_title_alt_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_title_tag_alt[' . $languages[$i]['id'] . ']');
          $category_htc_title_url_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_title_tag_url[' . $languages[$i]['id'] . ']');
          $category_htc_desc_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_desc_tag[' . $languages[$i]['id'] . ']');
          $category_htc_keywords_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_keywords_tag[' . $languages[$i]['id'] . ']');
          $category_htc_breadcrumb_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_breadcrumb_text[' . $languages[$i]['id'] . ']');
          if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_CATEGORIES == 'false')
            $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, '');
          else 
          {
            if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') { 
              $headertags_editor_str = '<input type="hidden" id="categories_htc_description['. $languages[$i]['id'] . ']" name="categories_htc_description[' . $languages[$i]['id'] . ']" value="" style="display:none" /><input type="hidden" id="categories_htc_description[' . $languages[$i]['id'] . ']___Config" value="" style="display:none" /><iframe id="categories_htc_description[' . $languages[$i]['id'] . ']___Frame" src="fckeditor/editor/fckeditor.html?InstanceName=categories_htc_description[' . $languages[$i]['id'] . ']&amp;Toolbar=Default" width="600" height="300" frameborder="0" scrolling="no"></iframe>';
            } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') { 
              $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, '', 'id = "categories_htc_description[' . $languages[$i]['id'] . ']" class="ckeditor"');
            } else { 
              $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, '');
            }
          } 

          $category_htc_description_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . $headertags_editor_str;
          /*** End Header Tags SEO ***/        

    -------------------------------------------------------------------------------
FIND (around line 1078):

        $contents[] = array('text' => '<br>' . TEXT_SORT_ORDER . '<br>' . tep_draw_input_field('sort_order', '', 'size="2"'));

ADD BENEATH:

        /*** Begin Header Tags SEO ***/
        $contents[] = array('text' => '<br />' . 'Header Tags Category Title' . $category_htc_title_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Title Alt' . $category_htc_title_alt_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Title URL' . $category_htc_title_url_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Description' . $category_htc_desc_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Keywords' . $category_htc_keywords_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Breadcrumb' . $category_htc_breadcrumb_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Categories Description' . $category_htc_description_string);
        /*** End Header Tags SEO ***/  

    -------------------------------------------------------------------------------
FIND (around line 1084):

        $category_inputs_string = $category_description_string = $category_seo_description_string = $category_seo_keywords_string = $category_seo_title_string = '';
        $languages = tep_get_languages();
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          $category_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', tep_get_category_name($cInfo->categories_id, $languages[$i]['id']));
          $category_seo_title_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_title[' . $languages[$i]['id'] . ']', tep_get_category_seo_title($cInfo->categories_id, $languages[$i]['id']));
          $category_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_category_description($cInfo->categories_id, $languages[$i]['id']));
          $category_seo_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('categories_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_category_seo_description($cInfo->categories_id, $languages[$i]['id']));
          $category_seo_keywords_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_seo_keywords[' . $languages[$i]['id'] . ']', tep_get_category_seo_keywords($cInfo->categories_id, $languages[$i]['id']), 'style="width: 300px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"');

REPLACE WITH:

        $category_inputs_string = '';
        $languages = tep_get_languages();
        for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
          $category_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_name[' . $languages[$i]['id'] . ']', tep_get_category_name($cInfo->categories_id, $languages[$i]['id']));
          /*** Begin Header Tags SEO ***/
          $category_htc_title_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_title_tag[' . $languages[$i]['id'] . ']', tep_get_category_htc_title($cInfo->categories_id, $languages[$i]['id']));
          $category_htc_title_alt_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_title_tag_alt[' . $languages[$i]['id'] . ']', tep_get_category_htc_title_alt($cInfo->categories_id, $languages[$i]['id']));
          $category_htc_title_url_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_title_tag_url[' . $languages[$i]['id'] . ']', tep_get_category_htc_title_url($cInfo->categories_id, $languages[$i]['id']));
          $category_htc_desc_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_desc_tag[' . $languages[$i]['id'] . ']', tep_get_category_htc_desc($cInfo->categories_id, $languages[$i]['id']));
          $category_htc_keywords_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_keywords_tag[' . $languages[$i]['id'] . ']', tep_get_category_htc_keywords($cInfo->categories_id, $languages[$i]['id']));
          $category_htc_breadcrumb_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('categories_htc_breadcrumb_text[' . $languages[$i]['id'] . ']', tep_get_category_htc_breadcrumb($cInfo->categories_id, $languages[$i]['id']));
          if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_CATEGORIES == 'false')
            $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']));
          else 
          {
            if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'FCKEditor') { 
              $headertags_editor_str = '<input type="hidden" id="categories_htc_description[' . $languages[$i]['id'] . ']" name="categories_htc_description[' . $languages[$i]['id'] .']" value="' . htmlspecialchars(tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id'])) . '" style="display:none" /><input type="hidden" id="categories_htc_description['.$languages[$i]['id'].']___Config" value="" style="display:none" /><iframe id="categories_htc_description['.$languages[$i]['id'].']___Frame" src="fckeditor/editor/fckeditor.html?InstanceName=categories_htc_description['.$languages[$i]['id'].']&amp;Toolbar=Default" width="600" height="300" frameborder="0" scrolling="no"></iframe>';
            } else if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'CKEditor') { 
              $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']), 'id = "categories_htc_description[' . $languages[$i]['id'] . ']" class="ckeditor"');
            } else { 
              $headertags_editor_str = tep_draw_textarea_field('categories_htc_description[' . $languages[$i]['id'] . ']', 'soft', 30, 5, tep_get_category_htc_description($cInfo->categories_id, $languages[$i]['id']));
            }
          } 

          $category_htc_description_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . $headertags_editor_str;
          /*** End Header Tags SEO ***/     

    -------------------------------------------------------------------------------
FIND (around line 1114):

        $contents[] = array('text' => '<br>' . TEXT_EDIT_SORT_ORDER . '<br>' . tep_draw_input_field('sort_order', $cInfo->sort_order, 'size="2"'));

ADD BENEATH:

        /*** Begin Header Tags SEO ***/
        $contents[] = array('text' => '<br />' . 'Header Tags Category Title' . $category_htc_title_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Title Alt' . $category_htc_title_alt_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Title URL' . $category_htc_title_url_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Description' . $category_htc_desc_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Keywords' . $category_htc_keywords_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Category Breadcrumb' . $category_htc_breadcrumb_string);
        $contents[] = array('text' => '<br />' . 'Header Tags Categories Description' . $category_htc_description_string);
        /*** End Header Tags SEO ***/  
                                  
===================================================================
Make the following changes to admin/manufacturers.php

FIND (about line 53):

          $manufacturers_description_array = $_POST['manufacturers_description'];
          $manufacturers_seo_description_array = $_POST['manufacturers_seo_description'];
          $manufacturers_seo_keywords_array = $_POST['manufacturers_seo_keywords'];
          $manufacturers_seo_title_array = $_POST['manufacturers_seo_title'];

REPLACE WITH:

          /*** Begin Header Tags SEO ***/
          $manufacturers_htc_title_array = str_replace('"', '&quot;',$_POST['manufacturers_htc_title_tag']);
          $manufacturers_htc_title_alt_array = str_replace('"', '&quot;',$_POST['manufacturers_htc_title_tag_alt']);
          $manufacturers_htc_title_url_array = $_POST['manufacturers_htc_title_tag_url'];
          $manufacturers_htc_desc_array = str_replace('"', '&quot;',$_POST['manufacturers_htc_desc_tag']);
          $manufacturers_htc_keywords_array = $_POST['manufacturers_htc_keywords_tag'];
          $manufacturers_htc_description_array = $_POST['manufacturers_htc_description'];
          $manufacturers_htc_breadcrumb_array = $_POST['manufacturers_htc_breadcrumb_text'];
          /*** End Header Tags SEO ***/  
          
    -------------------------------------------------------------------------------
FIND (around line 63):

          $sql_data_array['manufacturers_description'] = tep_db_prepare_input($manufacturers_description_array[$language_id]);
          $sql_data_array['manufacturers_seo_description'] = tep_db_prepare_input($manufacturers_seo_description_array[$language_id]);
          $sql_data_array['manufacturers_seo_keywords'] = tep_db_prepare_input($manufacturers_seo_keywords_array[$language_id]);
          $sql_data_array['manufacturers_seo_title'] = tep_db_prepare_input($manufacturers_seo_title_array[$language_id]);

REPLACE WITH:
	  
         /*** Begin Header Tags SEO ***/	  
          $sql_data_array['manufacturers_htc_title_tag'] = (tep_not_null($manufacturers_htc_title_array[$language_id]) ? tep_db_prepare_input(strip_tags($manufacturers_htc_title_array[$language_id])) : strip_tags($manufacturers_name));
          $sql_data_array['manufacturers_htc_title_tag_alt'] = (tep_not_null($manufacturers_htc_title_alt_array[$language_id]) ? tep_db_prepare_input(strip_tags($manufacturers_htc_title_alt_array[$language_id])) : strip_tags($manufacturers_name));
          $sql_data_array['manufacturers_htc_title_tag_url'] = (tep_not_null($manufacturers_htc_title_alt_array[$language_id]) ? tep_db_prepare_input(strip_tags($manufacturers_htc_title_url_array[$language_id])) : strip_tags($manufacturers_name));
          $sql_data_array['manufacturers_htc_desc_tag'] = (tep_not_null($manufacturers_htc_desc_array[$language_id]) ? tep_db_prepare_input($manufacturers_htc_desc_array[$language_id]) : $manufacturers_name);
          $sql_data_array['manufacturers_htc_keywords_tag'] = (tep_not_null($manufacturers_htc_keywords_array[$language_id]) ? tep_db_prepare_input(strip_tags($manufacturers_htc_keywords_array[$language_id])) : strip_tags($manufacturers_name));
          $sql_data_array['manufacturers_htc_description'] = tep_db_prepare_input($manufacturers_htc_description_array[$language_id]);
          $sql_data_array['manufacturers_htc_breadcrumb_text'] = (tep_not_null($manufacturers_htc_breadcrumb_array[$language_id]) ? tep_db_prepare_input(strip_tags($manufacturers_htc_breadcrumb_array[$language_id])) : strip_tags($manufacturers_name));
          /*** End Header Tags SEO ***/    

    -------------------------------------------------------------------------------
FIND (around line 87 and again around line 125):

        if (USE_CACHE == 'true') {
          tep_reset_cache_block('manufacturers');
        }

ADD BENEATH:

        /*** Begin Header Tags SEO ***/
        if (HEADER_TAGS_ENABLE_CACHE != 'None') {
          require_once(DIR_WS_FUNCTIONS . 'header_tags.php');
          ResetCache_HeaderTags('index.php', 'm_' . $manufacturers_id);
        }
        /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 156):

  $manufacturers_query_raw = "select manufacturers_id, manufacturers_name, manufacturers_image, date_added, last_modified from manufacturers order by manufacturers_name";

REPLACE WITH:

  /*** Begin Header Tags SEO ***/
  $manufacturers_query_raw = "select m.manufacturers_id, m.manufacturers_name, m.manufacturers_image, m.date_added, m.last_modified, mi.manufacturers_htc_title_tag, mi.manufacturers_htc_title_tag_alt, mi.manufacturers_htc_title_tag_url from manufacturers m LEFT JOIN manufacturers_info mi on m.manufacturers_id = mi.manufacturers_id where mi.languages_id = '".$languages_id ."' order by m.manufacturers_name";
  /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 213):

      $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_keywords_string = $manufacturer_seo_title_string = '';

      $languages = tep_get_languages();
      for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
        $manufacturer_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']');
        $manufacturer_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
        $manufacturer_seo_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
        $manufacturer_seo_keywords_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_seo_keywords[' . $languages[$i]['id'] . ']', NULL, 'style="width: 300px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"');
        $manufacturer_seo_title_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_seo_title[' . $languages[$i]['id'] . ']', NULL, 'style="width: 300px;"');

REPLACE WITH:

      $manufacturer_inputs_string = '';

      $languages = tep_get_languages();
      for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
        $manufacturer_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']');
	
        /*** Begin Header Tags SEO ***/ 
        $manufacturer_htc_title_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_title_tag[' . $languages[$i]['id'] . ']');
        $manufacturer_htc_title_alt_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_title_tag_alt[' . $languages[$i]['id'] . ']');
        $manufacturer_htc_title_url_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_title_tag_url[' . $languages[$i]['id'] . ']');
        $manufacturer_htc_breadcrumb_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_breadcrumb_text[' . $languages[$i]['id'] . ']');
        $manufacturer_htc_desc_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_desc_tag[' . $languages[$i]['id'] . ']');
        $manufacturer_htc_keywords_string .= '<br>' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_keywords_tag[' . $languages[$i]['id'] . ']');
        
        if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_MANUFACTURERS == 'false') {
            $manufacturer_htc_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10');
        } else {
            $manufacturer_htc_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_ckeditor('manufacturers_description[' . $languages[$i]['id'] . ']', '80', '10');
        }
        /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 235):

      $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string);
      $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string);
      $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string);
      $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string);

REPLACE WITH:

      /*** Begin Header Tags SEO ***/
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Title' . $manufacturer_htc_title_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Title Alt' . $manufacturer_htc_title_alt_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Title URL' . $manufacturer_htc_title_url_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Breadcrumb' . $manufacturer_htc_breadcrumb_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Description' . $manufacturer_htc_desc_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Keywords' . $manufacturer_htc_keywords_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Description' . $manufacturer_htc_description_string);
      /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 254):

      $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_keywords_string = $manufacturer_seo_title_string = '';
      $languages = tep_get_languages();
      for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
        $manufacturer_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_url($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_seo_title_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_seo_title[' . $languages[$i]['id'] . ']', tep_get_manufacturer_seo_title($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_description($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_seo_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_seo_description($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_seo_keywords_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_seo_keywords[' . $languages[$i]['id'] . ']', tep_get_manufacturer_seo_keywords($mInfo->manufacturers_id, $languages[$i]['id']), 'style="width: 300px;" placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"');
      }

      $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_URL . $manufacturer_inputs_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string);

REPLACE WITH:

      $manufacturer_inputs_string = '';
      $languages = tep_get_languages();
      for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
        $manufacturer_inputs_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_url($mInfo->manufacturers_id, $languages[$i]['id']));
	
        /*** Begin Header Tags SEO ***/
        $manufacturer_htc_title_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_title_tag[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_htc_title_alt_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_title_tag_alt[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title_alt($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_htc_title_url_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_title_tag_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title_url($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_htc_breadcrumb_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_breadcrumb_text[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_breadcrumb($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_htc_desc_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_desc_tag[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_desc($mInfo->manufacturers_id, $languages[$i]['id']));
        $manufacturer_htc_keywords_string .= '<br />' . tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('manufacturers_htc_keywords_tag[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_keywords($mInfo->manufacturers_id, $languages[$i]['id']));

        if (HEADER_TAGS_ENABLE_HTML_EDITOR == 'No Editor' || HEADER_TAGS_ENABLE_EDITOR_MANUFACTURERS == 'false') {        
            $manufacturer_htc_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_htc_description($mInfo->manufacturers_id, $languages[$i]['id']));
        } else {    
            $manufacturer_htc_description_string .= '<br />' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '&nbsp;' . tep_draw_textarea_ckeditor('manufacturers_description[' . $languages[$i]['id'] . ']', '80', '10', tep_get_manufacturer_htc_description($mInfo->manufacturers_id, $languages[$i]['id']));
        }
        /*** End Header Tags SEO ***/

    -------------------------------------------------------------------------------
FIND (around line 276):

      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string);
      $contents[] = array('text' => '<br />' . TEXT_EDIT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string);

REPLACE WITH:

      /*** Begin Header Tags SEO ***/
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Title' . $manufacturer_htc_title_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Title Alt' . $manufacturer_htc_title_alt_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Title URL' . $manufacturer_htc_title_url_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Breadcrumb' . $manufacturer_htc_breadcrumb_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Description' . $manufacturer_htc_desc_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Keywords' . $manufacturer_htc_keywords_string);
      $contents[] = array('text' => '<br />' . 'Header Tags Manufacturer Description' . $manufacturer_htc_description_string);
      /*** End Header Tags SEO ***/

===================================================================
That's all ;-)

===================================================================

TROUBLESHOOTING:

1 - The tools in the admin section have to be able to write to the
include/header_tags.php file. In order to do that, the permissions
for that file must be set correctly. If Header Tags thinks the permissions
are not set correctly, it will display a warning message with what it thinks
are the proper permissions. You will need to change those permissions using
an ftp program (right click and choose chmod) or by using your hosts control
panel. The permissions should, typically, be set to 755 (777 for some
servers). If you do not know what this is or how to do it, ask your host to
help you.

2 - Some hosts restrict a function used in
catalog/admin/includes/functions/header_tags.php. If you get an error regarding
the chmod() php function in this file, like:

Warning: chmod(): Operation not permitted in ...
Cannot change the mode of file (../includes/header_tags.php)

and you have addressed the file permissions settings as stated above, you may
have to comment out the function. To do that,
 OPEN: admin/includes/functions/header_tags.php

  Around line 201 you find this code:

  if (!is_writable($filename))
  {
     if (!chmod($filename, 0666)) {
        echo "Cannot change the mode of file ($filename)";
        exit;
     }
  }

  Replace that with the following code:

  if (!is_writable($filename))
  {
    echo "The file isn't writable";
	exit;
     /* if (!chmod($filename, 0666)) {
        echo "Cannot change the mode of file ($filename)";
        exit;
     } */
  }

****************************** PLEASE NOTE  ************************************
3 - In general, the vast majority of problems with the installation of Header Tags
SEO is due to mistakes in the admin/categories.php file. This is not surprising due
to the large number of changes in that file. If, after installing Header Tags SEO,
you get any error related to the categories file or some function of that file
no longer works (like editing a product), it is due to an error in the changes made
to that file. You can tell if the error is related to that file by looking at the
url in admin. If it has categories.php in it, then that is the problem. To fix it,
download the free WinMerge program and use it to compare your categories file with
the one included in this archive. Be sure to use the categories.php file from the
directory that matches your shop. If the problem can't be found, replace your file 
with the included one to verify the problem exists in that file.
*************************** PLEASE NOTE THE ABOVE ONE ***************************

4) If you are still having problems, go to admin->Header Tags SEO->Test and click
on the button on that page. That will display many failures commonly found in the
installation. No errors should be found, except, possibly, the permissions error
(see above regarding permissions) or if you are running a non-standard oscommerce
shop. If you get a failure and cannot figure it out, post that error in the support
thread for the contribution. Questions about failures without posting the results
of the test will be answered by telling you to run the test, so please do that first.

************************************ SUPPORT *************************************
If you have any problems, see the troubleshooting sections in either of the Install
files or the test routine in admin->Header Tags SEO before asking in the support
thread at

http://forums.oscommerce.com/topic/298099-header-tags-seo

************************** IMPORTANT *********************************
If you post a problem in the support thread, be sure to mention the version
of the shop you are using. Otherwise, you post may not get answered or it 
may be delayed while you find the needed version.
************************** IMPORTANT *********************************

Support questions will not be answered if you PM me or contact me through my web site
so please do not do so.
