Всего 123 809 комментариев

alexandr.skyrda
12 декабря 2022, 15:52
0
in_array($id_group, $userGroups)
здесь мб вместо id_group sale_group должно быть?
Николай Савин
12 декабря 2022, 15:46
2
+3
Вам нужно создать плагин на событие msOnGetProductPrice

Пример кода такой
/** @var modX $modx */
/** @var msProduct $product */
if ($modx->event->name == 'msOnGetProductPrice') {
    $userGroups = $modx->user->getUserGroups();
    $sale_group = 4;
    //  $sale_price - цена со скидкой.  Придумайте откуда ее взять.  Отдельное поле или процент от общей цены
    $sale_price = 100;

    if (in_array($id_group, $userGroups)) {
        $modx->event->returnedValues['price'] = $sale_price
    }
}

Здесь по коду проверяем в каких группах состоит клиент. Если среди них есть скидочная группа — то подменяем price на нужное вам число
Vladimir
12 декабря 2022, 11:59
+1
Можно это запустить всё через pdoPage и просто указать параметр context, и указать чтобы контекст брался через обращение к текущей страницы, которая сделала запрос, так же через pdoPage можно сделать так чтобы если больше 1к записей, будет 2я страница но с уже другими записями.
<?php
$output = $modx->runSnippet('pdoPage',array(
    'element' => 'pdoSitemap',
    'parents' => 0,
    'context' => $modx->context->key,
    'depth' => 10,
    'limit' => 100,
    'showHidden' => 0
));

return $output;
Ниже сам код, выше пример который работает у меня.
'context' => $modx->context->key,
Константин Ильин
12 декабря 2022, 11:43
0
Вы опишите задачу которую вы пытаетесь решить, если не трудозатратно попробуем решить средствами модх, а не так как вы это делаете.

На счет кода HTML в сниппете, тут нужно использовать parseChunk передавая ему массив данных. И так же рекоменду использовать Fenom, а не стандартный MODX шаблонизатор
<?
//про феном 
{'!usr1' | snippet} а не [[!usr1]]
В сниппет:
<?
$arr = ['name' => 'Вася', 'country' => 'Индия'];
.....
$pdo = $modx->getService('pdoTools'); // pdoTools должен быть установлен
return $pdo->parseChunk('названиеЧанка', $arr);
Сам чанк примерно
<div>Имя: {$name}<div>
<div>Страна: {$country}<div>
Николай Савин
12 декабря 2022, 11:19
0
Тогда я вам рекомендую вообще отказаться от этих кусков и использовать MODX API для обращения к базе данных, а также шаблонизатор для вывода информации
Pavel
12 декабря 2022, 10:34
0
точно. не обращайте внимание на куски из джумлы. я от туда сайт переписываю, это все уйдет в финале.
vectorserver
12 декабря 2022, 07:52
1
+1
Как писал выше Артур!
Создай сниппет к примеру contextKeys:
<?php
/* @var modX $modx */
/* @var modContext $ctxs */
$ctxs_obj = $modx->getCollection('modContext', array('key:!=' => "mgr"));
$ctxs = [];
if ($ctxs_obj) {
    foreach ($ctxs_obj as $ctx) {
        $ctxs[] = $ctx->key;
    }
}

return implode(",", $ctxs);
Далее впихивай его в pdoSitemap
[[!pdoSitemap?
    &tpl=`@INLINE [[+url]][[+date]]`
    &where=`{"hidemenu":0}`
    &context=`[[contextKeys]]`
]]
Валерий
12 декабря 2022, 00:43
0
Думал это на крайний случай оставить, рывок все-таки будет виден.
Дело в том, что я точно также (добавлением параметров к ссылке) формирую переход в другом месте. И там у меня все отрабатывает прекрасно.
У меня сайт на тестовом сервере, может быть можно ссылку оставить, это не спам — вот здесь reg.wwwhite.ru/predstavitelstva/, если на карте выбрать любую точку, там есть большая зеленая кнопка для перехода в фильтр. Так вот она работает и 404 ошибку не вызывает. Чтобы увидеть, что оно работает, точку нужно выбрать в Крыму :))

