Здравствуйте!
Мне нужно добавлять пунктам меню css-класс разным страницам динамически (в зависимости от даты). Условий много, поэтому я решил сделать для этого свой сниппет «dismenu», что бы там в php все это дело просчитывать. Создал tv (числовое поле) `day-num` для страниц и пытаюсь получить значение в сниппете для переменной $daynum:
[[pdoMenu? &parents=`219`
&level=`1`
&includeTVs=`day-num`
&rowClass=`[[dismenu? &daynum=`[[+day-num]]`]]`
]]
Проблема в том, что в сниппете переменная $daynum выводится как текст (т.е. я не могу ее ни сравнить с другим числом, ни сделать арифметические действия). Все мои попытки преобразовать ее в число в сниппете с помощью функций php тоже не дают результата (превращается тупо в 0).
Подскажите, что я делаю не так?
[ed. note: igorsrt last edited this post 2 years, 5 months ago.]
Quote from: igorsrt at Nov 07, 2018, 05:48 PMЗдравствуйте!
Мне нужно добавлять пунктам меню css-класс разным страницам динамически (в зависимости от даты). Условий много, поэтому я решил сделать для этого свой сниппет «dismenu», что бы там в php все это дело просчитывать. Создал tv (числовое поле) `day-num` для страниц и пытаюсь получить значение в сниппете для переменной $daynum:
[[pdoMenu? &parents=`219`
&level=`1`
&includeTVs=`day-num`
&rowClass=`[[dismenu? &daynum=`[[+day-num]]`]]`
]]
Проблема в том, что в сниппете переменная $daynum выводится как текст (т.е. я не могу ее ни сравнить с другим числом, ни сделать арифметические действия). Все мои попытки преобразовать ее в число в сниппете с помощью функций php тоже не дают результата (превращается тупо в 0).
Подскажите, что я делаю не так?
Сниппет в студию, это прежде всего!
Anton Tarasov
MODX Developer
Email: contact@antontarasov.com
Web:
antontarasov.com
Quote from: igorsrt at Nov 10, 2018, 11:11 AMСниппет в студию, это прежде всего!
да сниппета-то, как такового пока и нет, только наметки..
<!--?php
$today = date("w");
$day = $daynum;
if ($today --> $day)
return "menu_disabled";
Проблема в том, что значение переменной, переданной из pdomenu указанным мной способом ( [[dismenu? &daynum=`[[+day-num]]`]] ) PHP отказывается понимать как число (
На всякий случай, в сниппете добавьте перед условием и скажите, что появится в логе:
$modx->log(xPDO::LOG_LEVEL_ERROR, "Daynum value is = " . var_dump($daynum));
И что, приведение типов не помогает?
http://php.net/manual/ru/language.types.type-juggling.php
Anton Tarasov
MODX Developer
Email: contact@antontarasov.com
Web:
antontarasov.com
нет, я понял - в php попадает сама строка [[+daynum]]... но легче от этого не становится )
Quote from: igorsrt at Nov 11, 2018, 07:38 AMнет, я понял - в php попадает сама строка [[+daynum]]... но легче от этого не становится )
Теперь я не понял. Сама строчка - исходная? или обрамленная чем-то?) А приведения -в итоге-то что-нибудь дают, вот вы пишете -не помогают - каков результат?
Anton Tarasov
MODX Developer
Email: contact@antontarasov.com
Web:
antontarasov.com