1
我想在我的manufacture-list.tpl
文件中使用塊狀(分層導航塊)模塊。在我用這個代碼:調用塊狀模塊製造tpl文件在prestashop
{include file='./modules/blocklayered/blocklayered.tpl'}
但它不工作,我想在製造頁面,這已經是出現在分類頁面左欄分層過濾。
我想在我的manufacture-list.tpl
文件中使用塊狀(分層導航塊)模塊。在我用這個代碼:調用塊狀模塊製造tpl文件在prestashop
{include file='./modules/blocklayered/blocklayered.tpl'}
但它不工作,我想在製造頁面,這已經是出現在分類頁面左欄分層過濾。
這是不可能的。這個問題已經被問了很多次,而且迴應總是一樣的。
Blocklayered模塊構建爲與類別一起使用,不能用於其他任何事情。
解決方案是繼續使用製造商列表頁面,但是使用爲製造商定義的過濾器更改每個製造商的鏈接以指向您的根類別。然後,用戶將被重定向到您的根類別,並使用blocklayered active並在想要的製造商上進行篩選。
我以這種方式爲我的客戶做了這件事:(我已經添加了一些代碼按字母順序對製造商進行分類,並用快速訪問菜單的第一個字母對其進行分組)。
文件/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}
感謝您的寶貴迴應,但以這種方式,我們將只得到生產製造頁面列表,而不是其他列表,就像我們類別和其他過濾器列表在類別頁面,所以任何其他方式獲得類別列表過濾器也在製造頁面? – bhatt