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

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

С нами с 20 декабря 2014; Место в рейтинге пользователей: #43
Алексей Смирнов
13 сентября 2023, 14:23
+1
Да, просто поменяйте и сделайте так:
{set $dog = ('noarticle' | placeholder)}
{if $parent not in list $dog}
  <div class="reward"><span>Артикул:</span> <span class="item">{$article}</span></div>
{else}
{/if}
Алексей Смирнов
12 сентября 2023, 10:07
0
Ну, такие вещи нужно уже самому отдебаживать.
Проверьте что в чанке вообще выводятся данные:
И так попробуйте посмотреть:
{$_modx->getPlaceholder('noarticle') | print}
и так:
{('noarticle' | placeholder) | print}
если не выводиться, проверьте что переменные верно указаны. ну и еще в феноме не забывайте что есть $_modx, а не $modx.
каждый чих проверять уже перебор.
Алексей Смирнов
12 сентября 2023, 10:00
+2
Чтобы точно люди нашли ответ на этот вопрос выделю его в отдельном комментарии от себя:
<a href="" data-sort="" data-dir="" class="sorty sort">Сбросить</a>
Причем таким образом можно построить и оформить почти любой вариант сортировки по дизайну.
Например в одном проекте делал так:
<div id="mse2_sort">
      <a href="" data-sort="publish:desc" data-dir="" class="sorty sort">Новее</a>
      <a href="" data-sort="pribil:desc" data-dir="" class="sorty sort">Прибыльнее</a>
      <a href="" data-sort="price:asc" data-dir="" class="sorty sort">Дешевле</a>
      <a href="" data-sort="" data-dir="" class="sorty sort">Сбросить</a>
</div>
Те Нужны были только определенные последовательности сортировок. Это реализовал так. И исходники совсем не правил для этого дела.
а еще это можно оформить в выпадающий список (не select) а на js сделать и будет вообще красота. Так же учтите, что на все теги a при клике навешивается класс active, тут просто застилить нужно верно и все будет приличненько.
ну и кто совсем захочет завернуться, просто стандартный js копируется, правиться и указывается новый файл в системной настройке.
Алексей Смирнов
10 сентября 2023, 17:08
0
Значит у вас версия минишопа не 4ка, походу.
для передачи параметров можно использовать плейсхолдеры:
{set $allpara = $_modx->getChildIds(31,4,['template' => 3])}
{set $allpara2 = $_modx->getChildIds(29,4,['template' => 3])}

{foreach $allpara2 as $nyam}
  {set $allpara[] = $nyam}
{/foreach}
setPlaceholder('utochka', $allpara); // посмотрите в доке синтаксис.
и уже в tpl вызывайте так:
{if $parent not in list ('utochka' | placeholder)}
  <div class="reward"><span>Артикул:</span> <span class="item">{$article}</span></div>
{else}
{/if}
Алексей Смирнов
09 сентября 2023, 22:22
0
Ну я вам и давал решение на странице товара.
А если у вас артикулы в списках товаров, то тут чтобы не делать запросы для каждого товара, необходимо в сниппет заранее передать данные по родителям. тут придется написать маленький модификатор для array_merge И передать данные в msProduct (или какой вы сниппет используете?)
1. до сниппета нужно получить все тоже:
{set $allpara = $_modx->getChildIds(31,4,['template' => 3])}
{set $allpara2 = $_modx->getChildIds(29,4,['template' => 3])}
потом нам нужно эти 2 массива склеить через array_megre. Но обьяснять как делать этот модификатор — лень.
Возьмем сделаем чуток вычурно, зато понятно:
{foreach $allpara2 as $nyam}
  {set $allpara[] = $nyam}
{/foreach}
{'msProduct' | snippet : [
  'parents' => $catalog, // $catalog - не 0, а id каталога. не нужно сюда писать ноль!
  'forarticle' => $allpara
]}
И далее в шаблоне tpl
указываем так:

