В лексиконы не подставляются GET-параметры

Как подставить в языковую переменную динамический GET-параметр?
Пробовал разные варианты подставления GET-параметров, но ни один из них не работает — впечатление что лексикон парсится первым, а уже потом все остальные теги.

Я должен получить следующее:
[[%category.1]] // где 1 это GET параметр.
Если просто жёстко написать [[%category.1]], то нормально выведется название категории из словарей. Но мне нужно подставлять в зависимости от параметра в адресной строке.
Я пробовал разные варианты:
[[%category.[[!#GET.category]]]] // через PDO парсер
[[%category.[[!+GET.category]]]] // через плагин, который записывает GET в плейсхолдер
[[%category.[[!GET?key=`category`]]]] // через сниппет
Везде один и тот же результат — пустота. Даже не выводится название переменной, как бывает, если она не существует в словарях.
Но если бы сначала парсился тег лексикона без GET переменной, тогда хотя бы вывело на странице что-то типа "category." и я бы знал, что не подставился никакой GET, но на странице пусто!

Или я чего-то недопонимаю? Есть ли варианты обойти этот глюк?

P.S. Проблема не из-за точки. Я пробовал варианты типа [[%category_[[!#GET.category]]]] (через нижнее подчёркивание) — то же самое.
Василий Столейков
05 октября 2015, 20:24
modx.pro
1
935
0
Поблагодарить автора Отправить деньги

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

Максим Кузнецов
05 октября 2015, 23:33
+1
Как вариант — создайте сниппет getLexicon примерно с таким содержанием:

<?php
	if (!isset($cultureKey)) {
		$cultureKey = 'ru';
	}
	if (!isset($namespace) || !isset($theme) || !isset($get) || !isset($name)) {
		return;
	}

	$modx->setOption('cultureKey', $cultureKey);
	$modx->lexicon->load($namespace.':'.$theme);

	return $modx->lexicon($name.''.$_GET[$get]);

Вызывается как-то так: [[!getLexicon? &name=`category.` &get=`category` &cultureKey=`ru` &namespace=`core` &theme=`about`]]

Должно помочь.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
2