前台显示Category定制属性两例

因业务需要,Category增加了一个属性叫promo_name,进入Category列表页时希望将其显示出来,这里的情况具体分两种:

I. load方法访问自定义属性
$c = Mage::getModel('catalog/category');
echo $c->getPromoName();

这个是最自然的用法,麻烦的是下面的情况:

II. 首先得到了树状的Category(不是平面的), 看下面代码示例
   public function getCategoryNodes($parentId = null,  $sorted=false, $asCollection=false, $toLoad=true) {
      $config = Mage::getModel('catalogue/joyconfig');
      if(empty($parentId)) {
         $parentId = $config->getRootBrandId();
      }
      $category = Mage::getModel('catalog/category');
      /* @var $category Mage_Catalog_Model_Category */
      if (!$category->checkId($parentId)) {
         if ($asCollection) {
            return new Varien_Data_Collection();
         }
         return array();
      }

      $recursionLevel = max(0, 0);

      $tree = $category->getTreeModel();
      $nodes = $tree->loadNode($parentId)
         ->loadChildren($recursionLevel)
         ->getChildren();

      $tree->addCollectionData(null, $sorted, $parentId, $toLoad, true);

      if ($asCollection) {
         return $tree->getCollection();
      } else {
         return $nodes;
      }
   }

其功能是:给定一个category_id,返回该id下所有子分类以树状结构返回,为了让返回的每个节点(Category Node)包含该定制属性, 在代码
$tree->addCollectionData(null, $sorted, $parentId, $toLoad, true);

前增加如下的行:
$tree->getCollection($sorted)->addAttributeToSelect('promot_name');

就可以了。

你可能感兴趣的:(C++,c,PHP,C#)