Алексей Смирнов

Алексей Смирнов

С нами с 20 декабря 2014; Место в рейтинге пользователей: #43
Алексей Смирнов
15 ноября 2022, 09:20
0
Если вам нужен поиск ТОЛЬКО по артикулу и ТОЧНОМУ вхождению, то следует зайти в настройки пакета
и поменять это: mse2_index_fields — тут указываете поля и баллы. а чуть ниже есть Баллы за ТОЧНОЕ и НЕ точное вхождение. Ставьте 0 баллов за не точное вхождение, и возможно, это отсечет ресурсы с частичным вхождении.
А скобки убираются в чанке у mSearchForm. зайдите в настройки этого сниппета и посмотрите параметр tpl. там будет название его. ну и чтобы это дело не слетело — скопируйте этот чанк и поправьте на свой лад. ну и подключите свой чанк просто.
Надеюсь, помог.
Алексей Смирнов
13 ноября 2022, 18:17
+1
Нужно написать условие — если фотки нет, то выводить другое…
Если на странице товара — одно условие с msGallery, а если в чанке товара для msProduct то там image плейсхолдер есть его и проверять на пустоту.
Алексей Смирнов
13 ноября 2022, 17:30
+1
Вам просто нужно написать сниппет, который получит id связи у товара.
Пример как сделать запрос есть тут в доке на php: docs.modx.pro/komponentyi/minishop2/interfejs/nastrojki
Но вам параметр Link не нужно будет указывать, но придется немного написать код, чтобы выявить нужный id link из БД.
потом у вас будет ИД link который вы можете подставить в сниппет msProduct и он уже произведет выборку нужную.
Алексей Смирнов
13 ноября 2022, 12:22
0
Те у вас зависимость товар + связь?
Ну id товара известна же...? Это [[*id]]
А вид связи если в товаре один, то не вижу проблем выводить. Просто указать ид связи…
Я поэтому и пытаюсь от вас добиться точной логики как оно должно работать, потому что пока вы сами четко не определите условия показа — посоветовать вам сложно.
И опять задам вопрос: допустим мы открыли какой то конкретный товар. Какие товары, связи конкретно для этого товара должны работать?
Алексей Смирнов
13 ноября 2022, 00:29
0
не вижу у вас в вызове параметров master.
вот дока docs.modx.pro/komponentyi/minishop2/snippetyi/msproducts
и скрин конкретный, где описывается как получить связи к конкретному товару:
joxi.ru/brR5VP7H7jR5QA
Алексей Смирнов
12 ноября 2022, 21:32
+1
1. класически вы просто загружаете одно фото для всех этих товаров.
Как вариант можно где-то оставить фото по умолчанию (в категории в TV или еще где) и сделать условие в чанке — если фоток галереи нет, показывать эту фотку заглушку.
2. Шаблон вообще один для товаров как правило и есть. Но суть вопроса все же не понял. Т.е вы указываете один какой-то товар и нужно чтобы показывались связанные только с этим товаром товарчики, а сам товар главный не показывался? Если не угадал то что вы хотите, то приведите пример своей ситуации или логики более четкой.
Алексей Смирнов
12 ноября 2022, 20:12
0
Вы в снипете не указали to_order, а memory, например, указали.
ну и внутри чанка в переменной $name будет ключ названия to_order
Сделайте условие и проверяйте в зависимости от значения. (в $name ключ опции, а в $values — значение)
Если не поняли о чем я, то лучше обратитесь в раздел работы тк тут нужно начинать с php и понимания переменных и циклов. и потом в fenom уже прыгать.
Алексей Смирнов
12 ноября 2022, 20:02
0
Есть BannerY там ссылки банеров формируются и еще и количество кликов считает.
Пойдет ли вам или нет не знаю.
Алексей Смирнов
12 ноября 2022, 10:22
0
Вывод один — что-то не так делаете и что-то не так проверяете…
тк в переменной массив из всех значений. И понять в какой опции у вас что активно — не возможно.
Если вы хотите что-то менять в зависимости от модификации, то в модификации нужно указывать эту зависимость от параметра.
Посмотрите выбрано ли в каждой опции какой либо значение. И проверьте правильно ли вы выводите.
Если хотите помощи, то нужны скриншоты заполненых полей модификации хотя бы одной. и коды вывода на сайте снипеты и переменные.
Алексей Смирнов
10 ноября 2022, 18:25
0
Посмотрите что хранит переменная:
<pre>{$to_order | print_r}</pre>
Алексей Смирнов
10 ноября 2022, 14:41
+1
В данном случае достаточно просто:
[[+total.cost]] и [[+total.count]]
Алексей Смирнов
06 ноября 2022, 23:38
0
joxi.ru/823x1l0u9elLgA
ну тут ошибка. проверьте.
а плейсхолдеры можно и так передать:
foreach ($assoc as $key => $title) {
$modx->setPlaceholder('title2.' . $key ,$title);
  $output .= $modx->getChunk('tpl.title2',
                              array('title2' => $title));
}
return $output;
И значения будут доступны везде через [[+title2.1]] [[+title2.2]]
Алексей Смирнов
06 ноября 2022, 21:34
0
А после чего начались сыпаться ошибки? что делали?
Алексей Смирнов
06 ноября 2022, 21:33
+1
Ну вы же
<div id="addtitles">[[!titleAdd]]</div>
вызываете именно тут. вот они тут и распечатываются с чанком. А если вы хотите передать (точнее показать) в html разметке formIt то вам нужно в сниппете присвоить еще и плейсхолдер, который будет содержать 1е значение или 2е (какое хотите). setPlaceholder
посмотрите…
Алексей Смирнов
03 ноября 2022, 16:05
0
Ну array показывается если вы переменную не верно выводите. попробуйте так:
$title=$_POST['title'];
<pre>
print_r($title);
</pre>
Алексей Смирнов
03 ноября 2022, 13:13
0
Лимит искать? Сомневаюсь что в поле накликают больше 50 категорий. Но если надо можно и до 100ки.
Этот лимит только для одного поля ввода. Так что должно хватить с лихвой.
Алексей Смирнов
03 ноября 2022, 12:36
+1
Да, действительно сниппет кешируется. Но мы хитрее, чем MODX )))
Нам нужно передавать какой-то простой уникальный параметр с уникальным значением, чтобы вызов сниппета не брался из кеша.
Думаю, для этого подойдет MIGX_id. И тогда можно добавить к вызову:
[[alextest?data=`[[+cat]]` &chtougodno=`[[+MIGX_id]]` ]]
Алексей Смирнов
03 ноября 2022, 11:45
+1
Да, верно. странно что не выводит в лог… может выбраны не 0 и не 1 значения?
Вот рабочий вариант оставлю тут для себя и всех:
Сниппет вызывается так без знака воскл. !:
[[alextest? &data=`[[+cat]]`]]
Сам сниппет: alextest
if (strpos($data,'[[+') === false){
    return $data;
} else {
    $namex = str_ireplace([ '[[+',']]' ], '', $data);
    for($i=0;$i<50;$i++){
        if ($modx->getPlaceholder($namex . '.' . $i) != '') {
            if ($i > 0) {$out .= ',';}
            $out .= '[[+' . $namex . '.' . $i .']]';
        }
    }
    return $out;
}
Алексей Смирнов
03 ноября 2022, 11:24
0
С кол-вом беда…
Но в момент когда сниппет у нас будет срабатывать плейсхолдеры уже будут в системе.
Это значит что наличие их мы сможем проверить через:
$modx->getPlaceholder('place.N');
Остается прогнать в цикле и проверить на пустоту или наличие.
Про плюшки:
ну опечаток со скобками и прочего будет меньше… — накликал и все отлично.
плюс — надо добавить поле — пару кликов и готово, а с json надо возиться и помнить все поля. В редакторе — просто удобнее расширять и править. ну и переносить из проекта в проект — вообще просто.
Если осовите редактор, то и такие вещи проще там делать. вот хорошая общая статья:
modx.pro/howto/16558
Алексей Смирнов
03 ноября 2022, 10:43
+1
А зачем вам TV-шка? она еще что-то делает?
Я обычно такие вещи без TV делаю.
Сразу советую перейти и переделать вызов MIGX через форму как Илья Уткин писал.
а по существу есть ММммммаааленький нюанс в парсере MODX.
Заключается он в том что при обработке поля renderchunktpl если у нас 1 значение — это строка, а если там несколько значений для типа listbox-multiple, то там в результате массив или json смотря с какой стороны смотреть.
А как всем не известно массивы у нас в парсере преобразуются в НОВЫЕ плейсхолдеры с ключем который приходит из этих массивов.
В данном случае у нас ключ это простой индекс от 0 и до бесконечности.
И чтобы получить перечень значений, нужно составить последовательность плейсов в сниппете и вернуть именно в этом формате строкой:
[[+code.0]], [[+code.1]] ...... [[+code.N]].
И тогда все будет хорошо и вы увидете отрендеренные значения.
Если не поняли — кидайте код сниппета.
Плюсики в КАРМУ. приветствуются.