Intershop получить дату в шаблоне.isml

Мне нужно проверить состояние:

<isif condition="#not ((Product:QLC_Enable EQ 'true') AND (Product:QLC_ValidTo > NOW) AND (Product:QLC_Quantity < 1))#">                        
    <span class="items-in-stock align-left">
        <isinclude template="product/inc/CC_StockStatus"/>
    </span>
</isif>

Но, похоже, некорректно использовать этот сегмент:

Product:QLC_ValidTo > NOW

В частности, проблема заключается в синтаксисе "СЕЙЧАС". Я понятия не имею, как это должно быть установлено и не могу узнать в их документации.

Кто-нибудь может помочь?

1 ответ

Я не верю, что это возможно в isml. Лучше написать расширение ProductBO и написать условие в Java. Затем вы можете вызвать расширение в isml для отображения элемента. Старайтесь не помещать слишком много логики в isml, он должен функционировать только как представление.

пример

<isif condition="#NOT ((Product:QLC_Enable EQ 'true') AND (Product:Extension("ProductExt"):isValid) AND (Product:QLC_Quantity < 1))#">                        
    <span class="items-in-stock align-left">
        <isinclude template="product/inc/CC_StockStatus"/>
    </span>
</isif>

Здесь вы можете увидеть, как создать расширение бизнес-объекта.

public interface ProductBOExtension extends BusinessObjectExtension<ProductBO>
{
    public static final String EXTENSION_ID = "ProductExt";
    public boolean isValid();
}

Класс реализации

public class ProductBOExtensionImpl extends AbstractBusinessObjectExtension<ProductBO> implements ProductBOExtension
{
    public boolean isValid(){
        return this.getExtendedObject().getAttributeValue("QLC_ValidTo").getDateValue().after(new Date());
    }
}
Другие вопросы по тегам