Дублируется один товар в каталоге

Всем здравствуйте, возникла ситуация, когда в каталоге выводится (дублируется) один и тот же товар 5 раз. Уже переписал чанки вывода, все равно 5 раз дублирует…

Может кто-то сталкивался с такой ситуацией?

Можете подсказать в какую сторону смотреть.

Вывод товаров такой:

Константин
29 июля 2022, 09:34
modx.pro
660
0

Не могу настроить зависимые фильтры в mFilter2

Всем здравствуйте!

Не могу настроить зависимые фильтры в mFilter2
Документацию по mSearch2 читал, там прям скрипт готовый есть.
docs.modx.pro/komponentyi/msearch2/tipovyie-resheniya/zavisimyie-filtryi

И он отлично работает, только одно НО, при условии — марка: Ford, модель Ford Galaxy (то есть название модели включает в себя марку).

А у меня в базе модель просто Galaxy (без Ford) и базу быстро не поменяешь 35 тыс товаров.
Хоть js я и начал учить, но не получается пока, не хватает знаний), я так понимаю data-атирибуты нужны в модели?

Вот такой вопрос собственно, может ли кто-то помочь, может у кого-то есть наработки такие, код или встречался с похожей ситуацией?
Буду признателен за помощь, спасибо!
Дмитрий
28 июля 2022, 23:57
modx.pro
2
731
0

Не работает 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
1 188
0

Как добавлять свои таблицы в modx 3.0.1 ?

До выхода 3 версии modx отлично работали CMPGenerator, CMPGeneratorPro и UICMPGenerator
Есть аналоги для 3 версии?
Илья
27 июля 2022, 16:35
modx.pro
729
0

Переменная в пути обьекта в FENOM

Подскажите, может кто знает как подставить переменную в путь объекта?

Например итоговый вывод такой: $resp->material->wall->width, но нужно что-то на подобие $resp->material->($type)->width. То есть часть пути объекта является переменной. Всю голову сломал.

Вижу, что есть не понимание — пожалуй напишу детский пример.
Есть 3 значения в объекте $resp, которые нужно перебрать: wall, ceil, floor методом foreach. Внимание вопрос: как можно подставить переменную чтобы fenom сработал?
{foreach ['wall','ceil','floor'] as $type}
	{$resp->material->($type)->width}
{/foreach}
Евгений Лазарев
26 июля 2022, 14:09
modx.pro
693
0

Modx. Любые внутренние страницы сайта открываются с ошибкой 500?

Главная страница сайта работает без проблем.
При открытии любой внутренней страницы типа:
— site.ru/uwheru/
— site.ru/oiwer.html
Браузер показывает ошибку:
«Страница недоступна. Сайт site.ru пока не может обработать этот запрос.
HTTP ERROR 500»
Сайт работ на modx. Ошибки в файлах логов (/var/www/1diplom/data/www/site.ru/core/cache/logs/error.log):

(ERROR @ /var/www/1diplom/data/www/site.ru/core/components/ajaxform/model/ajaxform/ajaxform.class.php : 74) PHP warning: file_put_contents(/var/www/1diplom/data/www/site.ru/assets/components/ajaxform/js/config.js): failed to open stream: Permission denied
[2022-07-26 11:09:42] (ERROR @ /index.php) Error HY000 executing statement: 
Array
(
    [0] => HY000
    [1] => 3065
    [2] => Expression #1 of ORDER BY clause is not in SELECT list, references column '1diplom_diplom1.tvtpl.rank' which is not in SELECT list; this is incompatible with DISTINCT
)
vont.bedi
26 июля 2022, 11:51
modx.pro
871
0

Доработки на сайте

30 50 000
Добрый день, нужно реализовать на сайте указанный в ТЗ функционал с версткой и мобильной адаптацией

docs.google.com/document/d/1T6_hJ_rYLtFltcxH2wm6ZwjQCdTY4Sx4_KoPuL9d_Is/edit?usp=sharing

