カスタムナビゲーション(デュアルナビゲーション)でのみメーカーとカテゴリをフィルター

magento.stackexchange https://magento.stackexchange.com/questions/17074

  •  22-10-2019
  •  | 
  •  

質問

私は、ウェブサイトを簡単にナビゲートできるように、2セットのレイヤードナビゲーションを用意しています。センターのタブとしてカテゴリとメーカーを追加しました。有効になったとき 価格 (またはその他の属性)左手層ナビゲーションで使用するために、中央で見えるようになりました。 (Picture Bellowを参照)

dual navigation

センターナビゲーションのコード:

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

排除します manufacturercategories リストから。オプションで使用してみてください 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 フィルター可能な属性である必要があります。

これは非常にテストされていないコードなので、調整が必要な場合がありますが、基本的に必要なものです。そして、私はこれがベストプラクティスであるふりをすることは決してありませんが、私が知る限り、それが唯一の方法です。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top