将每个本地化的布尔属性值更新为 TRUE
Update every localized boolean attribute value to TRUE
我添加了一个新属性 "showFlag" with type="localized:java.lang.Boolean 到 itemtype VariantProduct 并将默认值设置为 TRUE.but 对于现有的变体产品,值来自 n/a。
我想将所有现有变体产品的所有语言(本地化)showFlag 值更新为 Yes.How 我可以这样做吗?
使用 bean shell 并使用 i18nService 遍历每种语言?
执行此操作的简单解决方案是使用类似这样的 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);
}
调整此代码以更符合您的需求,
希望对您有所帮助
您可以使用 impex 批处理模式以最快的方式更新所有这些。
UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;
以下 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
我添加了一个新属性 "showFlag" with type="localized:java.lang.Boolean 到 itemtype VariantProduct 并将默认值设置为 TRUE.but 对于现有的变体产品,值来自 n/a。
我想将所有现有变体产品的所有语言(本地化)showFlag 值更新为 Yes.How 我可以这样做吗?
使用 bean shell 并使用 i18nService 遍历每种语言?
执行此操作的简单解决方案是使用类似这样的 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);
}
调整此代码以更符合您的需求,
希望对您有所帮助
您可以使用 impex 批处理模式以最快的方式更新所有这些。
UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;
以下 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