Почта для связи — info@dolmax.ru
Или вацап — 89117671829
Maxim
26 июля 2022, 11:25
modx.pro
366
0

Загрузка файла в tickets

Делаю на tickets каталог с возможностью добавления анкеты зарегистрированным пользователем, проверкой этой анкеты админом и публикацией анкеты после проверки. Анкета после добавления имеет статус не опубликовано, до момента пока админ не проставит галку опубликовано. В анкете застрял на добавлении видео-файла.
ДАНО:
1) TV *video
2) чанк tickets.form.create.tpl создания самой анкеты:
<form class="well create" enctype="multipart/form-data" method="post" action="" id="ticketForm">
...
<div class="col-md-12 col-sm-12 mt-2">
<label for="ticket-photo">Insert video (maximum size 3 Mb, only mp4)</label>
<div class="custom-file">
  <input type="file" class="custom-file-input" name="video" id="video">
  <label class="custom-file-label" for="customFile">Choose video file</label>
  <span class="error" id="error_video"></span>
</div>
</div>
3) чанк tickets.form.update.tpl обновления анкеты после публикации (на случай испарвления)
<form class="well update" method="post" action="" id="ticketForm">
....
<div class="col-md-12 col-sm-12 mt-2">
<label for="ticket-photo">Insert video (maximum size 3 Mb, only mp4)</label>
<div class="custom-file">
  <input type="file" class="custom-file-input" name="video" id="video">
  <label class="custom-file-label" for="customFile">Choose video file [[+video]]</label>
  <span class="error" id="error_video"></span>
</div>
</div>
4) Плагин, который запускается по событию OnBeforeDocFormSave. На OnDocFormSave форма после нажатия сохранить вообще зависает.

<?php
if ($modx->event->name == 'OnBeforeDocFormSave') {
      if($mode == 'new'){  
        if (!empty($_FILES)) { 
             
            $id = $resource->get('id');
            $folder = 'video'; // имя папки куда грузить, должна быть создана (в корне сайта)
            $path = MODX_BASE_PATH.'/'.$folder.'/'; // Путь от корня до нужного места
            $tv_name = 'video'; // имя нашей тв
             
            // все значения файла
            $nameFile = $_FILES['video']['name'];
            $typeFile = $_FILES['video']['type'];
            $tmpNameFile = $_FILES['video']['tmp_name'];
            $sizeFile = $_FILES['video']['size']; 
             
            $limit_size = 3*1024*1024; // 3 Mb - максимальный размер загружаемого файла
            $file_types = array("mp4", "MP4"); // доступные расширения для загрузки
            $extensionFile = substr(strrchr($nameFile, '.'), 1); // получаем расширение файла
             
            $NewNameFile = 'id_'.$id.'_'.date("m_d_y").'.'.$extensionFile;  // наше новое имя файла
             
            if(is_uploaded_file($tmpNameFile)) // проверяем зашёл ли файл
            {
                if($limit_size > $sizeFile)
                { // Проверка на размер
                    if(in_array($extensionFile, $file_types)){ // проверка на тип
                         move_uploaded_file($tmpNameFile, $path.$NewNameFile); // загрузка файла
                         $resource->setTVValue($tv_name, $folder.'/'.$NewNameFile); // запись в ТВ
                    }
                }
            }
        }
    } 
}
5) Создан источник файлов Video и выбран для TV video в настройках самого TV

Проблемы:
1) Видео файл передается в папку video в корне, но не отображается в TV video в самом документе.
2) Видео файл не передается при редактировании формы при tickets.form.update.tpl
3) При создании нескольких анкет файлы в папке видео просто затираются и в паке остается только один последний файл.

Есть ли у кого-то готовый рабочий пример передачи файла через тикет? Думаю, что накосепорил с событием и самимb чанками создани и обновления анкеты. Передаются все ТВ, загрузка изображений через msgallery, но один ТВ файл не хочет заводиться.
Антон
26 июля 2022, 00:49
modx.pro
903
0