Помогите с Fenom

Друзья, помогите пожалуйста! Разбираюсь с Fenom, нужно пару подсказок, чтобы мог потихоньку двигаться дальше, надеюсь мои ламерские вопросы и другим помогут.

Вопрос 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}
Alexey T
28 сентября 2015, 19:04
modx.pro
3 848
0

Комментарии: 10

Василий Наумкин
29 сентября 2015, 03:06
+2
{$_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. Всё получилось, но есть мнение, что пора писать новый обучающий курс про это.
    Alexey T
    29 сентября 2015, 10:29
    +1
    Василий, спасибо за помощь и объяснение. Курс будет очень интересен, особенно момент как Fenom поможет сократить количество чанков в компоненте
      Alexey T
      29 сентября 2015, 17:14
      0
      {$_modx->getChunk($_modx->resource[\'svg-icon\'])}
      Такой вызов у меня так и не заработал, как я только не пробовал, ни в INLINE, ни отдельным чанком,
      пробовал вызывать просто значение ТВ, тоже не работает:
      {$_modx->resource.svg-icon}
      Значение можно вызвать как плейсхолдер:
      {$_pls['svg-icon']}
      В итоге в ТВ категории товара прописал значения такого вида: {$_modx->getChunk('lamp_icon')}
      А по второму вопросу с old_price — все отлично работает.
        Василий Наумкин
        29 сентября 2015, 17:15
        0
        Ну значит пробуй как
        {$_modx->getChunk($_pls['svg-icon']}
        Смысл же в том, чтобы передать имя чанка.
          Alexey T
          29 сентября 2015, 17:34
          0
          {$_modx->getChunk($_pls['svg-icon'])}
          Вот так заработало, спасибо.
            Василий Наумкин
            29 сентября 2015, 17:42
            0
            Да, это я ступил, когда обращался к текущему ресурсу, а не к тому, который сейчас обрабатывается в чанке.
              Alexey T
              29 сентября 2015, 17:47
              0
              кстати этот вызов INLINE не работает, а в чанке работает
      Владимир
      29 сентября 2015, 09:44
      0
      Недавно закончил один магазин, целиком построенный на Fenom. Всё получилось, но есть мнение, что пора писать новый обучающий курс про это.
      Очень интересно!
        Іван Клімчук
        29 сентября 2015, 11:35
        0
        Курс по Fenom не помешал бы, так как тема обширная, а вопросов много. У меня например почему-то не работает напрямую в шаблонах. В чанке все ок, работает, но вызов внутри шаблона не обрабатывается никак (выводит весь код как есть). Версии pdoTools последние, в настройках нужные галки стоят. Есть подозрение, что где-то есть код json, который ломает Fenom, но отследить тоже проблематично, так как в логе вроде пишет ошибки, но где, в какои файле и строке — непонятно.
          Василий Наумкин
          29 сентября 2015, 11:49
          0
          Есть подозрение, что где-то есть код json, который ломает Fenom
          99% всех ошибок при работе вне чанков.

          но отследить тоже проблематично, так как в логе вроде пишет ошибки, но где, в каком файле и строке — непонятно.
          По другому никак не получается, ибо если файл не компилируется (не собирается) — то и смотреть ошибку негде. А сам Fenom работает уже с готовой страницей, про чанки и сниппеты, её подготавливающие, он не знает.

          Так что просто открывай исходный код страницы и смотри, где так есть скобочки, похожие на JSON.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10