Выполнить php код в чанке?

Здравствуйте. Возможно ли выполнить php код в чанке? Думаю, что нет. Но возникла ситуация, когда у меня в срипте JS нужно получить переменную из PHP. В связи с чем делаю такую конструкцию:

var a=[<=implode(",",$array)?>];

Но в чанке на не работает. Возможно ли как-то передать значение в чанк? Переменная a нужна в теле функции, как быть? Кусочек кода там не вставился:

Comments

Как быть учить modx. В чанке можно вызвать сниппет. Создаешь сниппет: data_arr туда пишешь php код в конце return нишь переменную с полученными данными return; вызываешь в чанке:

var a=[[[!data_arr]]];

Нет, в чанке ничего такого нельзя, на то он и чанк. Но у вас же смарти-шаблонизация, нет? Можете не чанк использовать, а перекинуть это в сам шаблон и в нем уже выполнить {implode(',', $array)}

Я сначала все запихал в сниппет и вызвал его на странице. Но после выполнения кода выводится запись 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}

Потому что <? - это как бы начало тега. Такой тег не разрешен, поэтому он вырезается методом strip_tags(). Надо будет доработать обработку запросов...

Беда..

Хоть какое-то представление имеется о том, как связан фронтенд с бекендом? И как создаются переменные в js?

Хм, код вырезался

< script >

window.blablabla = [[!snippet]];

< /script >

p.s. на всякий случай - пробелы в телах надо убрать

Возможно ли как-то передать значение в чанк?

В чанк значение передается также, как и в сниппет:

[[!chunkName? &a=12345]]

Вот именно, беда... Поэтому когда я вижу такие пробелы, я и советую забросить ShopModxBox. Это же не так, что просто поставил и все (как большинство простейших модулей). Тут хочешь не хочешь, а программировать приходится. И что делать, когда даже элементарных знаний не хватает? Люди только-только на трехколесном велосипеде научились кататься, и уже хотят в ралли участвовать.