【问题标题】:MAGENTO getting the descriptions from a sub categoryMAGENTO 从子类别中获取描述
【发布时间】:2009-10-12 01:48:13
【问题描述】:

您好,我是 magento 的新手,一直在尝试设置一个静态块来显示类别中的子类别列表。我已经成功地抓住了子类别的图像和名称,但由于某种原因,我似乎无法显示描述。

这里的代码没有人能解释为什么它不起作用以及我该如何解决它?

我已经注释掉了几行,因为我尝试了不同的方法来让它工作。

助手('目录/输出'); $category = $this->getCurrentCategory(); getCurrentChildCategories(); ?>
<?php foreach ($_categories as $_category): ?> <?php  echo 

$this->htmlEscape($_category->getCategoryDe​​scription());?>

        <?php if($_category->getIsActive()): ?>

            <div class="subcategory-image">

                        <a href="<?php echo $_category->getURL()
?>" title="htmlEscape($_category->getName()) ?>">
                        </a>
                            <?php /* echo "Find this item->" */ ?>

                    </div> <div class="sub-category-container">
                    <h2><a href="<?php echo $_category->getURL()
?>" title="htmlEscape($_category->getName()) ?>">htmlEscape($_category->getName()) ?> 获取网址()?>“ class="moreLink">[更多...] getDescription() ?>--> 获取描述()): ?> categoryAttribute($_category, $_description, 'description'); ?> -->

【问题讨论】:

  • 如果您以合理的方式格式化您的代码,您将获得更多回复。

标签: magento


【解决方案1】:

这是 Varien 决定他们应该在返回数据集合之前调用“加载”的情况之一,而这实际上是不必要的,并且使实用程序函数完全无用。如果您跟踪代码以找到 @ 987654321@你最终会在Mage_Catalog_Model_Resource_Eav_Mysql4_Category找到这个:

public function getChildrenCategories($category)
{
    $collection = $category->getCollection();
    /* @var $collection Mage_Catalog_Model_Resource_Eav_Mysql4_Category_Collection */
    $collection->addAttributeToSelect('url_key')
        ->addAttributeToSelect('name')
        ->addAttributeToSelect('all_children')
        ->addAttributeToSelect('is_anchor')
        ->addAttributeToFilter('is_active', 1)
        ->addIdFilter($category->getChildren())
        ->setOrder('position', 'ASC')
        ->joinUrlRewrite()
        ->load();
    return $collection;
}

倒数第二行-&gt;load(); 表示查询已执行,集合已加载,所以来不及修改查询。所以你要做的是复制并粘贴它来代替调用getChildrenCategories,然后添加你想要使用的附加属性,如下所示:

$_categories = $category->getCollection()
    ->addAttributeToSelect(
        array('url_key','name','all_children','is_anchor','description')
    )
    ->addAttributeToFilter('is_active', 1)
    ->addIdFilter($category->getChildren())
    ->setOrder('position', 'ASC')
    ->joinUrlRewrite()
;

现在集合将包含描述属性,以便 getDescription() 可以工作。请注意,您不需要调用load(),它会在您开始使用迭代器时自动发生(foreach 循环会触发此操作)。这就是为什么将 load() 调用包含在该函数中毫无意义的原因,因为否则您可能只需在函数调用下方添加一行:

$categories->addAttributeToSelect('description');

但是您必须复制函数的内容来调整查询。

【讨论】:

    【解决方案2】:

    变化:

    $_category->getCategoryDe​​scription()

    到这里:

    $_category->getDescription()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      相关资源
      最近更新 更多