Jump to content

Sergio Martins

Members
  • Posts

    30
  • Joined

  • Last visited

Everything posted by Sergio Martins

  1. I'm using Prestashop 1.6.0.9 when I delete or deactivate a product, if trying to access the product's URL it generates an error 500 when it should display 404 error *ERROR* 2020/03/19 - 00:03:26: Invalid product vars at line 104 in file classes/Link.php *ERROR* 2020/03/19 - 00:05:08: Invalid product vars at line 104 in file classes/Link.php *ERROR* 2020/03/19 - 00:33:30: Invalid product vars at line 104 in file classes/Link.php .......... here is my file "classes/Link.php" <?php /* * 2007-2014 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2014 PrestaShop SA * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class LinkCore { /** @var boolean Rewriting activation */ protected $allow; protected $url; public static $cache = array('page' => array()); public $protocol_link; public $protocol_content; protected $ssl_enable; protected static $category_disable_rewrite = null; /** * Constructor (initialization only) */ public function __construct($protocol_link = null, $protocol_content = null) { $this->allow = (int)Configuration::get('PS_REWRITING_SETTINGS'); $this->url = $_SERVER['SCRIPT_NAME']; $this->protocol_link = $protocol_link; $this->protocol_content = $protocol_content; if (!defined('_PS_BASE_URL_')) define('_PS_BASE_URL_', Tools::getShopDomain(true)); if (!defined('_PS_BASE_URL_SSL_')) define('_PS_BASE_URL_SSL_', Tools::getShopDomainSsl(true)); if (Link::$category_disable_rewrite === null) Link::$category_disable_rewrite = array(Configuration::get('PS_HOME_CATEGORY'), Configuration::get('PS_ROOT_CATEGORY')); $this->ssl_enable = Configuration::get('PS_SSL_ENABLED'); } /** * Create a link to delete a product * * @param mixed $product ID of the product OR a Product object * @param int $id_picture ID of the picture to delete * @return string */ public function getProductDeletePictureLink($product, $id_picture) { $url = $this->getProductLink($product); return $url.((strpos($url, '?')) ? '&' : '?').'&deletePicture='.$id_picture; } /** * Create a link to a product * * @param mixed $product Product object (can be an ID product, but deprecated) * @param string $alias * @param string $category * @param string $ean13 * @param int $id_lang * @param int $id_shop (since 1.5.0) ID shop need to be used when we generate a product link for a product in a cart * @param int $ipa ID product attribute * @return string */ public function getProductLink($product, $alias = null, $category = null, $ean13 = null, $id_lang = null, $id_shop = null, $ipa = 0, $force_routes = false, $relative_protocol = false) { $dispatcher = Dispatcher::getInstance(); if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, null, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($product)) { if (is_array($product) && isset($product['id_product'])) $product = new Product($product['id_product'], false, $id_lang, $id_shop); elseif ((int)$product) $product = new Product((int)$product, false, $id_lang, $id_shop); else throw new PrestaShopException('Invalid product vars'); } // Set available keywords $params = array(); $params['id'] = $product->id; $params['rewrite'] = (!$alias) ? $product->getFieldByLang('link_rewrite') : $alias; $params['ean13'] = (!$ean13) ? $product->ean13 : $ean13; $params['meta_keywords'] = Tools::str2url($product->getFieldByLang('meta_keywords')); $params['meta_title'] = Tools::str2url($product->getFieldByLang('meta_title')); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'manufacturer', $id_shop)) $params['manufacturer'] = Tools::str2url($product->isFullyLoaded ? $product->manufacturer_name : Manufacturer::getNameById($product->id_manufacturer)); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'supplier', $id_shop)) $params['supplier'] = Tools::str2url($product->isFullyLoaded ? $product->supplier_name : Supplier::getNameById($product->id_supplier)); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'price', $id_shop)) $params['price'] = $product->isFullyLoaded ? $product->price : Product::getPriceStatic($product->id, false, null, 6, null, false, true, 1, false, null, null, null, $product->specificPrice); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'tags', $id_shop)) $params['tags'] = Tools::str2url($product->getTags($id_lang)); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'category', $id_shop)) $params['category'] = (!is_null($product->category) && !empty($product->category)) ? Tools::str2url($product->category) : Tools::str2url($category); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'reference', $id_shop)) $params['reference'] = Tools::str2url($product->reference); if ($dispatcher->hasKeyword('product_rule', $id_lang, 'categories', $id_shop)) { $params['category'] = (!$category) ? $product->category : $category; $cats = array(); foreach ($product->getParentCategories() as $cat) if (!in_array($cat['id_category'], Link::$category_disable_rewrite))//remove root and home category from the URL $cats[] = $cat['link_rewrite']; $params['categories'] = implode('/', $cats); } $anchor = $ipa ? $product->getAnchor($ipa) : ''; return $url.$dispatcher->createUrl('product_rule', $id_lang, $params, $force_routes, $anchor, $id_shop); } /** * Create a link to a category * * @param mixed $category Category object (can be an ID category, but deprecated) * @param string $alias * @param int $id_lang * @param string $selected_filters Url parameter to autocheck filters of the module blocklayered * @return string */ public function getCategoryLink($category, $alias = null, $id_lang = null, $selected_filters = null, $id_shop = null, $relative_protocol = false) { if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, null, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop); if (!is_object($category)) $category = new Category($category, $id_lang); // Set available keywords $params = array(); $params['id'] = $category->id; $params['rewrite'] = (!$alias) ? $category->link_rewrite : $alias; $params['meta_keywords'] = Tools::str2url($category->getFieldByLang('meta_keywords')); $params['meta_title'] = Tools::str2url($category->getFieldByLang('meta_title')); // Selected filters is used by the module blocklayered $selected_filters = is_null($selected_filters) ? '' : $selected_filters; if (empty($selected_filters)) $rule = 'category_rule'; else { $rule = 'layered_rule'; $params['selected_filters'] = $selected_filters; } return $url.Dispatcher::getInstance()->createUrl($rule, $id_lang, $params, $this->allow, '', $id_shop); } /** * Create a link to a CMS category * * @param mixed $category CMSCategory object (can be an ID category, but deprecated) * @param string $alias * @param int $id_lang * @return string */ public function getCMSCategoryLink($cms_category, $alias = null, $id_lang = null, $id_shop = null, $relative_protocol = false) { if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, null, $relative_protocol = false).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($cms_category)) { if ($alias !== null && !$dispatcher->hasKeyword('cms_category_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('cms_category_rule', $id_lang, 'meta_title', $id_shop)) return $url.$dispatcher->createUrl('cms_category_rule', $id_lang, array('id' => (int)$cms_category, 'rewrite' => (string)$alias), $this->allow, '', $id_shop); $cms_category = new CMSCategory($cms_category, $id_lang); } // Set available keywords $params = array(); $params['id'] = $cms_category->id; $params['rewrite'] = (!$alias) ? $cms_category->link_rewrite : $alias; $params['meta_keywords'] = Tools::str2url($cms_category->meta_keywords); $params['meta_title'] = Tools::str2url($cms_category->meta_title); return $url.$dispatcher->createUrl('cms_category_rule', $id_lang, $params, $this->allow, '', $id_shop); } /** * Create a link to a CMS page * * @param mixed $cms CMS object (can be an ID CMS, but deprecated) * @param string $alias * @param bool $ssl * @param int $id_lang * @return string */ public function getCMSLink($cms, $alias = null, $ssl = null, $id_lang = null, $id_shop = null, $relative_protocol = false) { if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, $ssl, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($cms)) { if ($alias !== null && !$dispatcher->hasKeyword('cms_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('cms_rule', $id_lang, 'meta_title', $id_shop)) return $url.$dispatcher->createUrl('cms_rule', $id_lang, array('id' => (int)$cms, 'rewrite' => (string)$alias), $this->allow, '', $id_shop); $cms = new CMS($cms, $id_lang); } // Set available keywords $params = array(); $params['id'] = $cms->id; $params['rewrite'] = (!$alias) ? (is_array($cms->link_rewrite) ? $cms->link_rewrite[(int)$id_lang] : $cms->link_rewrite) : $alias; $params['meta_keywords'] = ''; if (isset($cms->meta_keywords) && !empty($cms->meta_keywords)) $params['meta_keywords'] = is_array($cms->meta_keywords) ? Tools::str2url($cms->meta_keywords[(int)$id_lang]) : Tools::str2url($cms->meta_keywords); $params['meta_title'] = ''; if (isset($cms->meta_title) && !empty($cms->meta_title)) $params['meta_title'] = is_array($cms->meta_title) ? Tools::str2url($cms->meta_title[(int)$id_lang]) : Tools::str2url($cms->meta_title); return $url.$dispatcher->createUrl('cms_rule', $id_lang, $params, $this->allow, '', $id_shop); } /** * Create a link to a supplier * * @param mixed $supplier Supplier object (can be an ID supplier, but deprecated) * @param string $alias * @param int $id_lang * @return string */ public function getSupplierLink($supplier, $alias = null, $id_lang = null, $id_shop = null, $relative_protocol = false) { if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, null, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($supplier)) { if ($alias !== null && !$dispatcher->hasKeyword('supplier_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('supplier_rule', $id_lang, 'meta_title', $id_shop)) return $url.$dispatcher->createUrl('supplier_rule', $id_lang, array('id' => (int)$supplier, 'rewrite' => (string)$alias), $this->allow, '', $id_shop); $supplier = new Supplier($supplier, $id_lang); } // Set available keywords $params = array(); $params['id'] = $supplier->id; $params['rewrite'] = (!$alias) ? $supplier->link_rewrite : $alias; $params['meta_keywords'] = Tools::str2url($supplier->meta_keywords); $params['meta_title'] = Tools::str2url($supplier->meta_title); return $url.$dispatcher->createUrl('supplier_rule', $id_lang, $params, $this->allow, '', $id_shop); } /** * Create a link to a manufacturer * * @param mixed $manufacturer Manufacturer object (can be an ID supplier, but deprecated) * @param string $alias * @param int $id_lang * @return string */ public function getManufacturerLink($manufacturer, $alias = null, $id_lang = null, $id_shop = null, $relative_protocol = false) { if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, null, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop); $dispatcher = Dispatcher::getInstance(); if (!is_object($manufacturer)) { if ($alias !== null && !$dispatcher->hasKeyword('manufacturer_rule', $id_lang, 'meta_keywords', $id_shop) && !$dispatcher->hasKeyword('manufacturer_rule', $id_lang, 'meta_title', $id_shop)) return $url.$dispatcher->createUrl('manufacturer_rule', $id_lang, array('id' => (int)$manufacturer, 'rewrite' => (string)$alias), $this->allow, '', $id_shop); $manufacturer = new Manufacturer($manufacturer, $id_lang); } // Set available keywords $params = array(); $params['id'] = $manufacturer->id; $params['rewrite'] = (!$alias) ? $manufacturer->link_rewrite : $alias; $params['meta_keywords'] = Tools::str2url($manufacturer->meta_keywords); $params['meta_title'] = Tools::str2url($manufacturer->meta_title); return $url.$dispatcher->createUrl('manufacturer_rule', $id_lang, $params, $this->allow, '', $id_shop); } /** * Create a link to a module * * @since 1.5.0 * @param string $module Module name * @param string $process Action name * @param int $id_lang * @return string */ public function getModuleLink($module, $controller = 'default', array $params = array(), $ssl = null, $id_lang = null, $id_shop = null, $relative_protocol = false) { if (!$id_lang) $id_lang = Context::getContext()->language->id; $url = $this->getBaseLink($id_shop, $ssl, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop); // Set available keywords $params['module'] = $module; $params['controller'] = $controller ? $controller : 'default'; // If the module has its own route ... just use it ! if (Dispatcher::getInstance()->hasRoute('module-'.$module.'-'.$controller, $id_lang, $id_shop)) return $this->getPageLink('module-'.$module.'-'.$controller, $ssl, $id_lang, $params); else return $url.Dispatcher::getInstance()->createUrl('module', $id_lang, $params, $this->allow, '', $id_shop); } /** * Use controller name to create a link * * @param string $controller * @param boolean $with_token include or not the token in the url * @return string url */ public function getAdminLink($controller, $with_token = true) { $id_lang = Context::getContext()->language->id; $params = $with_token ? array('token' => Tools::getAdminTokenLite($controller)) : array(); return Dispatcher::getInstance()->createUrl($controller, $id_lang, $params, false); } /** * Returns a link to a product image for display * Note: the new image filesystem stores product images in subdirectories of img/p/ * * @param string $name rewrite link of the image * @param string $ids id part of the image filename - can be "id_product-id_image" (legacy support, recommended) or "id_image" (new) * @param string $type */ public function getImageLink($name, $ids, $type = null) { $not_default = false; // legacy mode or default image $theme = ((Shop::isFeatureActive() && file_exists(_PS_PROD_IMG_DIR_.$ids.($type ? '-'.$type : '').'-'.(int)Context::getContext()->shop->id_theme.'.jpg')) ? '-'.Context::getContext()->shop->id_theme : ''); if ((Configuration::get('PS_LEGACY_IMAGES') && (file_exists(_PS_PROD_IMG_DIR_.$ids.($type ? '-'.$type : '').$theme.'.jpg'))) || ($not_default = strpos($ids, 'default') !== false)) { if ($this->allow == 1 && !$not_default) $uri_path = __PS_BASE_URI__.$ids.($type ? '-'.$type : '').$theme.'/'.$name.'.jpg'; else $uri_path = _THEME_PROD_DIR_.$ids.($type ? '-'.$type : '').$theme.'.jpg'; } else { // if ids if of the form id_product-id_image, we want to extract the id_image part $split_ids = explode('-', $ids); $id_image = (isset($split_ids[1]) ? $split_ids[1] : $split_ids[0]); $theme = ((Shop::isFeatureActive() && file_exists(_PS_PROD_IMG_DIR_.Image::getImgFolderStatic($id_image).$id_image.($type ? '-'.$type : '').'-'.(int)Context::getContext()->shop->id_theme.'.jpg')) ? '-'.Context::getContext()->shop->id_theme : ''); if ($this->allow == 1) $uri_path = __PS_BASE_URI__.$id_image.($type ? '-'.$type : '').$theme.'/'.$name.'.jpg'; else $uri_path = _THEME_PROD_DIR_.Image::getImgFolderStatic($id_image).$id_image.($type ? '-'.$type : '').$theme.'.jpg'; } return $this->protocol_content.Tools::getMediaServer($uri_path).$uri_path; } public function getMediaLink($filepath) { return $this->protocol_content.Tools::getMediaServer($filepath).$filepath; } /** * Create a simple link * * @param string $controller * @param bool $ssl * @param int $id_lang * @param string|array $request * @param bool $request_url_encode Use URL encode * * @return string Page link */ public function getPageLink($controller, $ssl = null, $id_lang = null, $request = null, $request_url_encode = false, $id_shop = null, $relative_protocol = false) { //If $controller contains '&' char, it means that $controller contains request data and must be parsed first $p = strpos($controller, '&'); if ($p !== false) { $request = substr($controller, $p + 1); $request_url_encode = false; $controller = substr($controller, 0, $p); } $controller = Tools::strReplaceFirst('.php', '', $controller); if (!$id_lang) $id_lang = (int)Context::getContext()->language->id; //need to be unset because getModuleLink need those params when rewrite is enable if (is_array($request)) { if (isset($request['module'])) unset($request['module']); if (isset($request['controller'])) unset($request['controller']); } else { // @FIXME html_entity_decode has been added due to '&amp;' => '%3B' ... $request = html_entity_decode($request); if ($request_url_encode) $request = urlencode($request); parse_str($request, $request); } $uri_path = Dispatcher::getInstance()->createUrl($controller, $id_lang, $request, false, '', $id_shop); return $this->getBaseLink($id_shop, $ssl, $relative_protocol).$this->getLangLink($id_lang, null, $id_shop).ltrim($uri_path, '/'); } public function getCatImageLink($name, $id_category, $type = null) { if($this->allow == 1 && $type) $uri_path = __PS_BASE_URI__.'c/'.$id_category.'-'.$type.'/'.$name.'.jpg'; else $uri_path = _THEME_CAT_DIR_.$id_category.($type ? '-'.$type : '').'.jpg'; return $this->protocol_content.Tools::getMediaServer($uri_path).$uri_path; } /** * Create link after language change, for the change language block * * @param integer $id_lang Language ID * @return string link */ public function getLanguageLink($id_lang, Context $context = null) { if (!$context) $context = Context::getContext(); $params = $_GET; unset($params['isolang'], $params['controller']); if (!$this->allow) $params['id_lang'] = $id_lang; else unset($params['id_lang']); $controller = Dispatcher::getInstance()->getController(); if (!empty(Context::getContext()->controller->php_self)) $controller = Context::getContext()->controller->php_self; if ($controller == 'product' && isset($params['id_product'])) return $this->getProductLink((int)$params['id_product'], null, null, null, (int)$id_lang); elseif ($controller == 'category' && isset($params['id_category'])) return $this->getCategoryLink((int)$params['id_category'], null, (int)$id_lang); elseif ($controller == 'supplier' && isset($params['id_supplier'])) return $this->getSupplierLink((int)$params['id_supplier'], null, (int)$id_lang); elseif ($controller == 'manufacturer' && isset($params['id_manufacturer'])) return $this->getManufacturerLink((int)$params['id_manufacturer'], null, (int)$id_lang); elseif ($controller == 'cms' && isset($params['id_cms'])) return $this->getCMSLink((int)$params['id_cms'], null, false, (int)$id_lang); elseif ($controller == 'cms' && isset($params['id_cms_category'])) return $this->getCMSCategoryLink((int)$params['id_cms_category'], null, (int)$id_lang); elseif (isset($params['fc']) && $params['fc'] == 'module') { $module = Validate::isModuleName(Tools::getValue('module')) ? Tools::getValue('module') : ''; if (!empty($module)) { unset($params['fc'], $params['module']); return $this->getModuleLink($module, $controller, $params, null, (int)$id_lang); } } return $this->getPageLink($controller, null, $id_lang, $params); } public function goPage($url, $p) { $url = rtrim(str_replace('?&', '?', $url), '?'); return $url.($p == 1 ? '' : (!strstr($url, '?') ? '?' : '&').'p='.(int)$p); } /** * Get pagination link * * @param string $type Controller name * @param int $id_object * @param boolean $nb Show nb element per page attribute * @param boolean $sort Show sort attribute * @param boolean $pagination Show page number attribute * @param boolean $array If false return an url, if true return an array */ public function getPaginationLink($type, $id_object, $nb = false, $sort = false, $pagination = false, $array = false) { // If no parameter $type, try to get it by using the controller name if (!$type && !$id_object) { $method_name = 'get'.Dispatcher::getInstance()->getController().'Link'; if (method_exists($this, $method_name) && isset($_GET['id_'.Dispatcher::getInstance()->getController()])) { $type = Dispatcher::getInstance()->getController(); $id_object = $_GET['id_'.$type]; } } if ($type && $id_object) $url = $this->{'get'.$type.'Link'}($id_object, null); else { if (isset(Context::getContext()->controller->php_self)) $name = Context::getContext()->controller->php_self; else $name = Dispatcher::getInstance()->getController(); $url = $this->getPageLink($name); } $vars = array(); $vars_nb = array('n', 'search_query'); $vars_sort = array('orderby', 'orderway'); $vars_pagination = array('p'); foreach ($_GET as $k => $value) { if ($k != 'id_'.$type && $k != 'controller') { if (Configuration::get('PS_REWRITING_SETTINGS') && ($k == 'isolang' || $k == 'id_lang')) continue; $if_nb = (!$nb || ($nb && !in_array($k, $vars_nb))); $if_sort = (!$sort || ($sort && !in_array($k, $vars_sort))); $if_pagination = (!$pagination || ($pagination && !in_array($k, $vars_pagination))); if ($if_nb && $if_sort && $if_pagination) { if (!is_array($value)) $vars[urlencode($k)] = $value; else { foreach (explode('&', http_build_query(array($k => $value), '', '&')) as $key => $val) { $data = explode('=', $val); $vars[urldecode($data[0])] = $data[1]; } } } } } if (!$array) if (count($vars)) return $url.(($this->allow == 1 || $url == $this->url) ? '?' : '&').http_build_query($vars, '', '&'); else return $url; $vars['requestUrl'] = $url; if ($type && $id_object) $vars['id_'.$type] = (is_object($id_object) ? (int)$id_object->id : (int)$id_object); if (!$this->allow == 1) $vars['controller'] = Dispatcher::getInstance()->getController(); return $vars; } public function addSortDetails($url, $orderby, $orderway) { return $url.(!strstr($url, '?') ? '?' : '&').'orderby='.urlencode($orderby).'&orderway='.urlencode($orderway); } protected function getLangLink($id_lang = null, Context $context = null, $id_shop = null) { if (!$context) $context = Context::getContext(); if ((!$this->allow && in_array($id_shop, array($context->shop->id, null))) || !Language::isMultiLanguageActivated($id_shop) || !(int)Configuration::get('PS_REWRITING_SETTINGS', null, null, $id_shop)) return ''; if (!$id_lang) $id_lang = $context->language->id; return Language::getIsoById($id_lang).'/'; } protected function getBaseLink($id_shop = null, $ssl = null, $relative_protocol = false) { static $force_ssl = null; if ($ssl === null) { if ($force_ssl === null) $force_ssl = (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')); $ssl = $force_ssl; } if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && $id_shop !== null) $shop = new Shop($id_shop); else $shop = Context::getContext()->shop; if ($relative_protocol) $base = '//'.($ssl && $this->ssl_enable ? $shop->domain_ssl : $shop->domain); else $base = (($ssl && $this->ssl_enable) ? 'https://'.$shop->domain_ssl : 'http://'.$shop->domain); return $base.$shop->getBaseURI(); } }
  2. I'm using PrestaShop 1.6, on Product Page on images I have this: {if $have_image} <span id="view_full_size"> {if $jqZoomEnabled && $have_image && !$content_only} <a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}" itemprop="url"> <img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/> </a> {else} <img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/> {if !$content_only} <span class="span_link no-print">{l s='View larger'}</span> {/if} {/if} </span> {else} <span id="view_full_size"> {if isset($product_manufacturer->id)} <img itemprop="image" src="{$img_manu_dir}{$product_manufacturer->id}-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/> {else} <img itemprop="image" src="{$img_prod_dir}{$lang_iso}-default-large_default.jpg" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/> {/if} {if !$content_only} <span class="span_link"> {l s='View larger'} </span> {/if} </span> {/if} Like this if a product don't have an image it show manufacture logo. How can I do the same to product accessory's take a look at: https://hpecas.com/dobradicas-astes/dobradica-direita-hp-dv6-1000-dv6-1100-dv6-1200-576010-001_568.html on this I have an accessory without image: https://hpecas.com/dobradicas-astes/kit-dobradicas-hp-dv6-1000-dv6-1100-dv6-1200-512365-001-576010-001-576011-001-fbut3005010-fbut3007010-fbut3054010-fbut3055010_570.html
  3. I have already seen the links to edit categories and CMS. What functionalities are they?
  4. Tanks it works great you should create a check to verify if store is SSL, and depending on that {$base_dir} or {$base_dir_ssl}. I have a suggestion, on FO if the page is Category link to edit a Category like the Product Page, the same for CMS pages. Anyway great job.
  5. I have installed on PS1.6.1.10 and don't show on Front Office. When I load a front page the toolbar appear and after the page load disappear.
  6. Can anyone help? I would also like to know how to apply the enable\disable function.
  7. The solution: https://www.prestashop.com/forums/topic/457623-add-backoffice-total-sold-to-columns-products-list/?do=findComment&comment=2474685
  8. After placing an order in BackOffice, if you click the link "Go to payment page to process the payment": http://mysite.com /order_?step=3&recover_cart=13456&token_cart=8bea5919b427434b948b6b3572580b07 Automatically redirects to: https://mysite.com /order?isPaymentStep=true The cart is ok with the products selected, the problem arises after accepting the Terms and Conditions, not letting choose which payment method, it automatically redirects to PayPal: https://mysite.com /?fc=module&module=paypal&controller=confirm&get_confirmation=1 PS1.6.0.9
  9. I have the same problem. I have created a custom field like description field, but with other info. On front-office everything is fine, the field appears on product page and, on search results works great. But if i need to search on back-office for the same thing as on that field noting is found. Help please.
  10. Hi, i need help, how can i add custom columns in product list in back office, what i'd like is get Total sold value like it show on Best Sellers. Using PS v.1.6.0.9
  11. Hi, i need help to add custom columns in product list in backoffice, what i'd like is get Total sold value like it show on Best Sellers. PS1.6.0.9
  12. Great module but, the description shold be the product title, in my case show other text i check this page: http://hpecas.com/en/hard-drives-for-servers-hp/431789-b21-hp-160gb-15gbs-54k-rpm-25-sff-sata-hp-g1-g7-hdd_1857.html On this page: https://developers.facebook.com/tools/debug/ Can you please see and correct this bug?
  13. dont know if this help: for themes the tag is {$lang_iso} Example: <html lang="{$lang_iso}" xml:lang="{$lang_iso}"> Result for Portuguese: <html lang="pt" xml:lang="pt"> Result for English: <html lang="en" xml:lang="en"> so you just need to send this variable on hubtalk.tpl
  14. Hi, this module is amazing, but there is room for further improving, here is my suggestions: 1 - Correct the Avatar if i try to change the avatar after the upload of a new one i see the old. An option to remove avatar is missing. 2 - In the Dashboard on Visitors list missing something that distinguishes it from which site is each visitor for those who has several websites. 3 - I can't find an option to all operators see all visitors, deactivating the limits of Visitors Settings. 4 - In product manager its nice if i could send or copy product page link to send to a customer on chat. 5 - Make Chat-Widget work on multilanguage site, to the widget language set according to the page's language. 6 - In some websites there are many operators and its nice if one operator can send a chat to other operator. For example a customer puts me a question. Can return a product. But who deals with these issues is another operator, it would help me to forward this chat to another operator. 7 - Another idea is that operators can chat between them, to be able to help each other. 8 - Would be nice to be able to add our own predefined messages.
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More