【问题标题】:magento show categories on left sidebar on a pagemagento 在页面的左侧边栏上显示类别
【发布时间】:2012-01-13 15:05:17
【问题描述】:

我无法在页面左侧显示类别。 我选择了设计下的页面 - 布局到 3 列, 右侧显示正常,但左侧没有。 magento 的新手,所以我不确定我必须在模板中的哪个文件中查找。 它安装了一个自定义模板,所以我到目前为止:

app/design/frontend/default/f001/template/

但现在不确定是否要查看目录或页面文件夹

【问题讨论】:

  • 这是一个什么样的“页面”:类别、产品、CMS等?浏览器中页面的路径是什么?如果它是一些 SEF url,请在浏览器中查看页面源并使用 <body> 标记中的第一类进行回复。
  • 嗨@misulicus...你清楚吗?

标签: magento categories


【解决方案1】:

要将类别从右侧边栏移动到左侧边栏,您需要执行以下操作:

(1) 打开 app/design/frontend/default/f001/layout/ 找到一个名为 local.xml 的文件 - 如果不存在,则创建它。

将以下内容粘贴到里面并保存。

<?xml version="1.0" encoding="UTF-8"?>
<layout>
<default>
<!-- Left Categories Begin-->
   <reference name="left">
        <block type="catalog/navigation" name="catalog.leftnav" before="-" template="catalog/navigation/left.phtml"/>
    </reference>
<!-- Left Categories End-->
</default>
</layout>

(2) 打开app/design/frontend/default/f001/layout/catalog.xml

在“类别默认布局”中,查找类似这样的内容并将这一行注释掉(就像这样)-

<!-- <reference name="right">
        <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml"/>
    </reference> -->

假设您使用的是 3 列,这将阻止类别显示在两个侧边栏上。

您可能已经猜到,参考名称指的是每个侧边栏。您需要确保“left”的引用名称包含左侧类别,并确保右侧不包含(在布局中控制,而不是模板文件)。

【讨论】:

  • 如何在顶部和左侧栏中创建单独的 cetegories...就像顶部一样,我应该有 magento 导入的类别,在左侧边栏中,我应该有自定义的“浏览方式”类别....
【解决方案2】:

转到布局文件夹 即

app/design/frontend/default/f001/layout/

打开任何 xml 文件,例如catalog.xml 和标签下

<default>

</default>

粘贴这段代码

<reference name="left">
        <block type="catalog/navigation" name="left_categories_nav" before="-" template="catalog/navigation/left.phtml"/>
    </reference>

喜欢这个

<default>
    <reference name="left">
        <block type="catalog/navigation" name="left_categories_nav" before="-" template="catalog/navigation/left.phtml"/>
    </reference>
</default>

但请务必在第 79 行注释此块。

<!-- <reference name="left">
    <block type="catalog/navigation" name="catalog.leftnav" after="currency" template="catalog/navigation/left.phtml"/>
</reference> -->

【讨论】:

    【解决方案3】:

    转到布局 Xml 文件夹..

    块引用 /app/design/frontend/default/default/layout/catalog.xml

    打开此 Xml 文件并粘贴此代码。

    <reference name="left">
                <block type="catalog/navigation" name="catalog.leftnav" template="catalog/navigation/left_nav.phtml" />
    </reference>
    

    进一步打开这个文件..

    /app/design/frontend/default/default/template/catalog/navigation/left_nav.phtml
    

    粘贴此代码:

     <?php
    $obj = new Mage_Catalog_Block_Navigation();
    $store_cats = $obj->getStoreCategories();
    $current_cat    = $obj->getCurrentCategory();
    $current_cat    = (is_object($current_cat) ? $current_cat->getName() : '');
    
    foreach ($store_cats as $cat) {
        if ($cat->getName() == $current_cat) {
            echo '<li class="current"><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a>\n<ul>\n";
            foreach ($obj->getCurrentChildCategories() as $subcat) {
                echo '<li><a href="'.$this->getCategoryUrl($subcat).'">'.$subcat->getName()."</a></li>\n";
            }
            echo "</ul>\n</li>\n";
        } else {
            echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a></li>\n";
        }
    }
    ?>
    

    【讨论】:

    • 这段代码运行良好,除了为了显示您需要使用的正确网址:&lt;a href="'.$obj-&gt;getCategoryUrl($cat).'"&gt;...
    【解决方案4】:
    Add this in left static block
    <p>Left side bar {{block type="core/template" template="catalog/navigation/left.phtml"}}</p>
    
    add left.phtml in yourtemplatename/template/catalog/navigation/left.phtml
    <?php
    $obj = new Mage_Catalog_Block_Navigation();
    $store_cats = $obj->getStoreCategories();
    $current_cat    = $obj->getCurrentCategory();
    $current_cat    = (is_object($current_cat) ? $current_cat->getName() : '');
    
    foreach ($store_cats as $cat) {
        if ($cat->getName() == $current_cat) {
            echo '<li class="current"><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a>\n<ul>\n";
            foreach ($obj->getCurrentChildCategories() as $subcat) {
                echo '<li><a href="'.$this->getCategoryUrl($subcat).'">'.$subcat->getName()."</a></li>\n";
            }
            echo "</ul>\n</li>\n";
        } else {
            echo '<li><a href="'.$this->getCategoryUrl($cat).'">'.$cat->getName()."</a></li>\n";
        }
    }
    ?>
    

    【讨论】: