PrestaShop homefeatured属性颜色列表

时间:2016-09-05 15:24:31

标签: php colors module attributes prestashop

Prestashop v1.6.1.6,Homefeatured module v1.8.1

Prestashop在homefeatured模块的主页上标准没有显示属性颜色,如类别页面,在product-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 个答案:

答案 0 :(得分: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;
}