2016-09-05 3 views
1

Prestashop v1.6.1.6, Homefeatured модуль V1.8.1PrestaShop homefeatured атрибут список цветов

Prestashop на домашней странице в homefeatured модуля в стандарте не отображать атрибут цвета, как в странице категории, в продакт-list.tpl это этот смарт-код: {$product.color_list} Когда я вывожу его на домашнюю страницу, он дает мне NULL. Я начинаю искать в контроллерах, чтобы найти его и в FrontController.php я нахожу это:

if (!in_array($product['id_product'], $products_need_cache) ||  isset($colors[$product['id_product']])) { 
      $product['color_list'] = $tpl->fetch(_PS_THEME_DIR_.'product-list-colors.tpl', $this->getColorsListCacheId($product['id_product'])); 
     } else { 
      $product['color_list'] = ''; 
     } 

Я думаю, что это то, что мне нужно, но я не знаю, как я могу поставить его на homefeatured.php

Это код в homefeatured:

class HomeFeatured extends Module { 
protected static $cache_products; 

public function __construct() 
{ 
    $this->name = 'homefeatured'; 
    $this->tab = 'front_office_features'; 
    $this->version = '1.8.1'; 
    $this->author = 'PrestaShop'; 
    $this->need_instance = 0; 

    $this->bootstrap = true; 
    parent::__construct(); 

    $this->displayName = $this->l('Featured products on the homepage'); 
    $this->description = $this->l('Displays featured products in the central column of your homepage.'); 
    $this->ps_versions_compliancy = array('min' => '1.6', 'max' => '1.6.99.99'); 
} 

public function install() 
{ 
    $this->_clearCache('*'); 
    Configuration::updateValue('HOME_FEATURED_NBR', 8); 
    Configuration::updateValue('HOME_FEATURED_CAT', (int)Context::getContext()->shop->getCategory()); 
    Configuration::updateValue('HOME_FEATURED_RANDOMIZE', false); 

    if (!parent::install() 
     || !$this->registerHook('header') 
     || !$this->registerHook('addproduct') 
     || !$this->registerHook('updateproduct') 
     || !$this->registerHook('deleteproduct') 
     || !$this->registerHook('categoryUpdate') 
     || !$this->registerHook('displayHomeTab') 
     || !$this->registerHook('displayHomeTabContent') 
    ) 
     return false; 

    return true; 
} 

public function uninstall() 
{ 
    $this->_clearCache('*'); 

    return parent::uninstall(); 
} 

public function getContent() 
{ 
    $output = ''; 
    $errors = array(); 
    if (Tools::isSubmit('submitHomeFeatured')) 
    { 
     $nbr = Tools::getValue('HOME_FEATURED_NBR'); 
     if (!Validate::isInt($nbr) || $nbr <= 0) 
     $errors[] = $this->l('The number of products is invalid. Please enter a positive number.'); 

     $cat = Tools::getValue('HOME_FEATURED_CAT'); 
     if (!Validate::isInt($cat) || $cat <= 0) 
      $errors[] = $this->l('The category ID is invalid. Please choose an existing category ID.'); 

     $rand = Tools::getValue('HOME_FEATURED_RANDOMIZE'); 
     if (!Validate::isBool($rand)) 
      $errors[] = $this->l('Invalid value for the "randomize" flag.'); 
     if (isset($errors) && count($errors)) 
      $output = $this->displayError(implode('<br />', $errors)); 
     else 
     { 
      Configuration::updateValue('HOME_FEATURED_NBR', (int)$nbr); 
      Configuration::updateValue('HOME_FEATURED_CAT', (int)$cat); 
      Configuration::updateValue('HOME_FEATURED_RANDOMIZE', (bool)$rand); 
      Tools::clearCache(Context::getContext()->smarty, $this->getTemplatePath('homefeatured.tpl')); 
      $output = $this->displayConfirmation($this->l('Your settings have been updated.')); 
     } 
    } 

    return $output.$this->renderForm(); 
} 

public function hookDisplayHeader($params) 
{ 
    $this->hookHeader($params); 
} 

public function hookHeader($params) 
{ 
    if (isset($this->context->controller->php_self) && $this->context->controller->php_self == 'index') 
     $this->context->controller->addCSS(_THEME_CSS_DIR_.'product_list.css'); 
    $this->context->controller->addCSS(($this->_path).'css/homefeatured.css', 'all'); 
} 

public function _cacheProducts() 
{ 
    if (!isset(HomeFeatured::$cache_products)) 
    { 
     $category = new Category((int)Configuration::get('HOME_FEATURED_CAT'), (int)Context::getContext()->language->id); 
     $nb = (int)Configuration::get('HOME_FEATURED_NBR'); 
     if (Configuration::get('HOME_FEATURED_RANDOMIZE')) 
      HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), null, null, false, true, true, ($nb ? $nb : 8)); 
     else 
      HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position'); 
    } 

    if (HomeFeatured::$cache_products === false || empty(HomeFeatured::$cache_products)) 
     return false; 
} 

public function hookDisplayHomeTab($params) 
{ 
    if (!$this->isCached('tab.tpl', $this->getCacheId('homefeatured-tab'))) 
     $this->_cacheProducts(); 

    return $this->display(__FILE__, 'tab.tpl', $this->getCacheId('homefeatured-tab')); 
} 