Единственная разница — здесь параметры идут после .html, а там, где не работает, идет после слеша.
Артур Шевченко
12 декабря 2022, 00:38
+1
Напиши сниппет, который вернёт список контекстов.
Артур Шевченко
12 декабря 2022, 00:23
0
Попробуй JS триггерить
Артур Шевченко
12 декабря 2022, 00:18
0
Артём какой-то сложный вариант предлагает. Во-первых, расширить стандартную модель товара можно компонентом msAddFields. Во-вторых, пример плагина действительно есть в документации, но в документации по Modx
Петропавловский Артем
11 декабря 2022, 19:50
0
В документации есть пример реализации подобного функционала. Единственное, что вам нужно сделать, адаптировать его под себя
Сергей Карпович
11 декабря 2022, 16:04
0
А есть пример такого плагина?
Валерий
11 декабря 2022, 14:56
0
Это правда :)

Но, справедливости ради, отмечу, что достигнутый результат не совсем тот, который хотелось бы видеть. Перехода на внутреннюю страницу не происходит, следовательно, пользователь не понимает, что он «внутри округа». Попробую с изображениями теперь написать:

Внутренняя структура:

Ресурс «Представители» это подборка, сделанная через компонент «Collections». Все ресурсы берутся из категории с ID 162.

Код вывода фильтра на странице «Найти представителя» и странице «Центральный ФО» (дочерняя категория «Найти представителя»):

[[!mFilter2?
 &parents=`162`
 &limit=`12`
 &hideContainers=`true`
 &suggestions=`false`
 &tvPrefix=`tv.`
 &includeTVs=`mentor_area,mentor_bisness,mentor_status,mentor_spec,personTown,mentor_fo`
 &tplOuter=`user-pers_mFilter2.outer`
 &tpl=`persons_item`
 &tpls=``
 &sort=`resource|pagetitle:asc`
&filters=`
  tv|mentor_fo,
  tv|mentor_area,
  tv|personTown,
  tv|mentor_status,
  tv|mentor_spec,
`
 ...
Здесь «mentor_fo» — фильтр по Федеральным округам.

И я хочу добиться того, чтобы, при заходе на страницу «Центральный ФО» через меню, фильтр стоял по-умолчанию на пункте «Центральный ФО».


Дело в том, что из-за того, что фильтр «mentor_fo» привязан не к категориям в дереве ресурсов, а вручную вбивается в каждом сотруднике в качестве TV поля с множественным выбором, то фильтр сам не понимает, что мы внутри конкретного округа.

Ох, надеюсь, что сейчас чуть понятнее… Стало.
На самом деле, я хочу понять, почему, вписанная в замороженный url (первый скриншот сверху) ссылка не работает. Тогда как на странице с фильтром, если выбрать нужный округ там, то ссылка имеет именно этот вид :)
Сергей Карпович
11 декабря 2022, 13:56
0
удивительно, что за столько лет нет нормальной реализации
Артур Шевченко
11 декабря 2022, 11:23
0
Вооот, потому что правильно сформулированный вопрос это 50% ответа))
Валерий
11 декабря 2022, 10:15
0
Пока готовил вам ответ, понял в чем ошибся. Теперь все работает.
Я параметр прописывал с учетом перехода в подкатегорию (Крым), а нужно было без нее делать. Это все равно немного странно, но работает прекрасно.
Роман
11 декабря 2022, 07:59
0
Да, вы правы, были обозначены поля, из-за этого эти не прописывались.
Спасибо, надо быть мне внимательнее.
Артур Шевченко
11 декабря 2022, 00:35
0
Скрин дерева ресурсов, код вызова mFilter2 и описание того, что должно получится, — вот такая информация помогла бы получить ответ. А пока мне непонятно, что ты пытаешься сделать.