2017-05-16 2 views
0

メーカーのメタキーワードを使用してリストページの製造元を注文したウェブショップを維持しています。メーカーはメタキーワードによってページの別の部分に表示されます。Prestahsop:製造業者のリストにメーカーのキーワードを取得

最近、ページが破損し、すべての製造元がページの同じ部分に表示されます。

これを調べると、製造元(1.6.11に最近更新されたクライアント)を読み込むときにPrestashopがmeta_keywordsを読み込まないようです。 meta_keywordsはほとんど廃止され、めったに使われないので意味があります。しかし、このページが正しく表示されるためには、とにかく必要です。

私はまだ、ManufacturerList.tplにmeta_keywordsをロードして使用しましたか?

答えて

0

meta_keywordsを実際に取得する必要がある場合は、関数getManufacturersで選択されていません。 descriptionとshort_descriptionのみがmanufacturer_langから選択されます。

あなたは(将来のアップデートは、それを上書きすることができますので、お勧めできません)、そのファイルを変更、またはで上書き/クラス/ Manufacturer.php でオーバーライドファイルを作成することができます。そして、ファイルキャッシュ/ class_indexを削除

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; 
    } 
} 

.phpはそのファイルの上書きで再作成され、必要なデータが必要です。

関連する問題