public function hookDisplayHome($params) 
{ 
    if (!$this->isCached('homefeatured.tpl', $this->getCacheId())) 
    { 
     $this->_cacheProducts(); 
     $this->smarty->assign(
      array(
       'products' => HomeFeatured::$cache_products, 
       'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'), 
       'homeSize' => Image::getSize(ImageType::getFormatedName('home')), 
      ) 
     ); 
    } 

    return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId()); 
} 

public function hookDisplayHomeTabContent($params) 
{ 
    return $this->hookDisplayHome($params); 
} 

public function hookAddProduct($params) 
{ 
    $this->_clearCache('*'); 
} 

public function hookUpdateProduct($params) 
{ 
    $this->_clearCache('*'); 
} 

public function hookDeleteProduct($params) 
{ 
    $this->_clearCache('*'); 
} 

public function hookCategoryUpdate($params) 
{ 
    $this->_clearCache('*'); 
} 

public function _clearCache($template, $cache_id = NULL, $compile_id = NULL) 
{ 
    parent::_clearCache('homefeatured.tpl'); 
    parent::_clearCache('tab.tpl', 'homefeatured-tab'); 
} 

public function renderForm() 
{ 
    $fields_form = array(
     'form' => array(
      'legend' => array(
       'title' => $this->l('Settings'), 
       'icon' => 'icon-cogs' 
      ), 
      'description' => $this->l('To add products to your homepage, simply add them to the corresponding product category (default: "Home").'), 
      'input' => array(
       array(
        'type' => 'text', 
        'label' => $this->l('Number of products to be displayed'), 
        'name' => 'HOME_FEATURED_NBR', 
        'class' => 'fixed-width-xs', 
        'desc' => $this->l('Set the number of products that you would like to display on homepage (default: 8).'), 
       ), 
       array(
        'type' => 'text', 
        'label' => $this->l('Category from which to pick products to be displayed'), 
        'name' => 'HOME_FEATURED_CAT', 
        'class' => 'fixed-width-xs', 
        'desc' => $this->l('Choose the category ID of the products that you would like to display on homepage (default: 2 for "Home").'), 
       ), 
       array(
        'type' => 'switch', 
        'label' => $this->l('Randomly display featured products'), 
        'name' => 'HOME_FEATURED_RANDOMIZE', 
        'class' => 'fixed-width-xs', 
        'desc' => $this->l('Enable if you wish the products to be displayed randomly (default: no).'), 
        'values' => array(
         array(
          'id' => 'active_on', 
          'value' => 1, 
          'label' => $this->l('Yes') 
         ), 
         array(
          'id' => 'active_off', 
          'value' => 0, 
          'label' => $this->l('No') 
         ) 
        ), 
       ), 
      ), 
      'submit' => array(
       'title' => $this->l('Save'), 
      ) 
     ), 
    ); 

    $helper = new HelperForm(); 
    $helper->show_toolbar = false; 
    $helper->table = $this->table; 
    $lang = new Language((int)Configuration::get('PS_LANG_DEFAULT')); 
    $helper->default_form_language = $lang->id; 
    $helper->allow_employee_form_lang = Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') ? Configuration::get('PS_BO_ALLOW_EMPLOYEE_FORM_LANG') : 0; 
    $this->fields_form = array(); 
    $helper->id = (int)Tools::getValue('id_carrier'); 
    $helper->identifier = $this->identifier; 
    $helper->submit_action = 'submitHomeFeatured'; 
    $helper->currentIndex = $this->context->link->getAdminLink('AdminModules', false).'&configure='.$this->name.'&tab_module='.$this->tab.'&module_name='.$this->name; 
    $helper->token = Tools::getAdminTokenLite('AdminModules'); 
    $helper->tpl_vars = array(
     'fields_value' => $this->getConfigFieldsValues(), 
     'languages' => $this->context->controller->getLanguages(), 
     'id_language' => $this->context->language->id 
    ); 

    return $helper->generateForm(array($fields_form)); 
} 

public function getConfigFieldsValues() 
{ 
    return array(
     'HOME_FEATURED_NBR' => Tools::getValue('HOME_FEATURED_NBR', (int)Configuration::get('HOME_FEATURED_NBR')), 
     'HOME_FEATURED_CAT' => Tools::getValue('HOME_FEATURED_CAT', (int)Configuration::get('HOME_FEATURED_CAT')), 
     'HOME_FEATURED_RANDOMIZE' => Tools::getValue('HOME_FEATURED_RANDOMIZE', (bool)Configuration::get('HOME_FEATURED_RANDOMIZE')), 
    ); 
} 

}

ответ

1

добавить только это в этой части

public function _cacheProducts() 
{ 
    if (!isset(HomeFeatured::$cache_products)) 
    { 
     $category = new Category((int)Configuration::get('HOME_FEATURED_CAT'), (int)Context::getContext()->language->id); 
     $nb = (int)Configuration::get('HOME_FEATURED_NBR'); 
     if (Configuration::get('HOME_FEATURED_RANDOMIZE')) 
      HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), null, null, false, true, true, ($nb ? $nb : 8)); 
     else 
      HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position'); 
    } 
// PRODUCT COLOR LIST ADDON 
    $this->context->controller->addColorsToProductList(HomeFeatured::$cache_products); 

    if (HomeFeatured::$cache_products === false || empty(HomeFeatured::$cache_products)) 
     return false; 
} 
+0

Спасибо, мне пришлось также внести изменения в product-list.tpl, потому что было '{capture name =" display_color_list "} {if $ for_w! = 'Category' || ! Конфигурация :: get ('STSN_DISPLAY_COLOR_LIST')} hidden {/ if} {/ capture} ', поэтому я комментирую скрытое. –

Смежные вопросы