mayushi
С нами с 07 февраля 2019; Место в рейтинге пользователей: #856Не работает json_encode, мешает fenom
Всем привет, задрался гуглить. Плз, хелп:
Имеется сниппет
Я подозреваю, что после кодирования массива в json парсер еще раз вызывается зачем-то и спотыкается об эту фигурную скобку. И все ломается
Что интересно, этот же код не вызывает ошибку, если тестировать в modalConsole
Полный код сниппета:
Имеется сниппет
$array = [
'parents' => '5',
'limit' => '0',
'includeTVs' => '
gallery,
price,
seats,
year,
',
'where' => '{"template:=":3}',
'return' => 'json'
];
$output = $modx->runSnippet('pdoResources', $array);
$output = json_decode($output, true);
...
...
print_r(json_encode($arr);
Белый экран, а в журнале Unexpected token ':' in 6659645b22726b14e4c56b6a41d87d64 line 16, near '{"catid":' <- there
При том, что если массив $arr не пытаться декодить, то он прекрасно выводится.Я подозреваю, что после кодирования массива в json парсер еще раз вызывается зачем-то и спотыкается об эту фигурную скобку. И все ломается
Что интересно, этот же код не вызывает ошибку, если тестировать в modalConsole
Полный код сниппета:
<?php
$array = [
'parents' => '5',
'limit' => '0',
'includeTVs' => '
gallery,
price,
seats,
year,
',
'where' => '{"template:=":3}',
'return' => 'json'
];
$output = $modx->runSnippet('pdoResources', $array);
$output = json_decode($output, true);
$arr = [];
foreach($output as $o){
global $modx;
$pids = $modx->getParentIds($o['id'], 10, array('context' => 'web'));
$gal = [];
foreach($o['tv.gallery'] as $g){
$gal[] = $g['image'];
}
$a = [
"catid" => $pids[0],
"id" => $o['id'],
"title" => $o['pagetitle'],
"uri" => $o['uri'],
"year" => $o['tv.year'],
"seats" => $o['tv.seats'],
"price" => $o['tv.price'][0],
"gallery" => $gal
];
$arr[] = $a;
}
print_r(json_encode($arr));
Сортировка msProducts в порядке переданном в resources
Добрый день, подскажите, пожалуйста, как мне вывести товары согласно порядку id, переданному в сниппет?
[[!msProducts?
&resources=`2,1,3,4`
&limit = `0`
&tpl=`prod.card`
]]
Мне именно в переданном порядке нужно вывести ресурсы. sortby и sortdir вроде не подходят две разных 404 страницы для Modx Evo
Всем привет!
У нас есть двуязычный сайт на MODX Evo и хотелось бы сделать две 404 страницы на разных языках. Для русской версии — на русском, на английской — английскую.
Программист упирается рогами и говорит, что нельзя обработать событие OnPageNotFound
так как нам хочется.
Я — еще не писал плагины, но меня вдохновила статья
но написав кусочек кода
Плиз, хелп ми =/
P.S. на сайте стоит также evoBabel версии 0.21 и там происходит следующее:
================
UPDATE
Я тут выяснил, что плагин у нас просто для красоты стоит, в качестве недовыпиленного легаси.
И мультиязычность якобы реализована средствами modx (то есть все-все ручками делается)
У нас есть двуязычный сайт на MODX Evo и хотелось бы сделать две 404 страницы на разных языках. Для русской версии — на русском, на английской — английскую.
Программист упирается рогами и говорит, что нельзя обработать событие OnPageNotFound
так как нам хочется.
Я — еще не писал плагины, но меня вдохновила статья
но написав кусочек кода
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
echo '<pre>';
print_r($_REQUEST);
print_r($_SERVER);
die;
и назначив плагину соответствующее событие OnPageNotFound, пытаясь открыть несуществующий адрес на сайте, я не заметил разницы.Плиз, хелп ми =/
switch ($e->name) {
case 'OnPageNotFound'://переадресация на нужную страницу 404, указать ее в модуле лексикона
//$docid = 0;
$docid = !empty($modx->config['error_page']) ? $modx->config['error_page'] : $modx->config['site_start'];
if (!isset($_SESSION['perevod'])) {
//$docid = $modx->config['site_start'];
$modx->sendRedirect($modx->makeUrl($docid), 0, 'REDIRECT_HEADER', 'HTTP/1.0 404 Not Found');exit();
}
$id = $_SESSION['perevod']['Страница не найдена'];
$docid = (int)$id;
if ($docid == 0) {
$id = $_SESSION['perevod']['Главная страница'];
$docid = (int)$id;
if ($docid == 0) {
$id = $_SESSION['perevod']['Корневая папка'];
$docid = (int)$id;
}
}
if ($docid != 0) {
$modx->sendRedirect($modx->makeUrl($docid), 0, 'REDIRECT_HEADER', 'HTTP/1.0 404 Not Found');exit();
} else {
$docid = !empty($modx->config['error_page']) ? $modx->config['error_page'] : $modx->config['site_start'];
}
break ;
================
UPDATE
Я тут выяснил, что плагин у нас просто для красоты стоит, в качестве недовыпиленного легаси.
И мультиязычность якобы реализована средствами modx (то есть все-все ручками делается)