查看产品类别树(分层视图)

时间:2016-09-26 17:08:12

标签: atg

我的产品有多个类别。

示例:

Category > Books > Hardcover Books > childCategory
Category > Promo Books > Sample > childCategory

是否有可用于获取产品所有类别列表的帮助程序类?

2 个答案:

答案 0 :(得分:1)

我不知道任何实用程序类OOTB将为您提供产品的完整树结构。也就是说,建立起来并不困难。

给定productId并假设您知道' root' categoryId,将以下方法添加到CatalogTools类的扩展名中。

    private RqlStatement findParentCategoriesOfProductRQL;

    public RepositoryItem[] findParentCategoriesOfProduct(String productId, String rootCategoryId) throws RepositoryException {
        RepositoryView view = getCatalog().getView("category");
        RepositoryItem[] parentCategories = findParentCategoriesOfProductRQL.executeQuery(view, new Object[] {productId, rootCategoryId });
        if (parentCategories == null || parentCategories.length == 0) {
            return null;
        }
        return parentCategories;
    }

    public void setFindParentCategoriesOfProductRQL(RqlStatement findParentCategoriesOfProduct) {
        this.findParentCategoriesOfProductRQL = findParentCategoriesOfProduct;
    }

    public RqlStatement getFindParentCategoriesOfProductRQL() {
        return findParentCategoriesOfProductRQL;
    }

并将以下内容添加到CatalogTools.properties

findParentCategoriesOfProductRQL=fixedChildProducts includes item (id = ?0) AND ancestorCategoryIds includes ?1

答案 1 :(得分:0)

如果您使用CommerceReferenceStore(CRS)作为您网站的基础,那么您的/atg/commerce/catalog/CatalogTools组件会使用扩展StoreCatalogTools类的atg.commerce.catalog.custom.CustomCatalogTools类。否则,如果您的CatalogTools组件未使用CustomCatalogTools类,则需要对其进行更新。

可以使用以下method

public java.util.Collection getProductsCategories(RepositoryItem pProduct,
                                         Repository pCatalogRepository)
                                           throws RepositoryException

您可以使用默认目录来调用它:

getCatalogTools().getProductsCategories(productItem, getCatalog());