Cheizer
@Cheizer

Как передать в сниппет переменную (MODX)?

Подскажите пожалуйста, всю голову сломал, не работает. Хочу передать переменную в сниппет, который находиться в цикле.

Есть некий цикл, а в нем вызывается сниппет

{set $tag = json_decode($row.tag, true)}
{foreach $tag as $idx => $row}

<div class="sidebar_info">
{'!pdoResources' | snippet : [
    'limit' => 1,
	'loadModels' => 'tagger',
	'class' => 'TaggerTagResource',
    'leftJoin' => '{
		 "NameTag": {
      "class": "TaggerTag",
      "on": "TaggerTagResource.tag = NameTag.id"
    },
    "Posts": {
      "class": "modResource",
      "on": "TaggerTagResource.resource = Posts.id"
    },
    "intronews": {
		"class": "modTemplateVarResource",
		"on": "Posts.id = intronews.contentid and intronews.tmplvarid = 20"
	    },
	"autor": {
		"class": "modTemplateVarResource",
		"on": "Posts.id = autor.contentid and autor.tmplvarid = 19"
	   },
	   "image": {
		"class": "modTemplateVarResource",
		"on": "Posts.id = image.contentid and image.tmplvarid = 1"
	   }
	}',
	'select' => '{
	"TaggerTagResource": "*",
    "NameTag": "NameTag.tag, NameTag.alias",
    "Posts": "Posts.id, Posts.pagetitle",
    "intronews": "intronews.value as intronews",
    "autor": "autor.value as autor",
    "image": "image.value as image"
	}',
	'where' => '{"NameTag.alias" : $row.section}',
	'sortby' => 'createdon',
	'sortdir' => 'desc',
	'tplWrapper' => '@INLINE {$output}'
	'tpl' => 'news_block',
]}  

</div>
{/foreach}


В сниппете есть место, где выборка идет по условию, по тегу,
'where' => '{"NameTag.alias" : $row.section}',

Если руками прописать alias тега Новости, - news, все работает
'where' => '{"NameTag.alias" : "news"}',

А если подставить из переменной, то не работает ни хрена, хотя в переменной $row.section все содержится.
'where' => '{"NameTag.alias" : $row.section}',

Что не так делаю? Как передать информацию в сниппет в переменной?
  • Вопрос задан
  • 360 просмотров
Решения вопроса 1
Cheizer
@Cheizer Автор вопроса
Уф, два дня бился, так и знал, дело в синтаксисе FENOM, сложно. Правильно прописать так "'~$row.section~'"
'where' => '{"NameTag.alias" : "'~$row.section~'"}',

Может кому пригодиться.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
an-tar
@an-tar Куратор тега MODX
Full stack web developer
А если так:
{set $tag = json_decode($row.tag, true)}
{foreach $tag as $idx => $row}
{set $section = $row.section}
<div class="sidebar_info">
{'!pdoResources' | snippet : [
    'limit' => 1,
  'loadModels' => 'tagger',
  'class' => 'TaggerTagResource',
    'leftJoin' => '{
     "NameTag": {
      "class": "TaggerTag",
      "on": "TaggerTagResource.tag = NameTag.id"
    },
    "Posts": {
      "class": "modResource",
      "on": "TaggerTagResource.resource = Posts.id"
    },
    "intronews": {
    "class": "modTemplateVarResource",
    "on": "Posts.id = intronews.contentid and intronews.tmplvarid = 20"
      },
  "autor": {
    "class": "modTemplateVarResource",
    "on": "Posts.id = autor.contentid and autor.tmplvarid = 19"
     },
     "image": {
    "class": "modTemplateVarResource",
    "on": "Posts.id = image.contentid and image.tmplvarid = 1"
     }
  }',
  'select' => '{
  "TaggerTagResource": "*",
    "NameTag": "NameTag.tag, NameTag.alias",
    "Posts": "Posts.id, Posts.pagetitle",
    "intronews": "intronews.value as intronews",
    "autor": "autor.value as autor",
    "image": "image.value as image"
  }',
  'where' => '{"NameTag.alias" : $section}',
  'sortby' => 'createdon',
  'sortdir' => 'desc',
  'tplWrapper' => '@INLINE {$output}'
  'tpl' => 'news_block',
]}  

</div>
{/foreach}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы