mayushi

mayushi

С нами с 07 февраля 2019; Место в рейтинге пользователей: #856

Не работает json_encode, мешает fenom

Всем привет, задрался гуглить. Плз, хелп:

Имеется сниппет
$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));
mayushi
28 июля 2022, 23:53
modx.pro
849
0

Сортировка msProducts в порядке переданном в resources

Добрый день, подскажите, пожалуйста, как мне вывести товары согласно порядку id, переданному в сниппет?

[[!msProducts?
      &resources=`2,1,3,4`
      &limit = `0`
      &tpl=`prod.card`
    ]]
Мне именно в переданном порядке нужно вывести ресурсы. sortby и sortdir вроде не подходят
mayushi
01 ноября 2021, 01:19
modx.pro
1
490
0

две разных 404 страницы для Modx Evo

Всем привет!

У нас есть двуязычный сайт на MODX Evo и хотелось бы сделать две 404 страницы на разных языках. Для русской версии — на русском, на английской — английскую.

Программист упирается рогами и говорит, что нельзя обработать событие OnPageNotFound
так как нам хочется.

Я — еще не писал плагины, но меня вдохновила статья

но написав кусочек кода
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}

echo '<pre>';
print_r($_REQUEST);
print_r($_SERVER);
die;
и назначив плагину соответствующее событие OnPageNotFound, пытаясь открыть несуществующий адрес на сайте, я не заметил разницы.

Плиз, хелп ми =/

P.S. на сайте стоит также evoBabel версии 0.21 и там происходит следующее:
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 (то есть все-все ручками делается)
mayushi
07 февраля 2019, 21:41
modx.pro
1 037
0