Здравствуйте. Возможно ли выполнить php код в чанке? Думаю, что нет. Но возникла ситуация, когда у меня в срипте JS нужно получить переменную из PHP. В связи с чем делаю такую конструкцию: Но в чанке на не работает. Возможно ли как-то передать значение в чанк? Переменная a нужна в теле функции, как быть? Кусочек кода там не вставился:
Как быть учить modx. В чанке можно вызвать сниппет. Создаешь сниппет: data_arr туда пишешь php код в конце return нишь переменную с полученными данными return; вызываешь в чанке: var a=[[[!data_arr]]];
Нет, в чанке ничего такого нельзя, на то он и чанк. Но у вас же смарти-шаблонизация, нет? Можете не чанк использовать, а перекинуть это в сам шаблон и в нем уже выполнить {implode(',', $array)}
Да, можно так. Только вот так: var a=[[!data_arr]]; (думаю просто опечатка)
Я сначала все запихал в сниппет и вызвал его на странице. Но после выполнения кода выводится запись return; 1 Откуда она берется ума не приложу.
Вот такой кусочек кода, Мне нужно вставить var a = Значения из результатов работы скрипта-обработчика (массив чисел). Вариант, который закомментирован - это работает в просто php файле. А вариант ниже не работает. Что неправильно пишу?
Сниппет это просто php и работает по типу как файлы копай в эту сторону.
Выложи на гистхаб листинг всего сниппета и вызов его в чанке/шаблоне.
http://jsfiddle.net/dk2brm8w/ Сейчас вот в таком варианта вроде бы работает, но помимо всего еще выводится на экран, а мне этого не нужно. Как тогда выделить кусочек кода, чтобы на экран не выводился, а в чанк передавал значение?
Попробуйте в сниппете вот так: $arr = implode(",",$array);
return "[{$arr}];"; А лучше вот так: return json_encode($array)
Первый вариант как надо, но выводит результат строкой в месте вызова сниппета. А как просто передать значение без вывода?
но выводит результат строкой в месте вызова сниппета Открою вам тайну: сниппет и возвращает строку, и ничего кроме строки. То есть или выполняете в нем return $result, и его он и возвращает, или не возвращает ничего более. А как просто передать значение без вывода? А вот этот вопрос вообще не понятен. Что надо вообще? Передать из чанка что-то в сниппет в качестве параметра? Все как обычно: [[!snippet?foo=[[+foo]] ]]. Это если в чанке. И да, $_POST в чанке вы не передадите параметром сниппету. В Смарти-шаблоне можно. {$smarty.post.foo}
попробуй в начале сниппета написать <php
попробуй в начале сниппета написать <php
знак вопроса почему-то не выводится )
Потому что <? - это как бы начало тега. Такой тег не разрешен, поэтому он вырезается методом strip_tags(). Надо будет доработать обработку запросов...
Беда..
Хоть какое-то представление имеется о том, как связан фронтенд с бекендом? И как создаются переменные в js?
Хм, код вырезался < script >
window.blablabla = [[!snippet]];
< /script > p.s. на всякий случай - пробелы в телах надо убрать
Возможно ли как-то передать значение в чанк? В чанк значение передается также, как и в сниппет: [[!chunkName? &a=12345]]
Вот именно, беда... Поэтому когда я вижу такие пробелы, я и советую забросить ShopModxBox. Это же не так, что просто поставил и все (как большинство простейших модулей). Тут хочешь не хочешь, а программировать приходится. И что делать, когда даже элементарных знаний не хватает? Люди только-только на трехколесном велосипеде научились кататься, и уже хотят в ралли участвовать.