{if $parent not in list $allpara}
показать Артикул
{else}
скрыть art
{/if}
Алексей Смирнов
08 сентября 2023, 21:13
+1
вроде, правильно
попробуйте что ли
{if (($_modx->resource.parent in list $allpara) || ($_modx->resource.parent in list $allpara2))}
Спрятали
{else}
показали
  <div class="reward"><span>Артикул:</span> <span class="item">{$article}</span></div>
{/if}
Алексей Смирнов
07 сентября 2023, 22:20
0
2 вызова сделать для 31 и 29. и сделать 2 условия.
{if !(($_modx->resource.parent in list $ali1) || ($_modx->resource.parent in list $ali2))}
Где $ali1 и $ali2 — вызовы с 31 и 29 id.
либо написать свой модификатор array_merge Тк его из коробки нет.
Алексей Смирнов
06 сентября 2023, 20:07
0
А так у вас она не корневая, а с вложенностью… Этот скрин должен был быть в начале.
И тогда это все меняет дело.
нужно брать в зубы лом:
getChildIds
Получать родителей в массив и сравнивать.
те что-то такое
{set $allpara = $_modx->getChildIds(31,2,['template' => 3])}
... $allpara ... // возможно еще нужно сделать манипуляции какие-то.
//можно предварительно распечатать массив и убедиться тчо там все ровно:
<strong>{$allpara | print}</strong>
{if $_modx->resource.parent not in list $allpara}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
Я образно показал какую функцию можно взять и что можно параметры засунуть.
вы, думаю, сможете указать верные. Шаблон подставьте какой у этих ресурсов, ну и глубину выборки по вкусу
31 — Id родителя
2 — глубина
template — шаблон.
Алексей Смирнов
05 сентября 2023, 22:27
0
Просто пишите так:
{if $_modx->resource.parent not in list [29,31] }
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
это запрет вывода артикула на странице товара.
А исключить дочерние категории в списке — просто добавьте эти каталоги с минусом:
'parents' => '0,-29,-31'
но лучше вместо нуля вписать начальный каталог.
Алексей Смирнов
01 августа 2023, 12:00
0
Если у магаза планируется 2 и более мл. товаров и человек выбрал стандартную MODX + minishop, то конечно тут больше вопросов к человеку, а не к коду. Еще больше вопросов возникнет если человек в импорте удаляет все опции и заново их записывает и еще больше вопросов станет, если все товары удаляются (включая опции) и заново грузятся… В крайности предлагаю не впадать ибо это бессмысленно.
Но замечание ваше в уме все равно нужно держать, оно не лишено смысла.
Алексей Смирнов
01 августа 2023, 10:12
+2
Инкремент ограничен лишь, типом переменной, если установить BIGINT, то хватит на миллиарды записей для опций. Не вводите людей в заблуждение.
Алексей Смирнов
19 июля 2023, 21:19
0
скорее всего стоит плагин на загрузку фото. посмотрите в плагинах.
Алексей Смирнов
16 июля 2023, 12:24
+1
Вообще 150 мс инициализация ядра? У меня инициализация на шаредах обычно 20....40мс. Поэтому, думаю что все это зависит от хостинга.
И думаю, что идея в век, где есть куча CMS на любой вкус и цвет — такая себе. Если и делать, то должна быть прям резкая причина и по функционалу и по начинке новой, удобной и т.п. Ведь на создание, продвижение новой кмс нужно и время и деньги и чуйка. Если они у вас есть и вы уверены — пожалуйста. Но нужно понимать что есть риски успеха и риски провала.
Мне например хватает того что есть, а если не хватает, я беру Vue и делаю modx+vue — это и дешевле и быстрее во много раз лично для меня.
Я вот например тоже иногда делаю не популярные в MODX вещи, и думаете они стреляют? фиг. )))) так что серьезно подумайте с холодным расчётом надо оно вам или нет.
Алексей Смирнов
15 июля 2023, 11:34
+1
Теперь стало яснее.
Задачка в любом случае специфичная.
Посмотрите события в MODX при выводе. вот тут
docs.modx.com/3.x/ru/extending-modx/custom-tvs
Не уверен что это то что нужно, возможно, эти события только для рендера и отображения в админке.
Это все чем я могу помочь.
Удачи.
PS посмотрите устройство плагина шопкипера shk_tv_input_output возможно тоже поможет.
Алексей Смирнов
15 июля 2023, 10:47
0
Если брать задачу в лоб, то даже не представляю почему потребовалось сменить тип вывода.
А вообще в таких случаях, обычно просто создается 2 ТВ с разным типом вывода и проблема уходит.
А чтобы детальнее посоветовать, дайте больше информации, хотя бы начните с: для чего менять тип, и с какого типа на какой. Может, есть универсальное решение без смены типа. Например если сайт на феноме — вообще без разницы какой вывод — можно вывод сделать как угодно без смены ТВ-вывода сразу в коде.
Алексей Смирнов
14 июля 2023, 12:50
0
Александр, если у вас есть верстка, то вам не нужен этот компонент в данном случае. Поэтому как-бы примерять его в данной вашей ситуации — нет смысла, так же как и другие темы (например мои или иные).
Думаю, автор имеет в виду, что если человек захочет идти от обратного — сначала функционал, а потом дизайн, то может попробовать этот пакет.
Алексей Смирнов
18 июня 2023, 23:39
+4
Да, ушла в прошлое эпоха старого сайта с докой. Ее «затер я до дыр». Она научила меня читать и писать по MODX-овски и переводить на другие языки. )) Громадное спасибо за это @Василий Наумкин
Сейчас буквально ношусь по новой доке, чудесно! Скорость переключения, это прям космос для меня, конечно, статика она такая быстрая. И моя личная неприязнь к возвращающему скролу страницы теперь утилизирована и снова хочется жить! )) Темная тема понравилась, хотя я противник темной темы, но вот очень зашла! Вообще огромное спасибо за проделанную работу. После таких изменений вдохновляешься еще сильнее на свои подвиги!!!
Спасибо всей команде русского сообщества MODX за то что делаете!
Отдельное спасибо некоему @Баха Волков, что взял и сделал!
Так держать, и даже выше!
Алексей Смирнов
01 июня 2023, 17:27
0
А куда вы хотите эту ссылку отправить? На почту? Показать человеку на экран?
это $AjaxForm->success — оно работает, только если вы запускаете свой сниппет, а не formit.
Поэтому если нужно на почту ссылку отправить — просто добавьте еще поле одно с сылкой.
А если вы хотите показать, то тут сложнее.
Алексей Смирнов
01 июня 2023, 16:41
0
Успешность отправки вообще делается не в хуке, а в настройках при вызове formIT:
{'!AjaxForm' | snippet : [
'successMessage' => 'Спасибо! Ваш отзыв отправлен.',
]}
ну и доку посмотрите: docs.modx.com/current/en/extras/formit/formit.hooks