Prestashop Prestahsop:获取制造商列表上的制造商元关键字

Prestashop Prestahsop:获取制造商列表上的制造商元关键字,prestashop,prestashop-1.6,templating,Prestashop,Prestashop 1.6,Templating,我正在维护一个webshop,其中制造商元关键字已用于在列表页面上订购制造商:制造商根据其元关键字显示在页面的不同部分 最近,页面中断,所有制造商都显示在页面的同一部分 调查这一点,似乎Prestashop在加载制造商时不再加载meta_关键字(客户端最近更新为1.6.11)。这将是有意义的,因为meta_关键字大多是过时的,很少使用-但我无论如何都需要它们来正确显示此页面 我仍然需要在ManufacturerList.tpl上加载并使用meta_关键字?如果您确实需要获取meta_关键字,则在

我正在维护一个webshop,其中制造商元关键字已用于在列表页面上订购制造商:制造商根据其元关键字显示在页面的不同部分

最近,页面中断,所有制造商都显示在页面的同一部分

调查这一点,似乎Prestashop在加载制造商时不再加载meta_关键字(客户端最近更新为1.6.11)。这将是有意义的,因为meta_关键字大多是过时的,很少使用-但我无论如何都需要它们来正确显示此页面


我仍然需要在ManufacturerList.tpl上加载并使用meta_关键字?

如果您确实需要获取meta_关键字,则在函数
getManufacturers
中不会选择它们。仅从制造商中选择描述和简短描述

您可以更改该文件(不建议更改,因为将来的更新可能会覆盖它),或者在overrides/classes/Manufacturer.php中创建一个覆盖文件 与:

类别制造商扩展了ManufacturerCore
{
公共静态函数getManufacturers($get\u nb\u products=false、$id\u lang=0、$active=true、$p=false、$n=false、$all\u group=false、$group\u by=false)
{
如果(!$id\u lang){
$id_lang=(int)配置::get('PS_lang_DEFAULT');
}
如果(!Group::isFeatureActive()){
$all_group=true;
}
$manufacturers=Db::getInstance(\u PS\u USE\u SQL\u SLAVE)->执行('
选择m.*ml.`description`,ml.`short\u description`,ml.`meta\u关键字`,ml.`meta\u description``
来自`.\u DB\u前缀`.m
'.Shop::addSqlAssociation('manufacturer','m')。'
内部连接“.”DB_PREFIX_u.manufacturer_ulang`ml ON(m.`id_manufacturer`=ml.`id_manufacturer`和ml.`id_lang`='(int)$id_lang.)
“.($active?”,其中m.`active`=1':”)
.($group_by?'group by m.'id_manufacturer':'')
m.`name`ASC命令
“.($p?“限制”。(((int)$p-1)*(int)$n)。”,“(int)$n:”);
如果($manufacturers==false){
返回false;
}
如果($get_nb_产品){
$sql_组=“”;
如果(!$all_组){
$groups=FrontController::getCurrentCustomerGroups();
$sql_groups=(count($groups)?'在('.内爆('',',$groups)。'):'=1');
}
$results=Db::getInstance(\u PS\u USE\u SQL\u SLAVE)->执行('
选择p.`id\U manufacturer`,将(不同的p.`id\U product`)计数为nb\U产品
来自`.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
“.Shop::addSqlAssociation('product','p')。”
左连接“'。”DB_前缀“manufacturer`作为m ON(m.`id\u manufacturer`=p.`id\u manufacturer`)
其中p.`id\u manufacturer`!=0和product\u shop.`visibility`不在(“无”)
“.($active?”和product_shop.`active`=1':”)”
“((组::isFeatureActive()&&$all_组?”:”并且存在(
选择1
来自`.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
左连接`.\u DB_前缀`.'category_产品`cp ON(cp.'id_category`=cg.'id_category`)
其中p.`id\u product`=cp.`id\u product`和cg.`id\u group`.$sql\u groups
)').'
按p.‘id_制造商’分组
);
$counts=array();
foreach($results作为$result){
$counts[(int)$result['id_manufacturer']]=(int)$result['nb_products'];
}
如果(计数($counts)){
foreach($key=>$manufacturer的制造商){
如果(数组_key_存在((int)$manufacturer['id_manufacturer',$counts)){
$manufacturers[$key]['nb_products']=$counts[(int)$manufacturer['id_manufacturer'];
}否则{
$manufacturers[$key]['nb_products']=0;
}
}
}
}
$total_manufacturers=计数($manufacturers);
$rewrite_settings=(int)配置::get('PS_REWRITING_settings');
对于($i=0;$i<$total\u制造商;$i++){
$manufacturers[$i]['link\u rewrite']=($rewrite\u settings?Tools::link\u rewrite($manufacturers[$i]['name']):0);
}
退回$400制造商;
}
}
然后删除要重新创建的文件cache/class_index.php,并在该文件中使用覆盖,它应该包含您需要的数据

class Manufacturer extends ManufacturerCore
{
    public static function getManufacturers($get_nb_products = false, $id_lang = 0, $active = true, $p = false, $n = false, $all_group = false, $group_by = false)
    {
        if (!$id_lang) {
            $id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
        }
        if (!Group::isFeatureActive()) {
            $all_group = true;
        }

        $manufacturers = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
        SELECT m.*, ml.`description`, ml.`short_description`, ml.`meta_keywords`, ml.`meta_description`
        FROM `'._DB_PREFIX_.'manufacturer` m
        '.Shop::addSqlAssociation('manufacturer', 'm').'
        INNER JOIN `'._DB_PREFIX_.'manufacturer_lang` ml ON (m.`id_manufacturer` = ml.`id_manufacturer` AND ml.`id_lang` = '.(int)$id_lang.')
        '.($active ? 'WHERE m.`active` = 1' : '')
        .($group_by ? ' GROUP BY m.`id_manufacturer`' : '').'
        ORDER BY m.`name` ASC
        '.($p ? ' LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n : ''));
        if ($manufacturers === false) {
            return false;
        }

        if ($get_nb_products) {
            $sql_groups = '';
            if (!$all_group) {
                $groups = FrontController::getCurrentCustomerGroups();
                $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
            }

            $results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
                    SELECT  p.`id_manufacturer`, COUNT(DISTINCT p.`id_product`) as nb_products
                    FROM `'._DB_PREFIX_.'product` p USE INDEX (product_manufacturer)
                    '.Shop::addSqlAssociation('product', 'p').'
                    LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`)
                    WHERE p.`id_manufacturer` != 0 AND product_shop.`visibility` NOT IN ("none")
                    '.($active ? ' AND product_shop.`active` = 1 ' : '').'
                    '.(Group::isFeatureActive() && $all_group ? '' : ' AND EXISTS (
                        SELECT 1
                        FROM `'._DB_PREFIX_.'category_group` cg
                        LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
                        WHERE p.`id_product` = cp.`id_product` AND cg.`id_group` '.$sql_groups.'
                    )').'
                    GROUP BY p.`id_manufacturer`'
                );

            $counts = array();
            foreach ($results as $result) {
                $counts[(int)$result['id_manufacturer']] = (int)$result['nb_products'];
            }

            if (count($counts)) {
                foreach ($manufacturers as $key => $manufacturer) {
                    if (array_key_exists((int)$manufacturer['id_manufacturer'], $counts)) {
                        $manufacturers[$key]['nb_products'] = $counts[(int)$manufacturer['id_manufacturer']];
                    } else {
                        $manufacturers[$key]['nb_products'] = 0;
                    }
                }
            }
        }

        $total_manufacturers = count($manufacturers);
        $rewrite_settings = (int)Configuration::get('PS_REWRITING_SETTINGS');
        for ($i = 0; $i < $total_manufacturers; $i++) {
            $manufacturers[$i]['link_rewrite'] = ($rewrite_settings ? Tools::link_rewrite($manufacturers[$i]['name']) : 0);
        }
        return $manufacturers;
    }
}