Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Dnj1964

♥Ambassador
  • Posts

    213
  • Joined

  • Last visited

Posts posted by Dnj1964

  1. This is posted in the wrong support....

    Should be in Header Tags SEO 3

     

    Using Phoenix 1.0.7.9

    Was hoping it may work, but applying the changes - code not found

     

    The /catalog/admin/maufacturers.php

    <?php
    /*
      $Id$
    
      osCommerce, Open Source E-Commerce Solutions
      http://www.oscommerce.com
    
      Copyright (c) 2020 osCommerce
    
      Released under the GNU General Public License
    */
    
      require('includes/application_top.php');
    
      $action = $_GET['action'] ?? '';
    
      $OSCOM_Hooks->call('manufacturers', 'preAction');
    
      if (tep_not_null($action)) {
        switch ($action) {
          case 'insert':
          case 'save':
            if (isset($_GET['mID'])) $manufacturers_id = tep_db_prepare_input($_GET['mID']);
            $manufacturers_name = tep_db_prepare_input($_POST['manufacturers_name']);
    
            $sql_data_array = ['manufacturers_name' => $manufacturers_name];
    
            if ($action == 'insert') {
              $insert_sql_data = ['date_added' => 'now()'];
    
              $sql_data_array = array_merge($sql_data_array, $insert_sql_data);
    
              tep_db_perform('manufacturers', $sql_data_array);
              $manufacturers_id = tep_db_insert_id();
            } elseif ($action == 'save') {
              $update_sql_data = ['last_modified' => 'now()'];
    
              $sql_data_array = array_merge($sql_data_array, $update_sql_data);
    
              tep_db_perform('manufacturers', $sql_data_array, 'update', "manufacturers_id = '" . (int)$manufacturers_id . "'");
            }
    
            $manufacturers_image = new upload('manufacturers_image');
            $manufacturers_image->set_destination(DIR_FS_CATALOG . 'images/');
    
            if ($manufacturers_image->parse() && $manufacturers_image->save()) {
              tep_db_query("update manufacturers set manufacturers_image = '" . tep_db_input($manufacturers_image->filename) . "' where manufacturers_id = '" . (int)$manufacturers_id . "'");
            }
    
            $languages = tep_get_languages();
            for ($i=0, $n=count($languages); $i<$n; $i++) {
              $manufacturers_url_array = $_POST['manufacturers_url'];
              /*** Begin Header Tags SEO ***/
              $manufacturers_seo_keywords_array = $_POST['manufacturers_seo_keywords'];         
              $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 ***/ 
              $language_id = $languages[$i]['id'];
    
              $sql_data_array = ['manufacturers_url' => tep_db_prepare_input($manufacturers_url_array[$language_id])];
             /*** Begin Header Tags SEO ***/	  
              $sql_data_array['manufacturers_seo_keywords'] = tep_db_prepare_input($manufacturers_seo_keywords_array[$language_id]);
              $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 ***/  
    
              if ($action == 'insert') {
                $insert_sql_data = ['manufacturers_id' => $manufacturers_id, 'languages_id' => $language_id];
    
                $sql_data_array = array_merge($sql_data_array, $insert_sql_data);
    
                tep_db_perform('manufacturers_info', $sql_data_array);
              } elseif ($action == 'save') {
                tep_db_perform('manufacturers_info', $sql_data_array, 'update', "manufacturers_id = '" . (int)$manufacturers_id . "' and languages_id = '" . (int)$language_id . "'");
              }
            }
    
            $OSCOM_Hooks->call('manufacturers', 'insertSaveAction');
    
            tep_redirect(tep_href_link('manufacturers.php', (isset($_GET['page']) ? 'page=' . (int)$_GET['page'] . '&' : '') . 'mID=' . $manufacturers_id));
            break;
          case 'deleteconfirm':
            $manufacturers_id = tep_db_prepare_input($_GET['mID']);
    
            if (isset($_POST['delete_image']) && ($_POST['delete_image'] == 'on')) {
              $manufacturer_query = tep_db_query("select manufacturers_image from manufacturers where manufacturers_id = '" . (int)$manufacturers_id . "'");
              $manufacturer = tep_db_fetch_array($manufacturer_query);
    
              $image_location = DIR_FS_DOCUMENT_ROOT . DIR_WS_CATALOG . 'images/' . $manufacturer['manufacturers_image'];
    
              if (file_exists($image_location)) @unlink($image_location);
            }
    
            tep_db_query("delete from manufacturers where manufacturers_id = '" . (int)$manufacturers_id . "'");
            tep_db_query("delete from manufacturers_info where manufacturers_id = '" . (int)$manufacturers_id . "'");
    
            if (isset($_POST['delete_products']) && ($_POST['delete_products'] == 'on')) {
              $products_query = tep_db_query("select products_id from products where manufacturers_id = '" . (int)$manufacturers_id . "'");
              while ($products = tep_db_fetch_array($products_query)) {
                tep_remove_product($products['products_id']);
              }
            } else {
              tep_db_query("update products set manufacturers_id = '' where manufacturers_id = '" . (int)$manufacturers_id . "'");
            }
    
            $OSCOM_Hooks->call('manufacturers', 'deleteConfirmAction');
    
            tep_redirect(tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page']));
            break;
        }
      }
    
      $OSCOM_Hooks->call('manufacturers', 'postAction');
    
      require('includes/template_top.php');
    ?>
    
      <div class="row">
        <div class="col">
          <h1 class="display-4 mb-2"><?php echo HEADING_TITLE; ?></h1>
        </div>
        <div class="col text-right align-self-center">
          <?php
          if (empty($action)) {
            echo tep_draw_bootstrap_button(BUTTON_INSERT_NEW_MANUFACTURER, 'fas fa-id-card', tep_href_link('manufacturers.php', 'action=new'), null, null, 'btn-danger');
          }
          else {
            echo tep_draw_bootstrap_button(IMAGE_BACK, 'fas fa-angle-left', tep_href_link('manufacturers.php'), null, null, 'btn-light');
          }
          ?>
        </div>
      </div>
    
      <div class="row no-gutters">
        <div class="col-12 col-sm-8">
          <div class="table-responsive">
            <table class="table table-striped table-hover">
              <thead class="thead-dark">
                <tr>
                  <th><?php echo TABLE_HEADING_MANUFACTURERS; ?></th>
                  <th class="text-right"><?php echo TABLE_HEADING_ACTION; ?></th>
                </tr>
              </thead>
              <tbody>
                <?php
                $manufacturers_query_raw = "select * from manufacturers order by manufacturers_name";
                $manufacturers_split = new splitPageResults($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, $manufacturers_query_raw, $manufacturers_query_numrows);
                $manufacturers_query = tep_db_query($manufacturers_query_raw);
                while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {
                  if ((!isset($_GET['mID']) || (isset($_GET['mID']) && ($_GET['mID'] == $manufacturers['manufacturers_id']))) && !isset($mInfo) && (substr($action, 0, 3) != 'new')) {
                    $manufacturer_products_query = tep_db_query("select count(*) as products_count from products where manufacturers_id = '" . (int)$manufacturers['manufacturers_id'] . "'");
                    $manufacturer_products = tep_db_fetch_array($manufacturer_products_query);
    
                    $mInfo_array = array_merge($manufacturers, $manufacturer_products);
                    $mInfo = new objectInfo($mInfo_array);
                  }
    
                  if (isset($mInfo) && is_object($mInfo) && ($manufacturers['manufacturers_id'] == $mInfo->manufacturers_id)) {
                    echo '<tr class="table-active" onclick="document.location.href=\'' . tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . (int)$manufacturers['manufacturers_id'] . '&action=edit') . '\'">';
                  } else {
                    echo '<tr onclick="document.location.href=\'' . tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . (int)$manufacturers['manufacturers_id']) . '\'">';
                  }
                  ?>
                    <td><?php echo $manufacturers['manufacturers_name']; ?></td>
                    <td class="text-right"><?php if (isset($mInfo) && is_object($mInfo) && ($manufacturers['manufacturers_id'] == $mInfo->manufacturers_id)) { echo '<i class="fas fa-chevron-circle-right text-info"></i>'; } else { echo '<a href="' . tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $manufacturers['manufacturers_id']) . '"><i class="fas fa-info-circle text-muted"></i></a>'; } ?></td>
                  </tr>
    <?php
      }
    ?>
              </tbody>
            </table>
          </div>
    
          <div class="row my-1">
            <div class="col"><?php echo $manufacturers_split->display_count($manufacturers_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $_GET['page'], TEXT_DISPLAY_NUMBER_OF_MANUFACTURERS); ?></div>
            <div class="col text-right mr-2"><?php echo $manufacturers_split->display_links($manufacturers_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $_GET['page']); ?></div>
          </div>
        </div>
    
    <?php
      $heading = [];
      $contents = [];
    
      switch ($action) {
        case 'new':
          $heading[] = ['text' => TEXT_HEADING_NEW_MANUFACTURER];
    
          $contents = ['form' => tep_draw_form('manufacturers', 'manufacturers.php', 'action=insert', 'post', 'enctype="multipart/form-data"')];
          $contents[] = ['text' => TEXT_NEW_INTRO];
          $contents[] = ['text' => TEXT_MANUFACTURERS_NAME . '<br>' . tep_draw_input_field('manufacturers_name')];
          $contents[] = ['text' => TEXT_MANUFACTURERS_IMAGE . '<br><div class="custom-file mb-2">' . tep_draw_input_field('manufacturers_image', '', 'id="inputManufacturersImage"', 'file', null, 'class="form-control-input"') . '<label class="custom-file-label" for="inputManufacturersImage">' . TEXT_MANUFACTURERS_IMAGE_LABEL . '</label></div>'];
    
          $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_title_string = '';
    
          $languages = tep_get_languages();
          for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
            $manufacturer_inputs_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']') . '</div>';
            $manufacturer_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10') . '</div>';
            $manufacturer_seo_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10') . '</div>';
            $manufacturer_seo_title_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_seo_title[' . $languages[$i]['id'] . ']') . '</div>';
          }
    
          $contents[] = ['text' => TEXT_MANUFACTURERS_URL . $manufacturer_inputs_string];
          $contents[] = ['text' => TEXT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string];
          $contents[] = ['text' => TEXT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string];
          $contents[] = ['text' => TEXT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string];
          $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_SAVE, 'fas fa-save', null, 'primary', null, 'btn-success mr-2') . tep_draw_bootstrap_button(IMAGE_CANCEL, 'fas fa-times', tep_href_link('manufacturers.php'), null, null, 'btn-light')];
          break;
        case 'edit':
          $heading[] = ['text' => TEXT_HEADING_EDIT_MANUFACTURER . ' <small>' . TEXT_EDIT_INTRO . '</small>'];
    
          $contents = ['form' => tep_draw_form('manufacturers', 'manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=save', 'post', 'enctype="multipart/form-data"')];
          $contents[] = ['text' => TEXT_EDIT_INTRO];
          $contents[] = ['text' => TEXT_MANUFACTURERS_NAME . '<br>' . tep_draw_input_field('manufacturers_name', $mInfo->manufacturers_name)];
          $contents[] = ['text' => TEXT_MANUFACTURERS_IMAGE . '<br><div class="custom-file mb-2">' . tep_draw_input_field('manufacturers_image', '', 'id="inputManufacturersImage"', 'file', null, 'class="form-control-input"') . '<label class="custom-file-label" for="inputManufacturersImage">' . $mInfo->manufacturers_image . '</label></div>'];
    
          $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_title_string = '';
          $languages = tep_get_languages();
          for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
    
            $manufacturer_inputs_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_url($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_seo_title_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_seo_title[' . $languages[$i]['id'] . ']', tep_get_manufacturer_seo_title($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_description($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_seo_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_seo_description($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
          }
    
          $contents[] = ['text' => TEXT_MANUFACTURERS_URL . $manufacturer_inputs_string];
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string];
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string];
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string];
          $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_SAVE, 'fas fa-save', null, 'primary', null, 'btn-success mr-2') . tep_draw_bootstrap_button(IMAGE_CANCEL, 'fas fa-times', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . (int)$mInfo->manufacturers_id), null, null, 'btn-light')];
          break;
        case 'delete':
          $heading[] = ['text' =>  TEXT_HEADING_DELETE_MANUFACTURER];
    
          $contents = ['form' => tep_draw_form('manufacturers', 'manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=deleteconfirm')];
          $contents[] = ['text' => TEXT_DELETE_INTRO];
          $contents[] = ['text' => '<strong>' . $mInfo->manufacturers_name . '</strong>'];
          $contents[] = ['text' => '<div class="custom-control custom-switch">' . tep_draw_selection_field('delete_image', 'checkbox', 'on', null, 'class="custom-control-input" id="mDeleteImg"') . '<label for="mDeleteImg" class="custom-control-label text-muted"><small>' . TEXT_DELETE_IMAGE . '</small></label></div>'];
    
          if ($mInfo->products_count > 0) {
            $contents[] = ['text' => '<div class="custom-control custom-switch">' . tep_draw_selection_field('delete_products', 'checkbox', 'on', null, 'class="custom-control-input" id="mDeleteProducts"') . '<label for="mDeleteProducts" class="custom-control-label text-muted"><small>' . TEXT_DELETE_PRODUCTS . '</small></label></div>'];
            $contents[] = ['text' => sprintf(TEXT_DELETE_WARNING_PRODUCTS, $mInfo->products_count)];
          }
    
          $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_DELETE, 'fas fa-trash', null, 'primary', null, 'btn-danger mr-2') . tep_draw_bootstrap_button(IMAGE_CANCEL, 'fas fa-times', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id), null, null, 'btn-light')];
          break;
        default:
          if (isset($mInfo) && is_object($mInfo)) {
            $heading[] = ['text' => $mInfo->manufacturers_name];
    
            $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_EDIT, 'fas fa-cogs', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=edit'), null, null, 'btn-warning mr-2') . tep_draw_bootstrap_button(IMAGE_DELETE, 'fas fa-trash', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=delete'), null, null, 'btn-danger')];
            $contents[] = ['text' => sprintf(TEXT_DATE_ADDED, tep_date_short($mInfo->date_added))];
            if (tep_not_null($mInfo->last_modified)) $contents[] = ['text' => sprintf(TEXT_LAST_MODIFIED, tep_date_short($mInfo->last_modified))];
            $contents[] = ['text' => tep_info_image($mInfo->manufacturers_image, $mInfo->manufacturers_name)];
            $contents[] = ['text' => sprintf(TEXT_PRODUCTS, $mInfo->products_count)];
          }
          break;
      }
    
      if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
        echo '<div class="col-12 col-sm-4">';
          $box = new box;
          echo $box->infoBox($heading, $contents);
        echo '</div>';
      }
    ?>
    
      </div>
    
      <script>$(document).on('change', '#inputManufacturersImage', function (event) { $(this).next('.custom-file-label').html(event.target.files[0].name); });</script>
    
    <?php
      require('includes/template_bottom.php');
      require('includes/application_bottom.php');
    ?>

     

     

     

    Instructions for changes - this and all code beyond has been changed in the file

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

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

     

     

     

    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_title_array = $_POST['manufacturers_seo_title'];
    
    REPLACE WITH:
    
              /*** Begin Header Tags SEO ***/
              $manufacturers_seo_keywords_array = $_POST['manufacturers_seo_keywords'];         
              $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_title'] = tep_db_prepare_input($manufacturers_seo_title_array[$language_id]);
    
    REPLACE WITH:
    	  
             /*** Begin Header Tags SEO ***/	  
              $sql_data_array['manufacturers_seo_keywords'] = tep_db_prepare_input($manufacturers_seo_keywords_array[$language_id]);
              $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_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_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_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);
    
    REPLACE WITH:
    
          /*** Begin Header Tags SEO ***/
          $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string);
          $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_title_string = '';
    
    REPLACE WITH:
    
          /*** Begin Header Tags SEO ***/ 
          $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_keywords_string = $manufacturer_seo_title_string = '';
          /*** End Header Tags SEO ***/ 
          
        -------------------------------------------------------------------------------
    FIND (around line 254):
          
            $manufacturer_seo_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_seo_description($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
    
    ADD BENEATH:      
          
            /*** Begin Header Tags SEO ***/ 
            $manufacturer_seo_keywords_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_seo_keywords[' . $languages[$i]['id'] . ']', tep_get_manufacturer_seo_keywords($mInfo->manufacturers_id, $languages[$i]['id']), 'placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"') . '</div>';
            $manufacturer_htc_title_alt_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_htc_title_tag_alt[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title_alt($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_htc_title_url_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_htc_title_tag_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title_url($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_htc_breadcrumb_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_htc_breadcrumb_text[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_breadcrumb($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            /*** End Header Tags SEO ***/
    
        -------------------------------------------------------------------------------
    FIND (around line 276):
    
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string];
    
    ADD BENEATH:
    
          /*** Begin Header Tags SEO ***/
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string];
          $contents[] = ['text' => TEXT_HEADERTAGS_TITLE_ALT . $manufacturer_htc_title_alt_string];
          $contents[] = ['text' => TEXT_HEADERTAGS_TITLE_URL . $manufacturer_htc_title_url_string];
          $contents[] = ['text' => TEXT_HEADERTAGS_BREADCRUMB . $manufacturer_htc_breadcrumb_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;
         } */
      }
  2. Using Phoenix 1.0.7.9

    Was hoping it may work, but applying the changes - code not found

     

    The /catalog/admin/maufacturers.php

    <?php
    /*
      $Id$
    
      osCommerce, Open Source E-Commerce Solutions
      http://www.oscommerce.com
    
      Copyright (c) 2020 osCommerce
    
      Released under the GNU General Public License
    */
    
      require('includes/application_top.php');
    
      $action = $_GET['action'] ?? '';
    
      $OSCOM_Hooks->call('manufacturers', 'preAction');
    
      if (tep_not_null($action)) {
        switch ($action) {
          case 'insert':
          case 'save':
            if (isset($_GET['mID'])) $manufacturers_id = tep_db_prepare_input($_GET['mID']);
            $manufacturers_name = tep_db_prepare_input($_POST['manufacturers_name']);
    
            $sql_data_array = ['manufacturers_name' => $manufacturers_name];
    
            if ($action == 'insert') {
              $insert_sql_data = ['date_added' => 'now()'];
    
              $sql_data_array = array_merge($sql_data_array, $insert_sql_data);
    
              tep_db_perform('manufacturers', $sql_data_array);
              $manufacturers_id = tep_db_insert_id();
            } elseif ($action == 'save') {
              $update_sql_data = ['last_modified' => 'now()'];
    
              $sql_data_array = array_merge($sql_data_array, $update_sql_data);
    
              tep_db_perform('manufacturers', $sql_data_array, 'update', "manufacturers_id = '" . (int)$manufacturers_id . "'");
            }
    
            $manufacturers_image = new upload('manufacturers_image');
            $manufacturers_image->set_destination(DIR_FS_CATALOG . 'images/');
    
            if ($manufacturers_image->parse() && $manufacturers_image->save()) {
              tep_db_query("update manufacturers set manufacturers_image = '" . tep_db_input($manufacturers_image->filename) . "' where manufacturers_id = '" . (int)$manufacturers_id . "'");
            }
    
            $languages = tep_get_languages();
            for ($i=0, $n=count($languages); $i<$n; $i++) {
              $manufacturers_url_array = $_POST['manufacturers_url'];
              /*** Begin Header Tags SEO ***/
              $manufacturers_seo_keywords_array = $_POST['manufacturers_seo_keywords'];         
              $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 ***/ 
              $language_id = $languages[$i]['id'];
    
              $sql_data_array = ['manufacturers_url' => tep_db_prepare_input($manufacturers_url_array[$language_id])];
             /*** Begin Header Tags SEO ***/	  
              $sql_data_array['manufacturers_seo_keywords'] = tep_db_prepare_input($manufacturers_seo_keywords_array[$language_id]);
              $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 ***/  
    
              if ($action == 'insert') {
                $insert_sql_data = ['manufacturers_id' => $manufacturers_id, 'languages_id' => $language_id];
    
                $sql_data_array = array_merge($sql_data_array, $insert_sql_data);
    
                tep_db_perform('manufacturers_info', $sql_data_array);
              } elseif ($action == 'save') {
                tep_db_perform('manufacturers_info', $sql_data_array, 'update', "manufacturers_id = '" . (int)$manufacturers_id . "' and languages_id = '" . (int)$language_id . "'");
              }
            }
    
            $OSCOM_Hooks->call('manufacturers', 'insertSaveAction');
    
            tep_redirect(tep_href_link('manufacturers.php', (isset($_GET['page']) ? 'page=' . (int)$_GET['page'] . '&' : '') . 'mID=' . $manufacturers_id));
            break;
          case 'deleteconfirm':
            $manufacturers_id = tep_db_prepare_input($_GET['mID']);
    
            if (isset($_POST['delete_image']) && ($_POST['delete_image'] == 'on')) {
              $manufacturer_query = tep_db_query("select manufacturers_image from manufacturers where manufacturers_id = '" . (int)$manufacturers_id . "'");
              $manufacturer = tep_db_fetch_array($manufacturer_query);
    
              $image_location = DIR_FS_DOCUMENT_ROOT . DIR_WS_CATALOG . 'images/' . $manufacturer['manufacturers_image'];
    
              if (file_exists($image_location)) @unlink($image_location);
            }
    
            tep_db_query("delete from manufacturers where manufacturers_id = '" . (int)$manufacturers_id . "'");
            tep_db_query("delete from manufacturers_info where manufacturers_id = '" . (int)$manufacturers_id . "'");
    
            if (isset($_POST['delete_products']) && ($_POST['delete_products'] == 'on')) {
              $products_query = tep_db_query("select products_id from products where manufacturers_id = '" . (int)$manufacturers_id . "'");
              while ($products = tep_db_fetch_array($products_query)) {
                tep_remove_product($products['products_id']);
              }
            } else {
              tep_db_query("update products set manufacturers_id = '' where manufacturers_id = '" . (int)$manufacturers_id . "'");
            }
    
            $OSCOM_Hooks->call('manufacturers', 'deleteConfirmAction');
    
            tep_redirect(tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page']));
            break;
        }
      }
    
      $OSCOM_Hooks->call('manufacturers', 'postAction');
    
      require('includes/template_top.php');
    ?>
    
      <div class="row">
        <div class="col">
          <h1 class="display-4 mb-2"><?php echo HEADING_TITLE; ?></h1>
        </div>
        <div class="col text-right align-self-center">
          <?php
          if (empty($action)) {
            echo tep_draw_bootstrap_button(BUTTON_INSERT_NEW_MANUFACTURER, 'fas fa-id-card', tep_href_link('manufacturers.php', 'action=new'), null, null, 'btn-danger');
          }
          else {
            echo tep_draw_bootstrap_button(IMAGE_BACK, 'fas fa-angle-left', tep_href_link('manufacturers.php'), null, null, 'btn-light');
          }
          ?>
        </div>
      </div>
    
      <div class="row no-gutters">
        <div class="col-12 col-sm-8">
          <div class="table-responsive">
            <table class="table table-striped table-hover">
              <thead class="thead-dark">
                <tr>
                  <th><?php echo TABLE_HEADING_MANUFACTURERS; ?></th>
                  <th class="text-right"><?php echo TABLE_HEADING_ACTION; ?></th>
                </tr>
              </thead>
              <tbody>
                <?php
                $manufacturers_query_raw = "select * from manufacturers order by manufacturers_name";
                $manufacturers_split = new splitPageResults($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, $manufacturers_query_raw, $manufacturers_query_numrows);
                $manufacturers_query = tep_db_query($manufacturers_query_raw);
                while ($manufacturers = tep_db_fetch_array($manufacturers_query)) {
                  if ((!isset($_GET['mID']) || (isset($_GET['mID']) && ($_GET['mID'] == $manufacturers['manufacturers_id']))) && !isset($mInfo) && (substr($action, 0, 3) != 'new')) {
                    $manufacturer_products_query = tep_db_query("select count(*) as products_count from products where manufacturers_id = '" . (int)$manufacturers['manufacturers_id'] . "'");
                    $manufacturer_products = tep_db_fetch_array($manufacturer_products_query);
    
                    $mInfo_array = array_merge($manufacturers, $manufacturer_products);
                    $mInfo = new objectInfo($mInfo_array);
                  }
    
                  if (isset($mInfo) && is_object($mInfo) && ($manufacturers['manufacturers_id'] == $mInfo->manufacturers_id)) {
                    echo '<tr class="table-active" onclick="document.location.href=\'' . tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . (int)$manufacturers['manufacturers_id'] . '&action=edit') . '\'">';
                  } else {
                    echo '<tr onclick="document.location.href=\'' . tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . (int)$manufacturers['manufacturers_id']) . '\'">';
                  }
                  ?>
                    <td><?php echo $manufacturers['manufacturers_name']; ?></td>
                    <td class="text-right"><?php if (isset($mInfo) && is_object($mInfo) && ($manufacturers['manufacturers_id'] == $mInfo->manufacturers_id)) { echo '<i class="fas fa-chevron-circle-right text-info"></i>'; } else { echo '<a href="' . tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $manufacturers['manufacturers_id']) . '"><i class="fas fa-info-circle text-muted"></i></a>'; } ?></td>
                  </tr>
    <?php
      }
    ?>
              </tbody>
            </table>
          </div>
    
          <div class="row my-1">
            <div class="col"><?php echo $manufacturers_split->display_count($manufacturers_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, $_GET['page'], TEXT_DISPLAY_NUMBER_OF_MANUFACTURERS); ?></div>
            <div class="col text-right mr-2"><?php echo $manufacturers_split->display_links($manufacturers_query_numrows, MAX_DISPLAY_SEARCH_RESULTS, MAX_DISPLAY_PAGE_LINKS, $_GET['page']); ?></div>
          </div>
        </div>
    
    <?php
      $heading = [];
      $contents = [];
    
      switch ($action) {
        case 'new':
          $heading[] = ['text' => TEXT_HEADING_NEW_MANUFACTURER];
    
          $contents = ['form' => tep_draw_form('manufacturers', 'manufacturers.php', 'action=insert', 'post', 'enctype="multipart/form-data"')];
          $contents[] = ['text' => TEXT_NEW_INTRO];
          $contents[] = ['text' => TEXT_MANUFACTURERS_NAME . '<br>' . tep_draw_input_field('manufacturers_name')];
          $contents[] = ['text' => TEXT_MANUFACTURERS_IMAGE . '<br><div class="custom-file mb-2">' . tep_draw_input_field('manufacturers_image', '', 'id="inputManufacturersImage"', 'file', null, 'class="form-control-input"') . '<label class="custom-file-label" for="inputManufacturersImage">' . TEXT_MANUFACTURERS_IMAGE_LABEL . '</label></div>'];
    
          $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_title_string = '';
    
          $languages = tep_get_languages();
          for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
            $manufacturer_inputs_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']') . '</div>';
            $manufacturer_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10') . '</div>';
            $manufacturer_seo_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10') . '</div>';
            $manufacturer_seo_title_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_seo_title[' . $languages[$i]['id'] . ']') . '</div>';
          }
    
          $contents[] = ['text' => TEXT_MANUFACTURERS_URL . $manufacturer_inputs_string];
          $contents[] = ['text' => TEXT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string];
          $contents[] = ['text' => TEXT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string];
          $contents[] = ['text' => TEXT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string];
          $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_SAVE, 'fas fa-save', null, 'primary', null, 'btn-success mr-2') . tep_draw_bootstrap_button(IMAGE_CANCEL, 'fas fa-times', tep_href_link('manufacturers.php'), null, null, 'btn-light')];
          break;
        case 'edit':
          $heading[] = ['text' => TEXT_HEADING_EDIT_MANUFACTURER . ' <small>' . TEXT_EDIT_INTRO . '</small>'];
    
          $contents = ['form' => tep_draw_form('manufacturers', 'manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=save', 'post', 'enctype="multipart/form-data"')];
          $contents[] = ['text' => TEXT_EDIT_INTRO];
          $contents[] = ['text' => TEXT_MANUFACTURERS_NAME . '<br>' . tep_draw_input_field('manufacturers_name', $mInfo->manufacturers_name)];
          $contents[] = ['text' => TEXT_MANUFACTURERS_IMAGE . '<br><div class="custom-file mb-2">' . tep_draw_input_field('manufacturers_image', '', 'id="inputManufacturersImage"', 'file', null, 'class="form-control-input"') . '<label class="custom-file-label" for="inputManufacturersImage">' . $mInfo->manufacturers_image . '</label></div>'];
    
          $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_title_string = '';
          $languages = tep_get_languages();
          for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
    
            $manufacturer_inputs_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_url($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_seo_title_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_seo_title[' . $languages[$i]['id'] . ']', tep_get_manufacturer_seo_title($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_description($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_seo_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_seo_description($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
          }
    
          $contents[] = ['text' => TEXT_MANUFACTURERS_URL . $manufacturer_inputs_string];
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_TITLE . $manufacturer_seo_title_string];
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_DESCRIPTION . $manufacturer_description_string];
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string];
          $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_SAVE, 'fas fa-save', null, 'primary', null, 'btn-success mr-2') . tep_draw_bootstrap_button(IMAGE_CANCEL, 'fas fa-times', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . (int)$mInfo->manufacturers_id), null, null, 'btn-light')];
          break;
        case 'delete':
          $heading[] = ['text' =>  TEXT_HEADING_DELETE_MANUFACTURER];
    
          $contents = ['form' => tep_draw_form('manufacturers', 'manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=deleteconfirm')];
          $contents[] = ['text' => TEXT_DELETE_INTRO];
          $contents[] = ['text' => '<strong>' . $mInfo->manufacturers_name . '</strong>'];
          $contents[] = ['text' => '<div class="custom-control custom-switch">' . tep_draw_selection_field('delete_image', 'checkbox', 'on', null, 'class="custom-control-input" id="mDeleteImg"') . '<label for="mDeleteImg" class="custom-control-label text-muted"><small>' . TEXT_DELETE_IMAGE . '</small></label></div>'];
    
          if ($mInfo->products_count > 0) {
            $contents[] = ['text' => '<div class="custom-control custom-switch">' . tep_draw_selection_field('delete_products', 'checkbox', 'on', null, 'class="custom-control-input" id="mDeleteProducts"') . '<label for="mDeleteProducts" class="custom-control-label text-muted"><small>' . TEXT_DELETE_PRODUCTS . '</small></label></div>'];
            $contents[] = ['text' => sprintf(TEXT_DELETE_WARNING_PRODUCTS, $mInfo->products_count)];
          }
    
          $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_DELETE, 'fas fa-trash', null, 'primary', null, 'btn-danger mr-2') . tep_draw_bootstrap_button(IMAGE_CANCEL, 'fas fa-times', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id), null, null, 'btn-light')];
          break;
        default:
          if (isset($mInfo) && is_object($mInfo)) {
            $heading[] = ['text' => $mInfo->manufacturers_name];
    
            $contents[] = ['class' => 'text-center', 'text' => tep_draw_bootstrap_button(IMAGE_EDIT, 'fas fa-cogs', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=edit'), null, null, 'btn-warning mr-2') . tep_draw_bootstrap_button(IMAGE_DELETE, 'fas fa-trash', tep_href_link('manufacturers.php', 'page=' . (int)$_GET['page'] . '&mID=' . $mInfo->manufacturers_id . '&action=delete'), null, null, 'btn-danger')];
            $contents[] = ['text' => sprintf(TEXT_DATE_ADDED, tep_date_short($mInfo->date_added))];
            if (tep_not_null($mInfo->last_modified)) $contents[] = ['text' => sprintf(TEXT_LAST_MODIFIED, tep_date_short($mInfo->last_modified))];
            $contents[] = ['text' => tep_info_image($mInfo->manufacturers_image, $mInfo->manufacturers_name)];
            $contents[] = ['text' => sprintf(TEXT_PRODUCTS, $mInfo->products_count)];
          }
          break;
      }
    
      if ( (tep_not_null($heading)) && (tep_not_null($contents)) ) {
        echo '<div class="col-12 col-sm-4">';
          $box = new box;
          echo $box->infoBox($heading, $contents);
        echo '</div>';
      }
    ?>
    
      </div>
    
      <script>$(document).on('change', '#inputManufacturersImage', function (event) { $(this).next('.custom-file-label').html(event.target.files[0].name); });</script>
    
    <?php
      require('includes/template_bottom.php');
      require('includes/application_bottom.php');
    ?>

     

     

     

    Instructions for changes - this and all code beyond has been changed in the file

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

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

     

     

     

    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_title_array = $_POST['manufacturers_seo_title'];
    
    REPLACE WITH:
    
              /*** Begin Header Tags SEO ***/
              $manufacturers_seo_keywords_array = $_POST['manufacturers_seo_keywords'];         
              $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_title'] = tep_db_prepare_input($manufacturers_seo_title_array[$language_id]);
    
    REPLACE WITH:
    	  
             /*** Begin Header Tags SEO ***/	  
              $sql_data_array['manufacturers_seo_keywords'] = tep_db_prepare_input($manufacturers_seo_keywords_array[$language_id]);
              $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_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_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_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);
    
    REPLACE WITH:
    
          /*** Begin Header Tags SEO ***/
          $contents[] = array('text' => '<br />' . TEXT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string);
          $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_title_string = '';
    
    REPLACE WITH:
    
          /*** Begin Header Tags SEO ***/ 
          $manufacturer_inputs_string = $manufacturer_description_string = $manufacturer_seo_description_string = $manufacturer_seo_keywords_string = $manufacturer_seo_title_string = '';
          /*** End Header Tags SEO ***/ 
          
        -------------------------------------------------------------------------------
    FIND (around line 254):
          
            $manufacturer_seo_description_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name'], '', '', 'style="vertical-align: top;"') . '</span></div>' . tep_draw_textarea_field('manufacturers_seo_description[' . $languages[$i]['id'] . ']', 'soft', '80', '10', tep_get_manufacturer_seo_description($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
    
    ADD BENEATH:      
          
            /*** Begin Header Tags SEO ***/ 
            $manufacturer_seo_keywords_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_seo_keywords[' . $languages[$i]['id'] . ']', tep_get_manufacturer_seo_keywords($mInfo->manufacturers_id, $languages[$i]['id']), 'placeholder="' . PLACEHOLDER_COMMA_SEPARATION . '"') . '</div>';
            $manufacturer_htc_title_alt_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_htc_title_tag_alt[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title_alt($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_htc_title_url_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_htc_title_tag_url[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_title_url($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            $manufacturer_htc_breadcrumb_string .= '<div class="input-group"><div class="input-group-prepend"><span class="input-group-text">' . tep_image(tep_catalog_href_link('includes/languages/' . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], '', 'SSL'), $languages[$i]['name']) . '</span></div>' . tep_draw_input_field('manufacturers_htc_breadcrumb_text[' . $languages[$i]['id'] . ']', tep_get_manufacturer_htc_breadcrumb($mInfo->manufacturers_id, $languages[$i]['id'])) . '</div>';
            /*** End Header Tags SEO ***/
    
        -------------------------------------------------------------------------------
    FIND (around line 276):
    
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_DESCRIPTION . $manufacturer_seo_description_string];
    
    ADD BENEATH:
    
          /*** Begin Header Tags SEO ***/
          $contents[] = ['text' => TEXT_EDIT_MANUFACTURERS_SEO_KEYWORDS . $manufacturer_seo_keywords_string];
          $contents[] = ['text' => TEXT_HEADERTAGS_TITLE_ALT . $manufacturer_htc_title_alt_string];
          $contents[] = ['text' => TEXT_HEADERTAGS_TITLE_URL . $manufacturer_htc_title_url_string];
          $contents[] = ['text' => TEXT_HEADERTAGS_BREADCRUMB . $manufacturer_htc_breadcrumb_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;
         } */
      }

     

  3. On 1/22/2020 at 2:29 PM, LeeFoster said:

    You're better off taking @Jack_mcs advice and paying someone on here to do your install. A lot of the addons that are coming out are plug and play and those that aren't are being adapted so they can be. 

    Spend your money on the supporters pack, and pay someone here to set it all up for you. Updates are no fuss because of the slim core, there are loads of free addons being converted daily to Phoenix standards and that's before you even mention the supporters codes. These are coming from both the main dev team and the other supporters.

    Thanks for input.

  4. 12 hours ago, JcMagpie said:

    However they have had issues, I belive if you check it's wiki page they state,

    "In October 2019, PrestaShop closed the Miami headquarters and ceased its operations in the Americas.

    Awesome!

    Bought a package deal from a competing store locally that was going out of business - 3 Zen Theme Templates and 64 Zen Modules.

    We'll see how it goes, haven't installed it yet.

  5. 2 minutes ago, Jack_mcs said:

    Please keep in mind that you are trying to install an addon into a Phoenix shop that was not written for Phoenix. I think it should still work but until I release a Phoenix version it might be best to not try this one.

    I realize that the version that I have working in 2.3.4.1 isn't for Phoenix. Was just relaying my experience in trying to add it to Phoenix.

     

    4 minutes ago, Jack_mcs said:

    As for switching shops, each cart platform has advantages but I think you will be hard-pressed to find one that is as flexible as oscommerce, especially with new addons coming out that are mostly plug n' play. Also, if you are going to pay for an installation, there are people here that you can pay.  

    oscommerce is and was my first choice. Currently a Phoenix Supporter and that won't change. At least not until I decide which platform is right for my needs. And switching using Cart2Cart or other available software to migrate db makes it easy and relatively cost effective.

     

  6. 20 hours ago, Jack_mcs said:

    The configuration section in Article Manage was written by the original programmer and I've not changed it. To use it, just click on one of the settings and you will see the edit box. 

    Not all configuration settings open to show the edit option.

    20 hours ago, Jack_mcs said:

    Did you install the module for the box?

    Yes the box module was installed.

     

    Wish I was at least somewhat comfortable programming but I'm not not. Think I am going to abandon oscommerce and give PrestaShop a try and leave the programming to the programmers and just pay for the modules that I want in my store functionality.

    Thanks again!

     

  7. On 1/10/2020 at 9:12 PM, Jack_mcs said:
    On 1/10/2020 at 3:41 PM, Dnj1964 said:

    Article Manager 1.57_9 shows in Admin but some configuration edit settings open to nothing

    Please explain what this means in more detail.

    Instead of opening normally

    image.png.6334a5811b9b9193a03d834dd27107b4.png

    The configuration item selected goes full screen with no edit option

    image.png.d2e6baef0a6375b9c19998f983eaefe3.png

     

     

    On 1/10/2020 at 9:12 PM, Jack_mcs said:
    On 1/10/2020 at 3:41 PM, Dnj1964 said:

    On the Catalog side no Article Box shows up.

    Have you enabled the box in the settings and installed the module?

    Yes the box setting were enabled and header tags set to false

     

     

  8. Simplest solution...

    Edit includes/languages/english/articles.php

    And remove "Blog"

    Not the proper fix, but works.

    15 hours ago, Dnj1964 said:

    Only other issue is that Clicking through link "All Articles"

    Goes to articles.php but doesn't show a list of articles but shows

    image.png.07463786c079689800905188c64950e3.png

     

     

  9. Correct.

    Should be being picked up by articles but there are no added topics yet so the topics seems to work correctly

    1 minute ago, JcMagpie said:

    Example /article_info.php?articles_id=2  is availale from its link , but it's not beeing picked up by all articles or all topics. So they are missing the links to that article

     

  10. I am actually adding the articles manually through the admin article submission.

    2 minutes ago, JcMagpie said:

    It looks as if the install is bad, I can only guess from the code I see but it looks to be missing the links in the db to the articles. I'm assuming when you add articles it saves in to db the actual artical and a id to find them all. It looks as if you have added articles by copying them over and not copied the links? Not sure just a guess.

     

  11. Unreal....

    Copy and paste doesn't even work simply anymore...

    Thanks

    5 minutes ago, JcMagpie said:

    check your code in a clean code editor like notepad++ , If you  are cutting and pasting code from the forum then you can have probems as the code from the form can copy badly.

    This is what I see from your pasted code in php sand box. As you can see extra bits have been added. These will give syntex error. With these removes no syntex error given.

    http://sandbox.onlinephpfunctions.com/

    image.png.6fa5811618f8dcbc591202d701afa4eb.png

     

  12. Jack,

    Checked it again, still blank page. Dreaweaver says there is an issue with the replacement code, doesn't say what other than syntax error on that line of code

    include('includes/languages/' . $language . '/article_manager.php');
      require('includes/functions/articles.php');
    
    // calculate topic path
      $tPath = '';
      if (isset($_GET['tPath'])) {
          $tPath = $_GET['tPath'];
      } elseif (isset($_GET['articles_id']) && !isset($_GET['authors_id'])) {
          $tPath = tep_get_article_path($_GET['articles_id']);
      }
    
      $current_topic_id = 0;
      if (tep_not_null($tPath)) {
          $tPath_array = tep_parse_topic_path($tPath);
          $tPath = implode('_', $tPath_array);
          $current_topic_id = $tPath_array[(sizeof($tPath_array)-1)];
      }
    
    //if (isset($_GET['articles_id'])) {
      if (isset($_GET['articles_id']) && ENABLE_HEADER_TAGS_SEO == 'true') {
    $articlesPage = 'article_info.php?articles_id=' . $_GET['articles_id'];
          $pageTags_query = tep_db_query("select page_name, page_title from headertags where page_name like '" . tep_db_input($articlesPage) . "' and language_id = '" . (int)$languages_id . "' LIMIT 1");
          if (tep_db_num_rows($pageTags_query) == 1) {
              $pageTags = tep_db_fetch_array($pageTags_query);
              $breadcrumb->add('Articles', tep_href_link('articles.php'));
              $breadcrumb->add($pageTags['page_title'], tep_href_link($articlesPage));
          }
      }

    Doug

  13. Tried that fix and all I got was a blank page on refresh

    1 hour ago, Jack_mcs said:

    To fix this, find this line in includes/modules/article_manager.php

    
      if (isset($_GET['articles_id'])) {

    and replace it with

    
      if (isset($_GET['articles_id']) && ENABLE_HEADER_TAGS_SEO == 'true') {

    Just so you know, or anyone else reading this, there's no reason to uninstall existing installations of this addon to install the latest one. There is an update file in the Docs directory that explains what is needed to upgrade.

     

  14. PHP 7.1.30
    MySQL 5.5.5-10.2.19-MariaDB-log

     

    Maybe this an issue that is causing all the problems.

    As I said I restored the db which removed all the HTS and AM from the db

    All files were deleted from the server.

    Yet when adding an article after installing the new version of AM without HTS

    When clicking on article Name it drops down and shows a list of article names previously used.

    Cleared the browser cache but the names are still showing.

     

  15. Thanks, the code fixes the admin side and can now add an article. 👍

    Catalog side clicking article link error: 👎

    1146 - Table 'bowwowwow.headertags' doesn't exist
    
    select page_name, page_title from headertags where page_name like 'article_info.php?articles_id=1' and language_id = '1' LIMIT 1
    
    [TEP STOP]

     

     

     

     

     

     

  16. 17 minutes ago, Jack_mcs said:

    Which line would that be? The code you posted doesn't have the change I mentioned so it is unclear where you added it.

    Also, the code for BS4 is an afterthought since that is not a finished package. Article Manager should work in it but I don't have a BS4 shop setup that doesn't have Header Tags SEO installed so I can't say for sure. I do have a BS4 shop with Header Tags SEO installed and this addon works correctly in it but that doesn't help in your case

    <td valign="top" width="50%"><table border="0" cellspacing="0" cellpadding="2" class="BorderedBox">
              <?php
    		  $hts_status = (ENABLE_HEADER_TAGS_SEO != 'true' ? 'disabled="disabled" ' : '');
    		  if (false)
    		  	for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
              ?>
                <tr>
                  <td class="smallText row-left-seo"><?php echo TEXT_ARTICLES_HTS_TITLE; ?></td>
                  <td class="smallText"><?php echo tep_draw_input_field('articles_hts_title[' . $languages[$i]['id'] . ']', GetHeaderTagsTitle($aInfo->articles_id, $languages[$i]['id']), $hts_status . ' size="35"'); ?></td>
                </tr>
                <tr>
                  <td class="smallText row-left-seo"><?php echo TEXT_ARTICLES_HTS_DESC; ?></td>
                  <td class="smallText"><?php echo tep_draw_input_field('articles_hts_desc[' . $languages[$i]['id'] . ']', GetHeaderTagsDescription($aInfo->articles_id, $languages[$i]['id']), $hts_status . ' size="35"'); ?></td>
                </tr>
                <tr>
                  <td class="smallText row-left-seo"><?php echo TEXT_ARTICLES_HTS_KWORDS; ?></td>
                  <td class="smallText"><?php echo tep_draw_input_field('articles_hts_kwords[' . $languages[$i]['id'] . ']', GetHeaderTagsKeywords($aInfo->articles_id, $languages[$i]['id']), $hts_status . ' size="35"'); ?></td>
                </tr>          
             <?php
                 }
             ?>
              </table>

     

  17.  

    Edge BS4 - Current commits to 05-28

    Adding the above to admin/articles.php creates a syntax error on the line below.

              <td valign="top" width="50%"><table border="0" cellspacing="0" cellpadding="2" class="BorderedBox">
              <?php
    		  $hts_status = (ENABLE_HEADER_TAGS_SEO != 'true' ? 'disabled="disabled" ' : '');
    		  	for ($i=0, $n=sizeof($languages); $i<$n; $i++) {
              ?>
                <tr>
                  <td class="smallText row-left-seo"><?php echo TEXT_ARTICLES_HTS_TITLE; ?></td>
                  <td class="smallText"><?php echo tep_draw_input_field('articles_hts_title[' . $languages[$i]['id'] . ']', GetHeaderTagsTitle($aInfo->articles_id, $languages[$i]['id']), $hts_status . ' size="35"'); ?></td>
                </tr>
                <tr>
                  <td class="smallText row-left-seo"><?php echo TEXT_ARTICLES_HTS_DESC; ?></td>
                  <td class="smallText"><?php echo tep_draw_input_field('articles_hts_desc[' . $languages[$i]['id'] . ']', GetHeaderTagsDescription($aInfo->articles_id, $languages[$i]['id']), $hts_status . ' size="35"'); ?></td>
                </tr>
                <tr>
                  <td class="smallText row-left-seo"><?php echo TEXT_ARTICLES_HTS_KWORDS; ?></td>
                  <td class="smallText"><?php echo tep_draw_input_field('articles_hts_kwords[' . $languages[$i]['id'] . ']', GetHeaderTagsKeywords($aInfo->articles_id, $languages[$i]['id']), $hts_status . ' size="35"'); ?></td>
                </tr>          
             <?php
                 }
             ?>
              </table>

     

    3 hours ago, Jack_mcs said:

    @Dnj1964You don't mention the version of your shop (please always do that) but I will assume Frozen since that is the only version that setting will work with. I just tried it here and it works as expected so I don't have an answer as to why it would fail. But here's a quick fix. Find this line in admin/articles.php

    
              $hts_status = (ENABLE_HEADER_TAGS_SEO != 'true' ? 'disabled="disabled" ' : '');
               

    and add this below it

    
              if (false)

    .

     

  18. I have an issue with the new version

    Enable Header Tags SEO is set to false and the db was restored and all previous AM & HTS tables and configuration entries were removed.

    Installed the db entries via article_manager_db_handler.php

    configuration_group = Article Manager

    Have been installed and re-installed five times with no luck.

    Same error repeatedly.

     

     

    1146 - Table 'bowwowwow.headertags' doesn't exist
    
    select page_title from headertags where page_name like '%articles_id=%' and language_id = '1'
    
    [TEP STOP]

     

×
×
  • Create New...