0

在我们的 magento 站点中,我们有商店的根类别(这只是“默认类别”)。在此之下,我们设置了一些顶级类别(例如,我们称这些为“电子产品”和“家具”),以及一堆子类别。

例如,我们的类别结构可能是

  • 电子产品
    • DVD播放器
    • MP3 播放器
    • 电脑
  • 家具
    • 3片
    • 扶手椅
    • 沙发床

我设法编辑了“子类别”(例如“dvd 播放器”)的布局/模板,以便我们显示自定义产品列表视图。

现在我们要做的是,对于顶级类别(根类别下的第一个类别),显示所有子类别及其相关缩略图的自定义网格,而不是产品列表!

我如何为那些顶级类别分配完全不同的模板?

如果有人可以提供有关如何执行此操作以及我们需要采取的步骤的见解(我应该对代码本身没问题,它只是如何实现它,例如自定义模块和模板)

谢谢

4

2 回答 2

4

听起来您想要一个可以应用于顶级类别的自定义页面布局。页面布局本质上是一个命名的页面模板,您可以在下拉列表中选择它以应用于产品或类别。

要定义布局,请将其添加到global/page/layouts模块的节点中config.xml,如下所示:

<global>
    <page>
        <layouts>
            <my_custom_layout_name translate="label">
                <label>My Custom Layout</label>
                <template>page/my-custom-layout.phtml</template>
                <layout_handle>my_custom_layout</layout_handle>
            </my_custom_layout_name>
        <layouts>
    <page>
<global>

然后,您只需要page/my-custom-layout.phtml在应用程序/设计模板回退链中的某处创建模板文件。

layout_handle节点指定将添加到使用此布局的任何页面的新布局句柄的名称,允许您在具有节点的布局 XML 文件中定位它<my_custom_layout>

.phtml您引用的文件将是整个 HTML 页面的模板,因此它应该包含<html><head><body>标记以及您在默认page/*.phtml模板之一(1column、空、2columns-left 等)中可以找到的任何其他内容。在此和目标布局 XML 之间,您可以从头开始完全自定义此页面。

最后一步是在编辑目录->管理类别中的每个父类别时,在“自定义设计”选项卡下选择这个新布局。如果您没有在下拉列表中看到您的布局,请确保您的 XML 配置正确(请参阅app/code/core/Mage/Page/etc/config.xml参考资料)并刷新您的缓存。

于 2013-01-03T23:28:17.307 回答
1

一种方法是创建一个新模板,该模板将作为您的类别网格,然后将该模板作为您选择的类别的静态块调用,您将通过 CMS 进行选择。见下文。

创建类别网格模板

  1. 导航到“app/design/frontend/default/TEMPLATE/catalog/navigation”</li>
  2. 在这个路径中,我们将创建一个文件调用 category_listing.phtml
  3. 该文件将包含以下代码:

    <?php $_maincategorylisting=$this->getCurrentCategory()?>
    <?php $_categories=$this->getCurrentChildCategories()?>
    <h2><?php echo $this->__('Browse Products') ?> </h2>
    <div class="subcat-listing">
    <ul class="subcat-products">
    <? foreach ($_categories as $_category):?>
    <? if($_category->getIsActive()): ?>
    <?php $cur_category=Mage::getModel('catalog/category')->load($_category->getId()); ?>
    <?php $layer = Mage::getSingleton('catalog/layer'); ?>
    <?php $layer->setCurrentCategory($cur_category); ?>
    <? if($_imageUrl=$this->getCurrentCategory()->getImageUrl()):?>
    <li> <a href="<?php echo $this->getCategoryUrl($_category) ?>" title="<?php echo $this->htmlEscape($_category->getName()) ?>">
    <img src="<?php echo $_imageUrl ?>" width="auto" alt="<?php echo $this->htmlEscape($_category->getName()) ?>" />
    </a>
    <h3><?php echo $this->htmlEscape($_category->getName()) ?></h3>
    <? if($_description=$this->getCurrentCategory()->getDescription()):?>
    <p class="category-description">
    <?php echo $_description ?></</p>
    <?php endif; ?>
    <? endif; ?>
    <? endif; ?>
    <?php endforeach; ?>
    </ul>
    </div>
    <?php $layer->setCurrentCategory($_maincategorylisting); ?>
    

在静态块中调用此模板

  1. 转到菜单“CMS/静态块”并创建新块。

  2. 将此添加到 CMS 块的内容部分:
    {{block type="catalog/navigation" name="catalog.categories" template="catalog/navigation/category_listing.phtml"}}. 然后保存块。

在类别页面上使用此静态块。

  1. 转到菜单目录/管理类别

  2. 现在我们需要找到要在其上显示新网格的类别

  3. 选择您想要的类别,并在选项卡“显示设置”中设置以下信息:

    显示模式:静态块 CMS 块:类别列表(我们之前创建的块)是锚:否

  4. 单击保存。请记住,在“自定义设计”选项卡中,您可能需要选择您的模板。还要记住,该类别有很多分配给它的图像。

于 2013-01-03T23:13:01.837 回答