我的产品有多个类别。
示例:
Category > Books > Hardcover Books > childCategory
Category > Promo Books > Sample > childCategory
是否有可用于获取产品所有类别列表的帮助程序类?
答案 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());