2017-02-06 3 views
1

Ich möchte Blocklayered (Layered Navigation Block) -Modul in meiner manufacture-list.tpl Datei verwenden. Darin habe ich diesen Code:Call blocklayered Modul in der Herstellung tpl-Datei in Prestashop

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

Aber es funktioniert nicht, dass ich in der linken Spalte Schichtfilter will bei der Herstellung Seite, die bereits in der Kategorie Seite erscheinen.

Antwort

0

Es ist nicht möglich. Diese Frage wurde oft gestellt und die Antwort ist immer dieselbe.

Blocklayered Modul ist gebaut, um mit Kategorien zu arbeiten und kann nicht für etwas anderes verwendet werden.

Eine Lösung besteht darin, weiterhin die Herstellerlistenseite zu verwenden, aber den Link jedes Herstellers so zu ändern, dass er mit einem für Ihren Hersteller definierten Filter auf Ihre Stammkategorie verweist. Der Benutzer wird dann zu der Root-Kategorie mit dem blocklayered Active weitergeleitet und auf dem gewünschten Hersteller gefiltert.

Ich tat es für meinen Kunden auf diese Weise: (Ich habe einen Code hinzugefügt, um die Hersteller alphabetisch zu sortieren und sie mit ihrem ersten Buchstaben mit einem Schnellzugriffsmenü zu gruppieren).

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

Datei /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

Vielen Dank für Ihre wertvolle Antwort, aber auf diese Weise werden wir nur Liste in der Fertigung Seite herstellen lassen, nicht andere Liste, wie wir Kategorie und andere Filterliste in Kategorie-Seite, so jede andere Möglichkeit, Kategorie Liste Filter auch in der Hersteller-Seite zu bekommen? – bhatt

Verwandte Themen