1

我在 itemtype VariantProduct 中添加了一个带有 type="localized:java.lang.Boolean" 的新属性“showFlag”,并将默认值设置为 TRUE。但对于现有的变体产品,该值显示为 n/a。 在此处输入图像描述

我想将所有现有的变体产品的所有语言(本地化)showFlag 值更新为 Yes。我该怎么做?

4

4 回答 4

3

您可以使用 impex 批处理模式以最快的方式更新它们。

UPDATE Product[batchmode=true];itemType(code)[unique=true];description[en][default='test']
;Product;
;VariantProduct;
于 2018-10-25T11:07:42.700 回答
2

这样做的简单解决方案是使用类似这样的 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);
}

修改此代码以更符合您的需求,

希望这可以帮助

于 2018-10-25T10:54:14.660 回答
0

使用 bean shell 并使用 i18nService 迭代每种语言?

于 2018-10-25T10:35:13.610 回答
0

以下 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
于 2018-10-25T18:27:23.343 回答