我在 itemtype VariantProduct 中添加了一个带有 type="localized:java.lang.Boolean" 的新属性“showFlag”,并将默认值设置为 TRUE。但对于现有的变体产品,该值显示为 n/a。
我想将所有现有的变体产品的所有语言(本地化)showFlag 值更新为 Yes。我该怎么做?
您可以使用 impex 批处理模式以最快的方式更新它们。
UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;
这样做的简单解决方案是使用类似这样的 groovy 脚本,
import de.hybris.platform.servicelayer.model.ModelService;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.SearchResult
import de.hybris.platform.variants.jalo.VariantProduct
FlexibleSearchService flexibleSearchService=(FlexibleSearchService)spring.getBean("flexibleSearchService");
ModelService modelService=(ModelService)spring.getBean("modelService");
List<Locale> locals = Arrays.asList(Locale.getAvailableLocales());
queryString="Select {pk} from {variantProduct} ";
FlexibleSearchQuery query=new FlexibleSearchQuery(queryString);
SearchResult result=flexibleSearchService.search(query);
List<VariantProduct> products = result.getResult();
for(VariantProduct variantModel : products){
for (Locale locale : locals){
variantModel.setShowFlag(Boolean.TRUE,locale);
}
modelService.save(variantModel);
}
修改此代码以更符合您的需求,
希望这可以帮助
使用 bean shell 并使用 i18nService 迭代每种语言?
以下 impex 导入脚本适用于上述问题:
UPDATE VariantProduct[batchmode=true];itemtype(code)[unique=true];showFlag[lang=en_GL];showFlag[lang=en_ZA];showFlag[lang=en_CA];showFlag[lang=en_US];showFlag[lang=en_AP];showFlag[lang=en_IN];showFlag[lang=en_CE];showFlag[lang=en_ME];showFlag[lang=en_SG];showFlag[lang=en_AU];showFlag[lang=en_PH];showFlag[lang=en_MA];showFlag[lang=en_GB];
;HenkelVariantProduct;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE