Magento:在CMS页面中按ID显示类别图像

时间:2012-08-03 00:05:42

标签: magento magento-1.5

是否可以通过CMS页面中的类别ID显示类别图像?

您可以按ID显示类别链接:

{{widget type="catalog/category_widget_link" anchor_text="Displayed Text" title="Title attribute text" template="catalog/category/widget/link/link_block.phtml" id_path="category/22"}}

或按其ID显示类别产品。

{{block type="catalog/product_list" category_id="14" template="catalog/product/list.phtml"}}

但我无法弄清楚hwo只是通过调用它的id来在CMS页面中显示特定的类别图像。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

库存magento你不能。

基本上有3种方法可以实现这一点,按照偏好顺序(从好到坏):

  1. 创建和使用小部件
  2. 直接嵌入cms页面并使用自定义块类型初始化类别
  3. 直接嵌入cms页面,直接使用核心/模板块类型并在模板内初始化类别

  4. <强> 1。使用小部件

    我之前回答了类似的问题,并提供了一个完整的示例,说明如何构建特定于某个类别的小部件:

    magento - category name and image in static block?


    <强> 2。自定义模块

    您已经创建了一个带有块的模块来支持它。然后,您可以使用以下语法在cms页面中包含块:

    {{block type="yourmodule/category_image" category_id="14" template="yourmodule/category/image.phtml"}}
    

    你的块类看起来像这样:

    <?php
    
        class Yourcompany_Yourmodule_Block_Category_Image extends Mage_Core_Block_Template
        {
            public function getCategory()
            {
                if (! $this->hasData('category')) {
                    $category = Mage::getModel('catalog/category')->load($this->getData('category_id'));
                    $this->setData('category', $category);
                }
                return $this->getData('category');
            }
        }
    

    你的模板类看起来像这样:

    <?php
    
    $_helper    = $this->helper('catalog/output');
    $_category  = $this->getCategory();
    $_imgHtml   = '';
    if ($_imgUrl = $_category->getImageUrl()) {
        $_imgHtml = '<p class="category-image"><img src="'.$_imgUrl.'" alt="'.$this->htmlEscape($_category->getName()).'" title="'.$this->htmlEscape($_category->getName()).'" /></p>';
        $_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
    }
    
    ?>
    
    <?php if($_imgUrl): ?>
        <?php echo $_imgHtml ?>
    <?php endif; ?>
    

    第3。使用核心/模板块类型

    包含在cms页面上,如此..

    {{block type="core/template" category_id="14" template="category/image.phtml"}}
    

    创建模板 - catalog / category / image.phtml

    <?php
    $_helper   = $this->helper('catalog/output');
    $category  =  Mage::getModel('catalog/category')->load($this->getData('category_id'));
    $_imgHtml  = '';
    if ($_imgUrl = $_category->getImageUrl()) {
        $_imgHtml = '<p class="category-image"><img src="'.$_imgUrl.'" alt="'.$this->htmlEscape($_category->getName()).'" title="'.$this->htmlEscape($_category->getName()).'" /></p>';
        $_imgHtml = $_helper->categoryAttribute($_category, $_imgHtml, 'image');
    }
    
    ?>
    
    <?php if($_imgUrl): ?>
        <?php echo $_imgHtml ?>
    <?php endif; ?>
    

答案 1 :(得分:1)

我认为你不能只是调用图像,因为它不是块。在/design/base/default/template/category/view.phtml中,它只是将图像url作为块的属性调用,然后在模板文件中构建输出HTML。块中没有任何特定元素可以使用magento的短代码调用它。

最好的方法是构建一个新的小部件。有很多指南,一旦你更好地了解它们,它们就非常棒了。