2017-02-06 2 views
1

manufacture-list.tplファイルにblocklayered(Layered navigation block)モジュールを使用します。その中で私は、このコードを使用:ブロックブロッキングを呼び出してください。製造元tplファイル(Prestashop内)

{include file='./modules/blocklayered/blocklayered.tpl'} 

をしかし、私はすでに、カテゴリページに表示されている製造・ページ、左の列に積層フィルタを望んで働いていません。

答えて

0

これはできません。この質問は何度も尋ねられており、回答は常に同じです。

ブロック化されたモジュールはカテゴリで動作するように構築されており、他の目的には使用できません。

メーカーのリストページを使用し続けることですが、メーカーごとに定義されたフィルタを使用してルートカテゴリを指すように各製造元のリンクを変更してください。ブロックされたアクティブで、必要なメーカーでフィルタリングされた状態で、ユーザーはルートカテゴリにリダイレクトされます。

私はクライアントにこのようにしました。(メーカーにアルファベット順にソートし、最初の文字で高速アクセスメニューをグループ化するコードをいくつか追加しました)。

ファイル/override/controllers/front/ManufacturerController.php

class ManufacturerController extends ManufacturerControllerCore 
{ 
    protected $blocklayered = null; 

    public function __construct() 
    { 
     parent::__construct(); 

     require_once(_PS_MODULE_DIR_ . 'blocklayered/blocklayered.php'); 
     $this->blocklayered = new BlockLayered(); 
    } 

    /** 
    * Assign template vars if displaying the manufacturer list 
    */ 
    protected function assignAll() 
    { 
     if (Configuration::get('PS_DISPLAY_SUPPLIERS')) { 
      $data = Manufacturer::getManufacturers(true, $this->context->language->id, true, false, false, false); 

      $no_products = array(); 
      foreach ($data as $key => $item) { 
       $data[$key]['link'] = Context::getContext()->link->getCategoryLink(MY_CATEGORY_ROOT, null, null, str_replace($this->getAnchor(), '_', Tools::link_rewrite($this->blocklayered->l('Manufacturer'))) . $this->getAnchor() . str_replace($this->getAnchor(), '_', Tools::link_rewrite($data[$key]['name']))); 
       $data[$key]['image'] = (!file_exists(_PS_MANU_IMG_DIR_.$item['id_manufacturer'].'-'.ImageType::getFormatedName('medium').'.jpg')) ? false : $item['id_manufacturer']; 
       if ($item['nb_products'] == 0) 
       { 
        $no_products[] = $key; 
       } 
      } 

      foreach ($no_products as $key) 
      { 
       unset($data[$key]); 
      } 

      $manufacturersByLetters = array(); 

      foreach ($data as $item) 
      { 
       $letter = strtoupper(substr($item['name'], 0, 1)); 
       if (! isset($manufacturersByLetters[$letter])) 
       { 
        $manufacturersByLetters[$letter] = array(); 
       } 
       $manufacturersByLetters[$letter][] = $item; 
      } 

      ksort($manufacturersByLetters, SORT_STRING); 
      foreach ($manufacturersByLetters as &$manufacturers) 
      { 
       usort($manufacturers, function($manu1, $manu2) { 
        return strcmp(strtolower($manu1['name']), strtolower($manu2['name'])); 
       }); 
      } 
      unset($manufacturers); 

      $this->context->smarty->assign(array(
       'nbManufacturers' => count($data), 
       'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')), 
       'manufacturersByLetters' => $manufacturersByLetters 
      )); 
     } else { 
      $this->context->smarty->assign('nbManufacturers', 0); 
     } 
    } 

    protected function getAnchor() 
    { 
     static $anchor = null; 
     if ($anchor === null) 
      if (!$anchor = Configuration::get('PS_ATTRIBUTE_ANCHOR_SEPARATOR')) 
       $anchor = '-'; 
     return $anchor; 
    } 
} 

ファイル/themes/my_theme/manufacturer-list.tpl:あなたの貴重な応答のための

{capture name=path}{l s='Nos marques'}{/capture} 

<h1> 
    <span>{l s='Nos Marques'}</span> 
</h1> 
{if isset($errors) AND $errors} 
    {include file="$tpl_dir./errors.tpl"} 
{else} 
    {if $nbManufacturers > 0} 
     <div id="manufacturer_menu"> 
      <span id="manufacturer_menu_title">{l s='Accéder directement à une lettre'}</span> 
      <ul> 
       {foreach from=$manufacturersByLetters item=manufacturers key=letter name=manufacturersByLetters} 
        <li{if $smarty.foreach.manufacturersByLetters.first} class="active"{/if}><a href="#manufacturer_list_letter_{$letter}">{$letter}</a></li> 
       {/foreach} 
      </ul> 
     </div> 

     {foreach from=$manufacturersByLetters item=manufacturers key=letter name=manufacturersByLetters} 
      <h2 class="manufacturer_list_letter_wrapper{if $smarty.foreach.manufacturersByLetters.first} first{/if}"> 
       <span class="manufacturer_list_letter" id="manufacturer_list_letter_{$letter}">{$letter}</span> 
      </h2> 
      <ul class="manufacturer_list row"> 
      {strip} 
       {foreach from=$manufacturers item=manufacturer name=manufacturers} 
        <li class="col-lg-1 col-md-2 col-sm-3 col-xs-6"> 
         <div class="row"> 
          <div class="col-xs-12"> 
           <a class="manufacturer_list_name_wrapper" href="{$manufacturer.link|escape:'html':'UTF-8'}" title="{$manufacturer.name|escape:'html':'UTF-8'}"> 
            <div> 
             {if isset($manufacturer.image) && $manufacturer.image} 
              <img src="{$img_manu_dir}{$manufacturer.image|escape:'html':'UTF-8'}-medium_default.jpg" alt="{$manufacturer.name|escape:'html':'UTF-8'}" /> 
             {else} 
              <span class="manufacturer_list_name">{$manufacturer.name|escape:'html':'UTF-8'}</span> 
             {/if} 
            </div> 
           </a> 
           {if isset($manufacturer.nb_products) && $manufacturer.nb_products > 0} 
            <a class="manufacturer_list_link" href="{$manufacturer.link|escape:'html':'UTF-8'}" title="{$manufacturer.name|escape:'html':'UTF-8'}"> 
             <span class="manufacturer_list_link_name">{$manufacturer.name|escape:'html':'UTF-8'}</span> 
             <span class="manufacturer_list_link_action"> 
              {if isset($manufacturer.nb_products) && $manufacturer.nb_products == 1} 
               {l s='Afficher le produit'} 
              {elseif isset($manufacturer.nb_products) && $manufacturer.nb_products > 0} 
               {l s='Afficher les %d produits' sprintf=$manufacturer.nb_products|intval} 
              {/if} 
              <i class="icon-chevron-right right"></i> 
             </span> 
            </a> 
           {/if} 
          </div> 
         </div> 
        </li> 
       {/foreach} 
      {/strip} 
      </ul> 
     {/foreach} 
     <script type="text/javascript"> 
      $("#manufacturer_menu a").on('click', function() { 
       var $a = $(this) 
       $('html, body').animate({ 
        scrollTop: $($a.attr('href')).offset().top 
       }, 750); 
       return false; 
      }); 
     </script> 
    {/if} 
{/if} 
+0

おかげで、私たちは持っているように、このように我々は、製造・ページではなく、他のリストでのみ製造の一覧を取得しますカテゴリと他のフィルタリストをカテゴリページに表示するので、製造元ページでもカテゴリリストフィルタを取得する他の方法はありますか? – bhatt

関連する問題