Помогите с Fenom
Друзья, помогите пожалуйста! Разбираюсь с Fenom, нужно пару подсказок, чтобы мог потихоньку двигаться дальше, надеюсь мои ламерские вопросы и другим помогут.
Вопрос 1:
как сделать вызов чанка (название чанка берется из ТВ-поля) в такой конструкции:
Ниже листинг чанка ms_product_content, все ли здесь правильно и как правильно вызвать конструкцию проверки OLD_PRICE?
Вопрос 1:
как сделать вызов чанка (название чанка берется из ТВ-поля) в такой конструкции:
{$_modx->runSnippet('!pdoMenu@PropertySet', [
'parents' => '2',
'showLog' => 0,
'includeTVs' => 'svg-icon',
'level' => '1',
'tplOuter' => '@INLINE <ul{$classes} id="side-menu">{$wrapper}</ul>',
'tpl' => '@INLINE
<li{$classes}>
<a href="{$link}" {$attributes}>
<div class="row">
<div class="col-md-3">[[$[[+svg-icon]]]]</div>
<div class="col-md-9">{$menutitle}</div>
</div>
</a>
</li>',
'outerClass' => 'nav'
])}
Такие вызовы здесь не работают: {$_modx->resource.svg-icon}, {$_modx->getChunk('chunk_name')}
Вопрос 2:Ниже листинг чанка ms_product_content, все ли здесь правильно и как правильно вызвать конструкцию проверки OLD_PRICE?
<h1 class="product-title">{$_modx->resource.longtitle}</h1>
<div id="msProduct" class="row">
<div class="col-md-5">
{$_modx->runSnippet('!msGallery@PropertySet', [
'tplEmpty' => 'shop_tpl.msGallery.empty',
'tplOuter' => 'shop_tpl.msGallery.outer',
'tplRow' => 'shop_tpl.msGallery.row',
])}
</div>
<div class="span7 col-md-7">
<form class="form-horizontal ms2_form" method="post">
<input type="hidden" name="id" value="{$_modx->resource.id}">
<div class="form-group">
<label class="col-sm-2 control-label">{$_modx->lexicon('ms2_product_article')}:</label>
<div class="col-sm-3">
<label class="checkbox">
{$article}
</label>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">{$_modx->lexicon('ms2_product_price')}:</label>
<div class="col-sm-3">
<label class="checkbox">
{$price} {$_modx->lexicon('ms2_frontend_currency')}
{$old_price > '0' ? '<span class="old_price">[[+old_price]] [[%ms2_frontend_currency]]</span>' : ''}
</label>
</div>
</div>
<div class="form-group form-inline">
<label class="col-sm-2 control-label" for="product_price">{$_modx->lexicon('ms2_cart_count')}:</label>
<div class="col-sm-3">
<input type="number" name="count" id="product_price" class="input-sm form-control" value="1" />
{$_modx->lexicon('ms2_frontend_count_unit')}
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">{$_modx->lexicon('ms2_product_weight')}:</label>
<div class="col-sm-3">
<label class="checkbox">{$weight} {$_modx->lexicon('ms2_frontend_weight_unit')}</label>
</div>
</div>
{$_modx->runSnippet('!msOptions@PropertySet', [
'name' => 'color',
])}
{$_modx->runSnippet('!msOptions@PropertySet', [
'name' => 'size',
])}
{$_modx->runSnippet('-!msOptions@PropertySet', [
'name' => 'tags',
'tplRow' => '',
'tplOuter' => '',
])}
<div class="form-group">
<label class="col-sm-2 control-label">{$_modx->lexicon('ms2_product_made_in')}:</label>
<div class="col-sm-3">
<label class="checkbox">{$made_in}</label>
</div>
</div>
<div class="form-group">
<div class="col-sm-3">
<button type="submit" class="btn btn-default" name="ms2_action" value="cart/add"><i class="glyphicon glyphicon-shopping-cart"></i> {$_modx->lexicon('ms2_frontend_add_to_cart')}</button>
</div>
</div>
</form>
</div>
</div>
{$_modx->runSnippet('!msProductOptions@PropertySet', [
'hideEmpty' => 1,
'groups' => '11,12,14',
'tplOuter' => 'shop_tpl.msProductOptions.outer',
'tplRow' => 'shop_tpl.msProductOptions.row',
])}
<p class="lead">{$_modx->resource.introtext}</p>
{$_modx->resource.content}
Комментарии: 10
{$_modx->runSnippet('!pdoMenu@PropertySet', [
'parents' => 2,
'showLog' => 0,
'includeTVs' => 'svg-icon',
'level' => 1,
'tplOuter' => '@INLINE <ul{$classes} id="side-menu">{$wrapper}</ul>',
'tpl' => '@INLINE
<li{$classes}>
<a href="{$link}" {$attributes}>
<div class="row">
<div class="col-md-3">{$_modx->getChunk($_modx->resource[\'svg-icon\'])}</div>
<div class="col-md-9">{$menutitle}</div>
</div>
</a>
</li>',
'outerClass' => 'nav'
])}
Если вдруг что-то в INLINE чанке не будет работать, можно попробовать вынести в обычный чанк. Но у меня на тесте всё ок.2. В чанке tpl.msProduct.content идёт работа со свойствами товара, которые выставляются в плейсхолдеры. Поэтому в MODX их можно получать через [[+имя]], а в Fenom нужно указывать ресурс, а не брать не пойми откуда переменные:
{if $_modx->resource.old_price > 0}
<span class="old_price">{$_modx->resource.old_price} {$_modx->lexicon('ms2_frontend_currency')}</span>
{/if}
Недавно закончил один магазин, целиком построенный на Fenom. Всё получилось, но есть мнение, что пора писать новый обучающий курс про это.
Василий, спасибо за помощь и объяснение. Курс будет очень интересен, особенно момент как Fenom поможет сократить количество чанков в компоненте
{$_modx->getChunk($_modx->resource[\'svg-icon\'])}
Такой вызов у меня так и не заработал, как я только не пробовал, ни в INLINE, ни отдельным чанком,пробовал вызывать просто значение ТВ, тоже не работает:
{$_modx->resource.svg-icon}
Значение можно вызвать как плейсхолдер:{$_pls['svg-icon']}
В итоге в ТВ категории товара прописал значения такого вида: {$_modx->getChunk('lamp_icon')}А по второму вопросу с old_price — все отлично работает.
Ну значит пробуй как
{$_modx->getChunk($_pls['svg-icon']}
Смысл же в том, чтобы передать имя чанка. {$_modx->getChunk($_pls['svg-icon'])}
Вот так заработало, спасибо.
Да, это я ступил, когда обращался к текущему ресурсу, а не к тому, который сейчас обрабатывается в чанке.
кстати этот вызов INLINE не работает, а в чанке работает
Недавно закончил один магазин, целиком построенный на Fenom. Всё получилось, но есть мнение, что пора писать новый обучающий курс про это.Очень интересно!
Курс по Fenom не помешал бы, так как тема обширная, а вопросов много. У меня например почему-то не работает напрямую в шаблонах. В чанке все ок, работает, но вызов внутри шаблона не обрабатывается никак (выводит весь код как есть). Версии pdoTools последние, в настройках нужные галки стоят. Есть подозрение, что где-то есть код json, который ломает Fenom, но отследить тоже проблематично, так как в логе вроде пишет ошибки, но где, в какои файле и строке — непонятно.
Есть подозрение, что где-то есть код json, который ломает Fenom99% всех ошибок при работе вне чанков.
но отследить тоже проблематично, так как в логе вроде пишет ошибки, но где, в каком файле и строке — непонятно.По другому никак не получается, ибо если файл не компилируется (не собирается) — то и смотреть ошибку негде. А сам Fenom работает уже с готовой страницей, про чанки и сниппеты, её подготавливающие, он не знает.
Так что просто открывай исходный код страницы и смотри, где так есть скобочки, похожие на JSON.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.