artfulweb Posted July 10, 2020 Share Posted July 10, 2020 1 minute ago, Jack_mcs said: Very strange since it works fine here. Although I'm testing it with the development shop I used to create it so maybe I have something set that affects this. I will install it into a new shop when I get the chance and see what happens. OK. It does the same thing with a fresh install of PHOENIX 1.0.7.5 also. Quote Link to comment Share on other sites More sharing options...
artfulweb Posted July 11, 2020 Share Posted July 11, 2020 Hi Jack, I found a solution that works. In admin/categories.php ========================== FIND line 360 ========================== /*** Begin Header Tags SEO ***/ require_once('includes/functions/header_tags_general.php'); $hts_fields = GetHTSFieldList(); $db = [ 'products' => [ 'products_quantity' => null, 'products_model' => null, 'products_image' => null, 'products_price' => null, 'products_date_added' => 'NOW()', 'products_date_available' => null, 'products_weight' => null, 'products_status' => 0, 'products_tax_class_id' => null, 'manufacturers_id' => null, 'products_gtin' => null, ], 'products_description' => [ 'products_id' => null, 'language_id' => null, 'products_name' => null, 'products_description' => null, 'products_url' => null, 'products_viewed' => 0, 'products_seo_title' => null, 'products_seo_description' => null, 'products_seo_keywords' => null, $hts_fields['input'] ], ========================== CHANGE TO ========================== /*** Begin Header Tags SEO ***/ //require_once('includes/functions/header_tags_general.php'); //$hts_fields = GetHTSFieldList(); $db = [ 'products' => [ 'products_quantity' => null, 'products_model' => null, 'products_image' => null, 'products_price' => null, 'products_date_added' => 'NOW()', 'products_date_available' => null, 'products_weight' => null, 'products_status' => 0, 'products_tax_class_id' => null, 'manufacturers_id' => null, 'products_gtin' => null, ], 'products_description' => [ 'products_id' => null, 'language_id' => null, 'products_name' => null, 'products_description' => null, 'products_url' => null, 'products_viewed' => 0, 'products_seo_title' => null, 'products_seo_description' => null, 'products_seo_keywords' => null, //$hts_fields['input'] 'products_head_title_tag_alt' => null, 'products_head_title_tag_url' => null, 'products_head_breadcrumb_text' => null, 'products_head_listing_text' => null, 'products_head_sub_text' => null, 'products_head_additional_words' => null, ], Quote Link to comment Share on other sites More sharing options...
artfulweb Posted July 11, 2020 Share Posted July 11, 2020 (edited) Oops another little ick... If there is a second language, when you click on the "Language Specific" tab the hts fields appear at the top BEFORE the product name, description, etc instead of below it. Bizarre. Edited July 11, 2020 by artfulweb Sentence not completed Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted July 12, 2020 Author Share Posted July 12, 2020 OK. Thanks for letting me know. When I get a chance to look at this I will add a second language and test this too. Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
Giner Posted July 13, 2020 Share Posted July 13, 2020 Thank you for the contribution. Thank you for clear ansers Jack_mcs 1 Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted July 18, 2020 Author Share Posted July 18, 2020 6 hours ago, ce7 said: 1054 - Unknown column 'mi.manufacturers_seo_keywords' in 'where clause' The above field is part of the core code but it was added in a later version of the CE branch, as i recall. You can run this command and it should fix that error. But the last version of this addon was based on the Frozen version of CE so you may have to use an older version of this addon to get it to work. ALTER TABLE manufacturers_info ADD manufacturers_seo_keywords VARCHAR(255) NULL; ce7 1 Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
Jack_mcs Posted July 19, 2020 Author Share Posted July 19, 2020 9 hours ago, ce7 said: So if i keep the $manufacturers_query_raw without using your code, will that affect anything or is there a way to make both working? If you don't make that change, you won't be able to control the title and tags for manufacturers. If you don't use manufacturers, you can skip all of the changes for that file. But if you do, you should make the changes. I don't see anything wrong with the code you posted and it should work in your shop but here is the one written for your shop so using it might help: $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 = '" . (int)$languages_id ."' order by m.manufacturers_name"; But I think you may be using the wrong version for the installation guide. You have a CE shop, as opposed to a Phoenix shop, as i understand it. And the code you mentioned is only in the Phoenix section. You should be using the Frozen directory for the changes so you may want to recheck things using that directory. ce7 1 Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
elara Posted August 19, 2020 Share Posted August 19, 2020 (edited) Hello Friends, please your help, any support or idea will be welcome. I am running Header Tags SEO V 3.2.6 on osCommerce v2.3.1 (PHP 5.3.29). I need to shown pages specially product pages with its own TAGs. I can run the Fill Tags tool without problems and can see tags filled according that in each product in my catalog but these tags are not been showing in meta tags on my page. No matter that I put on Product Meta Tag Information (Title Tag, Description Tag or Keywords Tag) nothing is shown on my site. The only exception is when I fill the right columm on Page Control with Default Tags (global), but it sets all pages with the same generic tags. The other symthom I can see is when I use Check URL tool, no matter what file I check, it always give the same on test results. Here is an example but it is the same for each file. Test Results languages in the Header Tags table are: 1 ( Espanol ). Title and Meta Tag results for conditions.php explain Espanol From Site: Title -> 302 Found Meta Description -> Meta Keywords -> From Settings: Title -> Meta Description -> Meta Keywords -> Results of scan: conditions.php is missing data. Fill Tags should be ran. It is like if Header Tags SEO can not put anything on Meta TAG on pages except the default tags on all pages. Thanks a lot in advanced. Thanks a lot in advanced. Edited August 19, 2020 by elara Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted August 19, 2020 Author Share Posted August 19, 2020 @elaraTake a look at the page in Page Control (index.php for categories, product_info.php for products). On index.php, make sure you have the categories checkbox checked. For product_info, make sure you have the products checkbox checked. For unique pages, make sure you have something entered in the boxes above the checkboxes for that page (in Page Control). Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
mendoh Posted September 5, 2020 Share Posted September 5, 2020 Hello Jack, could you please confirm whether your contribution works on Phoenix 1.0.7.7? I installed it on 1.0.7.6 where it was working ok, however, after upgrading to 1.0.7.7 I had to uninstall it because I get a 500 error on admin side. Triple-checked my modified admin/categories.php file for errors: no errors on file and the 500 error still there on admin side... Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 6, 2020 Author Share Posted September 6, 2020 Yes, it should. I installed it in a 1.0.7.7 shop a few weeks ago and it is working fine. The version I use has some differences from the released version but only things like warning fixes and display changes. None that would prevent a 500 error, at least none that I can think of. You can check your sites error_log file when that error occurs to see the reason, or ask your host to look at it. The 500 error can be caused by many things so troubleshooting it can be difficult without knowing the cause of the failure. Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
mendoh Posted September 6, 2020 Share Posted September 6, 2020 Thanks Jack. What really puzzles me is that I have started getting 500 error after upgrading to 1.0.7.7....nonetheless, I will take your advice and start investigating the cause of the issue... Quote Link to comment Share on other sites More sharing options...
mendoh Posted September 6, 2020 Share Posted September 6, 2020 Jack, I have tried a new contribution install from scratch and the 500 error is gone. Everything would appear to work as it should, except for a strange behaviour as follows: if I click on any product page, the HTS line below the product correctly shows "Currently viewing: product name" and the "Popular searches" tag box in the footer shows up nicely, whereas if I do the same on index.php or any other product category page, I get " HTS_TEXT_VIEWING: category name " or "HTS_TEXT_VIEWING: index page title " and the "Popular searches" tag box in the footer also shows "BOX_HEADING_HEADERTAGS_TAGCLOUD" instead of "Popular searches". Pressing the "test" button on admin side returns the following: Results of scan: index.php is missing Header Tags code or it is not installed correctly. Verify that Fill Tags has been ran and that the root checkbox or the default checkboxes have been checked in Page Control. then, if I do exactly as suggested, I get the following error in Page Control: Missing sort orders are not allowed -> index.php Can you tell me where did I go wrong? "HTS_TEXT_VIEWING Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 7, 2020 Author Share Posted September 7, 2020 For the currently viewing problem, in includes/hooks/shop/siteWide/header_tags_seo_currently_viewing.php file, find this line: global $category_depth, $header_tags_array, $product_info; and add this after it: include_once('includes/languages/' . $_SESSION['language'] . '/header_tags_seo.php'); Regarding the test page, it may not return valid results in Phoenix. I made some changes to it but it may need more work. But the missing sort order message means you have a checkbox checked in Page Control but you didn't enter a number in the sort order box beside it. Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
mendoh Posted September 7, 2020 Share Posted September 7, 2020 I think I am narrowing it down to the roots of the issue. 10 hours ago, mendoh said: " HTS_TEXT_VIEWING: category name " or "HTS_TEXT_VIEWING: index page title " and the "Popular searches" tag box in the footer also shows "BOX_HEADING_HEADERTAGS_TAGCLOUD" instead of "Popular searches". While the above issue disappeared (probably a matter of browser cache flushing/page refresh after installing the HTS contribution) and accessing admin side does not give me a 500 error any more, a 500 error is however displayed after clicking on categories/products in admin. Since the issue appears to lay within the categories.php file, I followed your troubleshooting guide and test-compared my modified categories.php with the one included with your contribution files and found out that the main differences are related to the file itself, not the contribution modifications. As long as I could understand, everything is related to this string: const DIR_FS_CATALOG_IMAGES = DIR_FS_CATALOG . 'images/'; (which is NOT present in your version of categories.php) along with quite a few other following strings in the file that all relate to the same images/ directory, e.g.: tep_image(HTTP_CATALOG_SERVER . DIR_WS_CATALOG_IMAGES (your version of categories.php) VS tep_image(HTTP_CATALOG_SERVER . DIR_WS_CATALOG . 'images/' (updated 1.0.7.7 version of categories.php) Then, if I replace my 1.0.7.7-updated and modded categories.php file with the categories.php file included with your contribution, I get no more 500 error when clicking on categories/products in admin, however, the following error is displayed: Error: Catalog images directory does not exist: %s I suppose both your provided admin/categories.php file and its related modifications as included in your latest contribution version are just incompatible with 1.0.7.7? Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 7, 2020 Author Share Posted September 7, 2020 The released version was uploaded prior to 1.0.7.7 so there will be differences in the files. For example, DIR_WS_CATALOG_IMAGES doesn't exist in 1.0.7.7. When I said I have a working version here and that the differences would not cause your problem, I had only checked the actual HTS files, not the core files in the shop that get changed. As you have found, there are changes there that won't work. I do apologize for the oversight in my check. I will get an updated version uploaded, hopefully in the next few weeks. Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
mendoh Posted September 7, 2020 Share Posted September 7, 2020 Thanks Jack, roots of the issue found at last. I will keep waiting for the release of your updated version, then. Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 14, 2020 Author Share Posted September 14, 2020 A new version has been uploaded with these changes: Added a check to the currently viewing hook to check for Article Managers setting. Added a check to the social icons hook to check for Article Managers setting. Changed code to prevent php warnings in later versions of Phoenix. Fixed admin hook to work for multiple language sites. Moved the css file to ext/css/. Replaced one of the changes to categories.php with a hook. Rewrote the tagcloud module to display better and to be responsive. Please note: This upgrade only affects Phoenix shops. It will run on the latest version: 1.0.7.8 Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
ron1955sab Posted September 25, 2020 Share Posted September 25, 2020 (edited) Good post guys! Edited September 25, 2020 by ron1955sab Quote Link to comment Share on other sites More sharing options...
artfulweb Posted September 26, 2020 Share Posted September 26, 2020 Hi Jack, I am getting this error in my logs on PHOENIX 1.0.7.7 PHP Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in /xx/xx/xx/xx/includes/modules/header_tags_seo/header_tags_opengraph.php on line 2 Any ideas ? Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 26, 2020 Author Share Posted September 26, 2020 The warning occurs because the visitors browser doesn't have the language set for his computer. The OG API says if the locale is missing, it will include one so I think this will fix this. Replace the following $loc = explode(',',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); $ogArray = array(); $ogArray['site_name'] = STORE_NAME; $ogArray['locale'] = str_replace('-', '_', $loc[0]); with this $ogArray = array(); $ogArray['site_name'] = STORE_NAME; if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { $loc = explode(',',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); $ogArray['locale'] = str_replace('-', '_', $loc[0]); } Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
artfulweb Posted September 26, 2020 Share Posted September 26, 2020 3 hours ago, Jack_mcs said: The warning occurs because the visitors browser doesn't have the language set for his computer. The OG API says if the locale is missing, it will include one so I think this will fix this. Replace the following $loc = explode(',',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); $ogArray = array(); $ogArray['site_name'] = STORE_NAME; $ogArray['locale'] = str_replace('-', '_', $loc[0]); with this $ogArray = array(); $ogArray['site_name'] = STORE_NAME; if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { $loc = explode(',',$_SERVER["HTTP_ACCEPT_LANGUAGE"]); $ogArray['locale'] = str_replace('-', '_', $loc[0]); } Hi Jack, No it still happens plus these : PHP Notice: Undefined index: title in /xx/xx/xx/xx/includes/functions/header_tags.php on line 49 PHP Notice: Undefined index: keywords in /xx/xx/xx/xx/includes/functions/header_tags.php on line 52 PHP Notice: Undefined index: desc in /xx/xx/xx/htdocs/includes/header_tags.php on line 221 Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 26, 2020 Author Share Posted September 26, 2020 34 minutes ago, artfulweb said: No it still happens plus these : Are you saying you get the same warning that you initially posted? If so, I don't see how that is possible. The warning is saying the index is being referenced but doesn't exist. While my code change says to only reference if it does exist. What is being done for you to see the warning? I would like to try to duplicate it here. For the other warnings, and more, they have been fixed but in the latest version I have here but are too numerous to post. I will try to get a new version uploaded in the next few weeks. Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
MyBookShop Posted September 29, 2020 Share Posted September 29, 2020 (edited) Had to add the lines from the latest 1.0.7.9 <title><?php echo htmlspecialchars($oscTemplate->getTitle()); ?></title> <base href="<?php echo HTTP_SERVER . DIR_WS_CATALOG; ?>"> to your supplied template_top for the latest 1.0.7.9 or the images disappeared in product listing (im using Kissit) Edited September 29, 2020 by MyBookShop Jack_mcs 1 Quote Link to comment Share on other sites More sharing options...
♥Dnj1964 Posted October 26, 2020 Share Posted October 26, 2020 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('"', '"',$_POST['manufacturers_htc_title_tag']); $manufacturers_htc_title_alt_array = str_replace('"', '"',$_POST['manufacturers_htc_title_tag_alt']); $manufacturers_htc_title_url_array = $_POST['manufacturers_htc_title_tag_url']; $manufacturers_htc_desc_array = str_replace('"', '"',$_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('"', '"',$_POST['manufacturers_htc_title_tag']); $manufacturers_htc_title_alt_array = str_replace('"', '"',$_POST['manufacturers_htc_title_tag_alt']); $manufacturers_htc_title_url_array = $_POST['manufacturers_htc_title_tag_url']; $manufacturers_htc_desc_array = str_replace('"', '"',$_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']) . ' ' . 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;"') . ' ' . 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;"') . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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']) . ' ' . 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;"') . ' ' . 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;"') . ' ' . 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; } */ } Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.