Дмитрий

Дмитрий

С нами с 16 декабря 2015; Место в рейтинге пользователей: #47
Дмитрий
14 августа 2017, 19:29
0
Посложнее, конечно, чем предыдущий вариант, но зато более гибкий, позволяет что угодно таким образом сортировать и за один вызов сниппета.
Дмитрий
14 августа 2017, 19:26
0
Можно сделать без ТВ. Таким образом не надо будет постоянно редактировать ТВ-шку, когда появляется новый параметр.
Я реализовал это так (реальный скрипт для магазина керамической плитки), работает вот здесь:
Код:
<?php
$pdo = $modx->getService('pdoTools');
$tplOuter = '@FILE:chunks/collection/collectionOuter.tpl';
$tplType = '@FILE:chunks/collection/typeTpl.tpl';
$tpl = '@FILE:chunks/collection/collectionProduct.tpl';
$query = $modx->newQuery('msProductData');
$query->leftJoin('modResource', 'modResource', 'modResource.id = msProductData.id');
$query->select('`msProductData`.`kafelType`');
$query->where(array(
  'modResource.parent' => $collectionId
));
$query->distinct();
$query->prepare();
//return $query->toSQL();
$query->stmt->execute();
$kafels = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($kafels as $kafel){
    $products = $pdo->runSnippet('msProducts',array(
        'parents' => $collectionId,
        'where' => '{"Data.kafelType:=":"'.$kafel['kafelType'].'"}',
        'includeThumbs' => 'row',
        'limit' => 0,
        'tpl' => '@FILE:chunks/product/product.row.tpl'
    ));
    $collectionTypeItems .= $pdo->getChunk($tpl,array(
      'typeName' => $kafel['kafelType'],
      'products' => $products
    ));
}
$output = $pdo->getChunk($tplOuter,array(
   'output' => $collectionTypeItems 
));
return $output;
Нужно только создать поле в таблице товаров KafelType ну или заюзать для этого обычную ТВ-шку.
Смысл в том, чтобы сначала получить все уникальные значения типа кафельной плитки (базовая плитка, плинтус, ступени), а затем выводить это в категории. Если не разберетесь, пишите, попробуем вместе сделать :)
Дмитрий
14 августа 2017, 12:07
+2
Ежедневно на этом сайте в течение последних двух лет нахожусь, и впервые вижу подобный комментарий. Считайте это не соцопросом, но исследованием.
Дмитрий
14 августа 2017, 11:29
+2
Если вам криво, а всем остальным — ровно, то дело-то, вряд ли в сайте…
Дмитрий
11 августа 2017, 14:19
0
Не знаю, я когда понял, что дело в хостинге (на несуществующие страницы с одного сайта он показывал 200 ответ, вместо 404 и выдавал шаблон из базы другого сайта, где эта страница существовала), то просто написал в поддержку, они решили проблему.
Дмитрий
11 августа 2017, 00:46
0
Как оказалось, заказчик залез на хостинг и врубил Memcache, и он генерировал один и тот же кэш для обоих сайтов
Дмитрий
10 августа 2017, 13:04
0
Господа, я же написал, конфиги — в порядке)
Каждый конфиг прописан к своему сайту. Вообще нет пересечений в конфигах.
Но почему-то при обновлении кэша на одном — кэш обновляется на другом. Причем иногда это работает, иногда — не работает.
Дмитрий
04 августа 2017, 13:59
0
Можно настроить тут, например
Дмитрий
30 июля 2017, 13:15
0
Так а ShowLog посмотреть?
Дмитрий
29 июля 2017, 22:56
0
Можно добавить в параметры сниппета такое:
'where' => '{"absolute_o:=":"1"}',
Дмитрий
29 июля 2017, 16:24
+1
Несколько раз мне уже предъявляли за то, что «в этом вашем MODX как в Битрикс SEO URL не сделать, что вы нам предлагаете». Хе-хе-хе.
Дмитрий
20 июля 2017, 13:57
+1
В словаре просто сделать эту строку пустой
Дмитрий
20 июля 2017, 11:07
-2
Забудьте про Babel. Используйте localizator
Дмитрий
26 июня 2017, 15:43
0
Ты очень крут для меня :) Не думаю, что тебе даже будет интересно, не говоря уже о бюджете
Дмитрий
21 июня 2017, 02:39
+1
Сделал мультиязычный магазин с кучей плюшек с помощью Localizator. Есть некоторые проблемки, но они легко решаются хотя бы базовым знанием архитектуры MODX и кое-каким программированием. Если вы способны хоть что-то написать с использованием MODX API, то вы спокойно решите свои задачи с помощью Localizator.