カスタムナビゲーション(デュアルナビゲーション)でのみメーカーとカテゴリをフィルター
-
22-10-2019 - |
質問
私は、ウェブサイトを簡単にナビゲートできるように、2セットのレイヤードナビゲーションを用意しています。センターのタブとしてカテゴリとメーカーを追加しました。有効になったとき 価格 (またはその他の属性)左手層ナビゲーションで使用するために、中央で見えるようになりました。 (Picture Bellowを参照)
センターナビゲーションのコード:
<?php if($this->canShowBlock()): ?>
<div class="block-content">
<?php if($this->canShowOptions()): ?>
<?php $_filters = $this->getFilters() ?>
<ul id="tabs">
<?php $counterOne =0; ?>
<?php $counterTwo =0; ?>
<?php foreach ($_filters as $_filter): ?>
<?php $counterOne++; ?>
<?php if($_filter->getItemsCount()): ?>
<li><a href="#" title="tab<?php echo $counterOne; ?>"><?php echo $this->__($_filter->getName()) ?></a></li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<div id="content">
<?php foreach ($_filters as $_filter): ?>
<?php $counterTwo++; ?>
<?php if($_filter->getItemsCount()): ?>
<div id="tab<?php echo $counterTwo; ?>"><?php echo $_filter->getHtml() ?></div>
<?php endif; ?>
<?php endforeach; ?>
</div>
<script type="text/javascript">decorateDataList('narrow-by-list')</script>
<?php endif; ?>
</div>
上記にフィルターを実装して、 カテゴリー と メーカー センター層のナビゲーションに表示されますか?
編集:
追加するとき:
<?php if($_filter->getName() == 'Category' || $_filter->getName() == 'Manufacturer' ): ?>
最初に直接怒ります
<?php foreach ($_filters as $_filter): ?>
ただし、メーカータブの下のメーカーをクリックすると、相関名を定義することはできません 'manufacturer_idx' '
何かご意見は?
編集私が達成しようとしているのは、中央にカテゴリとメーカーを置くことですが、他のすべてのろ過可能な属性が左に表示されます。これは可能ですか?
解決
これだけができるでしょう。
そのため、左側のメーカーとカテゴリを除外し、センター内のメーカーとカテゴリのリンク/ドロップダウンを生成するカスタムPHTMLファイルを作成します。
だから app/design/frontend/[template]/[package]/template/catalog/layer/view.phtml
49行目の編集
<?php if($_filter->getItemsCount() && ($_filter->getName()!='manufacturer' || $_filter->getName()!='categories')): ?>
<dt><?php echo $this->__($_filter->getName()) ?></dt>
<dd><?php echo $_filter->getHtml() ?></dd>
<?php endif; ?>
排除します manufacturer
と categories
リストから。オプションで使用してみてください getCode
, 、それが戻ってくると思います attribute_code
名前の代わりに。
センターレイヤードナビゲーションには、新しいPHTMLファイルを作成し、レイアウトに追加します
<reference name="content">
<block type="core/template" name="center_layered_nav" template="catalog/layer/center.phtml"/>
</reference>
ファイル内 catalog/layer/center.phtml
このようなもの
<form method="GET" id="center_layered">
<select name="manufacturer" onchange="document.getElementById('center_layered').submit();">
<?php
$attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_product', 'manufacturer');
$options = $attribute->getSource()->getAllOptions(false);
foreach ($options as $option)
{
echo '<option value="'.$option['value'].'">'.$option['label'].'</option>';
}
?>
</select>
</form>
ユーザーがメーカーを選択すると、メーカーを層状ナビゲーションURLに追加する必要があります。 Manufacturer
フィルター可能な属性である必要があります。
これは非常にテストされていないコードなので、調整が必要な場合がありますが、基本的に必要なものです。そして、私はこれがベストプラクティスであるふりをすることは決してありませんが、私が知る限り、それが唯一の方法です。