♥Dnj1964 Posted March 23, 2019 Share Posted March 23, 2019 Added this quickly and just wanted to say thanks. Was wondering if there is a way to have multiple products listed inline With something like #orp li { display: inline; list-style-type: none; padding-right: 20px; } <ul id="orp"> <li>product 1</li> <li>product 2</li> </ul> Doug Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted March 23, 2019 Share Posted March 23, 2019 5 hours ago, Dnj1964 said: Was wondering if there is a way to have multiple products listed inline Hello Doug @Dnj1964, I have no idea and I do not understand what exact you wish to achieve. But, just try. Best regards Rainer Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
MyBookShop Posted April 17, 2019 Share Posted April 17, 2019 I think he means that in the related products are no longer in Grid mode but as a long vertical list as would be displayed on a phone. Some how this is broken for PC browsers as it used to work like this (I am now using Frozen BS4 CE downloaded from Chilled Displays). Also the version number still shows as 6.40 not 6.60 The admin sidet might not be compatible with the new BS4 admin, but i'm still testing that out as it might be my setup. Mark Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted April 17, 2019 Share Posted April 17, 2019 It requieres update for BS4. Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
Rwe Posted June 12, 2019 Share Posted June 12, 2019 Hello @raiwa installed the Related_Products_234_BS_6.6. google structured data test gives all related products as separated products and not related to any product w3c validatation gives the following errors: Error: The itemprop attribute was specified, but the element is not a property of any item. ( isRelatedTo, url, name, offers, pricecurrency, price) i have installed the HT product_schema.php wich works correctly for the main product. is there something missing in the HT product_schema.php, some code for related products? i am Using Frozen v2.3.4.1 CE Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted June 12, 2019 Share Posted June 12, 2019 Hello @Rwe, ht_product_schema is a core module and can't therefor take in consideration the related products add. Schema tags are constantly updated. I'll have a look and try to address this for the next update. Anyway I would say it's not really very important. Thank's for the report anyway. Rwe 1 Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
♥Smoky Barnable Posted July 20, 2019 Share Posted July 20, 2019 Hello @Rwe, I've updated this to BS4. Can you please look at this code to see if it is valid? I'm still learning how to convert BS3 to BS4. Thanks! <?php /* $Id: cm_pi_related_products.php $Loc: catalog/includes/modules/content/product_info/ Related Products 6.3 BS by @raiwa [email protected] www.oscaddons.com Copyright (c) 2016 osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Released under the GNU General Public License */ class cm_pi_related_products { var $code; var $group; var $title; var $description; var $sort_order; var $enabled = false; function __construct() { $this->code = get_class($this); $this->group = basename(dirname(__FILE__)); $this->title = MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_TITLE; $this->description = MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DESCRIPTION; if ( defined('MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_STATUS') ) { $this->sort_order = MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SORT_ORDER; $this->enabled = (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_STATUS == 'True'); } } function execute() { global $oscTemplate, $languages_id, $currencies, $currency, $PHP_SELF, $product_info; $content_width = MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_CONTENT_WIDTH; $product_width = MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DISPLAY_EACH; $optional_rel_prods_content = NULL; $orderBy = 'order by '; $orderBy .= (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_RANDOMIZE == 'True')?'rand()':'pop_order_id, pop_id'; $orderBy .= (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_DISP > 0)?' limit ' . MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_DISP:''; $optional_rel_prods = "SELECT "; $specials_query = ''; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_QUANTITY == 'True') $optional_rel_prods .= "products_quantity, "; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_MODEL == 'True') $optional_rel_prods .= "products_model, "; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_THUMBS == 'True') $optional_rel_prods .= "products_image, "; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_PRICE == 'True') { $optional_rel_prods .= "products_tax_class_id, products_price, IF(s.status, s.specials_new_products_price, NULL) as specials_products_price, "; $specials_query = " left join specials s on s.products_id = pb.products_id "; } if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_NAME == 'True') $optional_rel_prods .= "products_name, "; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_DESCRIPTION == 'True') $optional_rel_prods .= "substring_index(pa.products_description, ' ', " . MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DESCRIPTION_LENGTH . ") as products_description, "; $optional_rel_prods .= "pop_products_id_slave "; $optional_rel_prods .= "from products_related_products, products pb left join products_description pa on pa.products_id = pb.products_id " . $specials_query . " where pop_products_id_slave = pa.products_id and pa.products_id = pb.products_id and language_id = '" . (int)$languages_id . "' and pop_products_id_master = '" . (int)$_GET['products_id'] . "' and products_status='1' " . $orderBy; ///echo $optional_rel_prods; $optional_rel_prods_query = tep_db_query($optional_rel_prods); if (tep_db_num_rows($optional_rel_prods_query) > 0) { $optional_rel_prods_content .= '<h3>' . MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_TITLE . '</h3>'; $optional_rel_prods_content .= '<div class="row"><div class="card-deck mx-auto">'; while ($optional_rel_prods_values = tep_db_fetch_array($optional_rel_prods_query)) { if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_QUANTITY == 'True') $products_qty_slave = '<span itemprop="inventoryLevel">' . $optional_rel_prods_values['products_quantity'] . '</span>'; $optional_rel_prods_content .= ' <div class="card" itemprop="isRelatedTo" itemscope itemtype="http://schema.org/Product">'; $optional_rel_prods_content .= ' <meta itemprop="url" content="' . tep_href_link('product_info.php', 'products_id=' . $optional_rel_prods_values['pop_products_id_slave']) . '" />'; switch (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_MODE) { case 'Equal Height': $optional_rel_prods_content .= ' <div class="card-body text-center">'; break; case 'Fixed Height': $optional_rel_prods_content .= ' <div class="card" style = "height:' . MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_VALUE . 'em;">'; break; case 'None': $optional_rel_prods_content .= ' <div class="card">'; break; } // show thumb image if Enabled if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_THUMBS == 'True') { $optional_rel_prods_content .= '<a href="' . tep_href_link('product_info.php', 'products_id=' . $optional_rel_prods_values['pop_products_id_slave']) . '">' . tep_image('images/' . $optional_rel_prods_values['products_image'], $optional_rel_prods_values['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>'; } $optional_rel_prods_content .= ' <div class="caption">'; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_NAME == 'True') { $optional_rel_prods_content .= '<p class="text-center"><a href="' . tep_href_link('product_info.php', 'products_id=' . $optional_rel_prods_values['pop_products_id_slave']) . '"><span itemprop="name">' . $this->tep_truncate_text_rel_prod($optional_rel_prods_values['products_name'], MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_NAME_LENGTH, MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_WORD_LENGTH) . '</span></a></p>'; } if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_MODEL == 'True') { $optional_rel_prods_content .= '<p class="text-center small" itemprop="model">' . $optional_rel_prods_values['products_model'] . '</p>'; } //$optional_rel_prods_content .= '<hr>'; if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_DESCRIPTION == 'True') { $optional_rel_prods_content .= '<p class="text-center"><a href="' . tep_href_link('product_info.php', 'products_id=' . $optional_rel_prods_values['pop_products_id_slave']) . '"><span itemprop="description">' . $this->tep_truncate_text_rel_prod(strip_tags($optional_rel_prods_values['products_description']), MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DESCRIPTION_LENGTH, MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_WORD_LENGTH) . '</span></a><br>'; } if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_PRICE == 'True') { $optional_rel_prods_content .= '<p class="text-center" itemprop="offers" itemscope itemtype="http://schema.org/Offer"><meta itemprop="priceCurrency" content="' . tep_output_string($currency) . '">'; if (tep_not_null($optional_rel_prods_values['specials_products_price'])) { $optional_rel_prods_content .= '<del>' . $currencies->display_price($optional_rel_prods_values['products_price'], tep_get_tax_rate($optional_rel_prods_values['products_tax_class_id'])) . '</del> '; $optional_rel_prods_content .= '<span class="productSpecialPrice" itemprop="price" content="' . $currencies->display_raw($optional_rel_prods_values['specials_products_price'], tep_get_tax_rate($optional_rel_prods_values['products_tax_class_id'])) . '">' . $currencies->display_price($optional_rel_prods_values['specials_products_price'], tep_get_tax_rate($optional_rel_prods_values['products_tax_class_id'])) . '</span><br>'; } else { $optional_rel_prods_content .= '<span itemprop="price" content="' . $currencies->display_raw($optional_rel_prods_values['products_price'], tep_get_tax_rate($optional_rel_prods_values['products_tax_class_id'])) . '">' . $currencies->display_price($optional_rel_prods_values['products_price'], tep_get_tax_rate($optional_rel_prods_values['products_tax_class_id'])) . '</span><br>'; } $optional_rel_prods_content .= '</p>'; } if (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_QUANTITY == 'True') { $optional_rel_prods_content .= '<p class="text-center" itemprop="offers" itemscope itemtype="http://schema.org/Offer">' . sprintf(MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_QUANTITY_TEXT, $products_qty_slave) . '</p>'; } $optional_rel_prods_content .= ' </div>'; // caption $optional_rel_prods_content .= ' </div>'; // card $optional_rel_prods_content .= ' </div>'; // col' . $product_width . '" } $optional_rel_prods_content .= ' </div></div>'; } //only output template html if related poducts are found if (!empty($optional_rel_prods_content)) { ob_start(); include('includes/modules/content/' . $this->group . '/templates/related_products.php'); $template = ob_get_clean(); $oscTemplate->addContent($template, $this->group); } } function isEnabled() { return $this->enabled; } function check() { return defined('MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_STATUS'); } function install() { tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Current Version', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_VERSION_INSTALLED', '6.3 BS', 'Read only.', '6', '1', 'tep_version_readonly(', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Related Products Module', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_STATUS', 'True', 'Should the optional_related_products block be shown on the product info page?', '6', '2', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Uninstall Removes Database entries', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_REMOVE_DATA', 'False', 'Do you want to remove the related products database table when uninstall the module? All your existing product relations will be lost, use this option only it you are sure that you will not use related products any more.', '6', '3', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Content Width', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_CONTENT_WIDTH', '12', 'What width container should the content be shown in?', '6', '4', 'tep_cfg_select_option(array(\'12\', \'11\', \'10\', \'9\', \'8\', \'7\', \'6\', \'5\', \'4\', \'3\', \'2\', \'1\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Product Width', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DISPLAY_EACH', '3', 'What width container should each product be shown in? (12 = full width, 6 = half width).', '6', '5', 'tep_cfg_select_option(array(\'12\', \'11\', \'10\', \'9\', \'8\', \'7\', \'6\', \'5\', \'4\', \'3\', \'2\', \'1\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SORT_ORDER', '1100', 'Sort order of display. Lowest is displayed first.', '6', '6', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display card Image', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_THUMBS', 'True', 'Show Product Image', '6', '7', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Product Name', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_NAME', 'True', 'Show Product Name', '6', '8', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Maximum of characters', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_NAME_LENGTH', '36', 'Maximum number of characters of the product name to display', '6', '14', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Product Model', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_MODEL', 'False', 'Show Product Model', '6', '9', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Product Description', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_DESCRIPTION', 'False', 'Show Product Description', '6', '9', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Maximum Description length', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DESCRIPTION_LENGTH', '250', 'The number of characters (to the nearest word) of the Name to display.', '6', '1', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Product Price', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_PRICE', 'True', 'Show Product Price', '6', '10', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Display Quantity Available', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_QUANTITY', 'False', 'Show Product Quantity', '6', '11', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Define Number of Items to Display', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_DISP', '0', 'Maximum number of Related Products to display. 0 is unlimited.', '6', '12', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Maximum word length', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_WORD_LENGTH', '40', 'Maximum number of characters in a single word in Product Name', '6', '13', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Height mode', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_MODE', 'Equal Height', 'How should the height of each product box be adjusted. \'Equal Height\' uses the Equal Height jquery script. \Fixed Height\ uses the Height specified in the next field. \'None\' adjusts the height depending on the content', '6', '15', 'tep_cfg_select_option(array(\'Equal Height\', \'Fixed Height\', \'None\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Fixed height value', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_VALUE', '11', 'Fixed height for the product box in em. Has no effect for \'Equal Height\' and \'None\' mode.', '6', '16', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Use Random Display Order', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_RANDOMIZE', 'False', 'Adds random sort order to products displayed. Recommended if maximum number of products is set.', '6', '17', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Admin Display: Maximum Rows', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MAX_ROW_LISTS_OPTIONS', '10', 'Sets the maximum number of rows to display per page.', '6', '18', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Admin Display: Drop-Down List Maximum Length', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MAX_NAME_LENGTH', '50', 'Sets the maximum length (in characters) of product name displayed in drop-down lists. Enter \'0\' to set this option to false.', '6', '19', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Admin Display: Display List Maximum Length', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MAX_DISPLAY_LENGTH', '50', 'Sets the maximum length (in characters) of product name displayed in list. Enter \'0\' to set this option to false.', '6', '20', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Display: Use Product Id (PRO only)', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_USE_ID', 'False', 'Uses Product Id in lists. When Product Model or Name is also selected, Product Id is displayed first.', '6', '210', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Display: Use Product Model', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_USE_MODEL', 'False', 'Uses Product Model in lists. When Product Name or Id is also selected, Product Id is displayed first.', '6', '22', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Display: Use Product Name', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_USE_NAME', 'True', 'Uses Product Name in lists. When Product Model or Id is also selected, Product Id or Model is displayed first.', '6', '23', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Admin Display: Combine Model and Name separator', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MODEL_SEPARATOR', ': ', 'Enter the characters you would like to separate ID, Model and Name, when using 2 or 3. Leave empty if only using one.', '6', '24', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Display: Sort Order in Menus (PRO only)', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MENU_SORT_ORDER', 'Name', 'How should the Products be sorted in the Drop Down Menus.', '6', '25', 'tep_cfg_select_option(array(\'Name\', \'Model\', \'Id\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Display: Show Out of Stock Products (PRO only)', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_INACTIVE_PRODUCTS', 'True', 'Show Out of Stock Products in the Products Drop Down Menus.', '6', '26', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Function: Use Delete Confirmation', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_CONFIRM_DELETE', 'True', 'When set to True, a confirmation box will pop-up when deleting an association. Set to False to Delete without confirmation.', '6', '27', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Admin Function: Combine Insert with Inherit', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_INSERT_AND_INHERIT', 'False', 'When set to True, clicking on Inherit will also Insert the product association. When False, Inherit works as before.', '6', '28', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); $old_table_name = tep_db_fetch_array(tep_db_query("SHOW TABLES LIKE 'products_options_products'")); if (tep_not_null($old_table_name)) { tep_db_query("RENAME TABLE products_options_products TO products_related_products"); } tep_db_query( "create table if not exists `products_related_products` (`pop_id` int(11) not null auto_increment, `pop_products_id_master` int(11) not null default '0', `pop_products_id_slave` int(11) not null default '0', `pop_order_id` smallint(6) not null default '0', primary key (`pop_id`))"); } function remove() { if ( defined('MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_REMOVE_DATA') && MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_REMOVE_DATA == 'True' ) { tep_db_query("drop table if exists `products_related_products`"); } tep_db_query("delete from configuration where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_VERSION_INSTALLED', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_STATUS', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_REMOVE_DATA', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SORT_ORDER', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_CONTENT_WIDTH', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DISPLAY_EACH', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_THUMBS', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_NAME', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_MODEL', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_DESCRIPTION', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_DESCRIPTION_LENGTH', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_PRICE', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_SHOW_QUANTITY', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_DISP', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_MAX_WORD_LENGTH', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_NAME_LENGTH', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_MODE', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_VALUE', 'MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_RANDOMIZE', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MAX_ROW_LISTS_OPTIONS', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MAX_NAME_LENGTH', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MAX_DISPLAY_LENGTH', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_USE_ID', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_USE_MODEL', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_USE_NAME', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MODEL_SEPARATOR', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_MENU_SORT_ORDER', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_INACTIVE_PRODUCTS', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_CONFIRM_DELETE', 'MODULE_CONTENT_PRODUCT_INFO_ADMIN_RELATED_PRODUCTS_INSERT_AND_INHERIT' ); } protected function tep_limit_text_rel_prod ($text, $maxchar, $wordlength = 40) { $text = str_replace ("\n", ' ', $text); $text = str_replace ("\r", ' ', $text); $text = str_replace ('<br>', ' ', $text); $text = wordwrap ($text, $wordlength, ' ', true); $text = preg_replace ("/[ ]+/", ' ', $text); $text_length = strlen ($text); $text_array = explode (" ", $text); $newtext = ''; for ($array_key = 0, $length = 0; $length <= $text_length; $array_key++) { $length = strlen ($newtext) + strlen ($text_array[$array_key]) + 1; if ($length > $maxchar) break; $newtext = $newtext . ' ' . $text_array[$array_key]; } return $newtext; } protected function tep_truncate_text_rel_prod ($products_text, $maxchar, $wordlength = 40) { $products_text = ($products_text); if ($maxchar > 0) { $products_text_length = strlen ($products_text); if ($products_text_length > $maxchar) { $products_text = $this->tep_limit_text_rel_prod ($products_text, $maxchar, $wordlength); $products_text .= ' ...'; } } return $products_text; } } // End class // function show the version read only if(!function_exists('tep_version_readonly')) { function tep_version_readonly($value){ $version_text = '<br>Version ' . $value; return $version_text; } } Quote The water in a vessel is sparkling; the water in the sea is dark. The small truth has words which are clear; the great truth has great silence. - Rabindranath Tagore Link to comment Share on other sites More sharing options...
♥raiwa Posted July 20, 2019 Share Posted July 20, 2019 Looks good, but I can't now check details. I'm upgrading my add-ons one by one. This one is one of the next on the list. Please be patient. Smoky Barnable 1 Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
Hotclutch Posted July 20, 2019 Share Posted July 20, 2019 $optional_rel_prods_content .= ' <div class="card" itemprop="isRelatedTo" itemscope itemtype="http://schema.org/Product">'; $optional_rel_prods_content .= ' <meta itemprop="url" content="' . tep_href_link('product_info.php', 'products_id=' . $optional_rel_prods_values['pop_products_id_slave']) . '" />'; switch (MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_MODE) { case 'Equal Height': $optional_rel_prods_content .= ' <div class="card-body text-center">'; break; case 'Fixed Height': $optional_rel_prods_content .= ' <div class="card" style = "height:' . MODULE_CONTENT_PRODUCT_INFO_RELATED_PRODUCTS_HEIGHT_VALUE . 'em;">'; break; case 'None': $optional_rel_prods_content .= ' <div class="card">'; break; } Can't be right. You already have: $optional_rel_prods_content .= ' <div class="card" itemprop="isRelatedTo" itemscope itemtype="http://schema.org/Product">'; then you have a case where; case 'None': $optional_rel_prods_content .= ' <div class="card">'; break; which means somewhere in your output you could end up with <div class="card" itemprop="isRelatedTo" itemscope itemtype="http://schema.org/Product"><div class="card"> Smoky Barnable 1 Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted July 27, 2019 Share Posted July 27, 2019 Uloaded update for Phoenix 1.0.1.x: Related Products Phoenix 7.0 Update Version Phoenix 7.0: - Updated for CE Phoenix 1.0.1.x - fixed undefined warning in admin/optional_related_products.php if product info module is not installed. - updated template class in product info module to core naming convention "cm-pi-related_product" - update structured database - added config entries for columns/viewport like also purchased products module. - removed obsolete height control config entries. - moved html to template - general file cleaning (tabs/spaces, UNIX new line) valquiria23, Smoky Barnable, Rwe and 1 other 4 Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
♥raiwa Posted August 20, 2019 Share Posted August 20, 2019 Uploaded Version Phoenix 7.1 for Phoenix 1.0.2.x: Related Products Phoenix 7.1 - Updated for CE Phoenix 1.0.2.x - updated coding to match Phoenix 1.0.2.0 product listings and config entries - simplified modules and removed config entries to show always product name, image and price - simplified description length limit Phoenix 1.0.1.x, please use Related Products 7.0 2.3.4.1 FROZEN and older BS3 versions, please use Related Products 6.6 valquiria23 1 Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
edoscript Posted September 9, 2019 Share Posted September 9, 2019 I have installed this module and activated both for products_info page and the shopping_cart page, however on the installation instructions steps I didn't see any reference to adding a code within product_info.php or shopping_cart.php pages to show the related products and it doesn't show nowhere within product info or the shopping cart pages. My osC version is v.2.3.4. Am I missing something? Thanks in advance. Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted September 9, 2019 Share Posted September 9, 2019 Which Optional Related Products version are you trying to install? Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
edoscript Posted September 9, 2019 Share Posted September 9, 2019 (edited) 8 minutes ago, raiwa said: Which Optional Related Products version are you trying to install? I installed the Version Phoenix 7.1, which I now see says for osCommerce CE Phoenix 1.0.2.x. Which version is for 2.3.4? Well I guess I can look within the versions and find the right version. Right? Or maybe I should upgrade to the latest version of osC. Edited September 9, 2019 by edoscript Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted September 9, 2019 Share Posted September 9, 2019 Your choice. See the description. valquiria23 1 Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
artfulweb Posted October 5, 2019 Share Posted October 5, 2019 Hello Rainer, I installed your last version Phoenix 7.1 for Phoenix 1.0.2.x on Phoenix 1.0.2.5 and all works in the admin section but the related products do not show shop wide. I have used your past versions with no problem and just can not figure out what could be wrong this time. Your "Recently Viewed" module shows fine and I put the sort order for Related Products to show before but it but it doesn't. Do not know where else to look. Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted October 5, 2019 Share Posted October 5, 2019 (edited) 1 hour ago, artfulweb said: I installed your last version Phoenix 7.1 for Phoenix 1.0.2.x on Phoenix 1.0.2.5 and all works in the admin section but the related products do not show shop wide. I have used your past versions with no problem and just can not figure out what could be wrong this time. Your "Recently Viewed" module shows fine and I put the sort order for Related Products to show before but it but it doesn't. Do not know where else to look. Hello, Just updated my test store to 1.0.2.5 and all works and shows like expected. - make sure you have the product info module installed and switched on - make sure you have at least one related product defined for the product you are viewing For debugging: Comment out the condition which checks if related products exist like follows: // if ($num_related_products > 0) { ob_start(); include('includes/modules/content/' . $this->group . '/templates/tpl_' . basename(__FILE__)); $template = ob_get_clean(); $oscTemplate->addContent($template, $this->group); // } Then you should see at least the module title "Related Products you might like". If you see it but no products, then you have no related product defined. Edited October 5, 2019 by raiwa Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
artfulweb Posted October 5, 2019 Share Posted October 5, 2019 Thank you Rainer. Even though the uninstall has Uninstall Removes Database entries set to false it DID uninstall my database table so there are no longer any related products! I should have looked there first but thought the setting on false was safe. Back to square 1, silly me. Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted October 5, 2019 Share Posted October 5, 2019 (edited) 1 hour ago, artfulweb said: Thank you Rainer. Even though the uninstall has Uninstall Removes Database entries set to false it DID uninstall my database table so there are no longer any related products! I should have looked there first but thought the setting on false was safe. Back to square 1, silly me. I tried to replicate this, but even the constant names have been shortened, I didn't succeed to remove or empty the featured products table with the Uninstall Removes Database entries set to false. I tried uninstalling first the old module then installing the new module and also replacing the module without uninstall/ install, no way. I never lost data. Anyway the phoenix version is intended for a new installation not for an update of the previous 5 or 6 series. It's supposed for Phoenix you always start over from scratch. That's why no update instructions from 6.x versions are included. It's suposed for a new installation from scratch, you have to import the related products table from your old database, sure you did this? Edited October 5, 2019 by raiwa Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
artfulweb Posted October 5, 2019 Share Posted October 5, 2019 Yes Rainer, I did have a backup of the table (always backup before changes) so I just overwrote it and all is now ok. Just did not think to check that it had been erased. Quote Link to comment Share on other sites More sharing options...
♥raiwa Posted October 5, 2019 Share Posted October 5, 2019 Still no idea how you could get the table erased/emptied Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
♥raiwa Posted October 6, 2019 Share Posted October 6, 2019 15 hours ago, artfulweb said: Even though the uninstall has Uninstall Removes Database entries set to false it DID uninstall my database table so there are no longer any related products! I should have looked there first but thought the setting on false was safe. The setting IS safe. Please see the code, it can only trigger the drop table command if the constant is defined AND the constant is set to "True": if ( defined('MODULE_CONTENT_PI_RELATED_PRODUCTS_REMOVE_DATA') && MODULE_CONTENT_PI_RELATED_PRODUCTS_REMOVE_DATA == 'True' ) { tep_db_query("drop table if exists `products_related_products`"); } Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
♥raiwa Posted January 21, 2020 Share Posted January 21, 2020 Uploaded Version Phoenix 7.2 for Phoenix 1.0.4.x: Related Products Phoenix 7.2 Update Version Phoenix 7.2: - Updated for CE Phoenix 1.0.4.x - hooked the changes for admin/categories.php. No more core code changes! Phoenix 1.0.2.x -1.0.3.x, please use Related Products 7.0 Phoenix 1.0.1.x, please use Related Products 7.1 2.3.4.1 FROZEN and older BS3 versions, please use Related Products 6.6 Smoky Barnable and valquiria23 2 Quote About Me: http://www.oscommerce.com/forums/user/249059-raiwa/ Need help? How To Get The Help You Need Is your version of osC up to date? You'll find the latest osC community version CE Phoenix here. Public Phoenix Change Log Cheat Set on Google Sheets Link to comment Share on other sites More sharing options...
LeeFoster Posted February 6, 2020 Share Posted February 6, 2020 On 1/21/2020 at 1:24 PM, raiwa said: Uploaded Version Phoenix 7.2 for Phoenix 1.0.4.x: Related Products Phoenix 7.2 Update Version Phoenix 7.2: - Updated for CE Phoenix 1.0.4.x - hooked the changes for admin/categories.php. No more core code changes! Phoenix 1.0.2.x -1.0.3.x, please use Related Products 7.0 Phoenix 1.0.1.x, please use Related Products 7.1 2.3.4.1 FROZEN and older BS3 versions, please use Related Products 6.6 Just installed and then created a Product Tabs version of it. raiwa 1 Quote Link to comment Share on other sites More sharing options...
dculley Posted February 6, 2020 Share Posted February 6, 2020 Lee Received your post, Went to the link on your post and it takes me the page with last updated 20 August 2019. I have install that one and if this was a new one I would like to update the one I installed. 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.
Note: Your post will require moderator approval before it will be visible.