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

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

С нами с 20 декабря 2014; Место в рейтинге пользователей: #30
Алексей Смирнов
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
Алексей Смирнов
01 июня 2023, 11:13
1
+3
Прикрепляется очень просто. Ответа на поверхнисти нет особо, будет тут.
Для начала создаем сниппет в админке — это будет наш хук. Примерное содеражание его таково на примере xls:
$myfile = array(
    "name" => "Name-of-file.xls",
    "type" => "application/vnd.ms-excel",
    "tmp_name"=> MODX_ASSETS_PATH."path_more/Name-of-file.xls",
    "error"=> 0
    );
$hook->setValue('file', $myfile);
return true;
Тут вам нужно будет указать реальные имена файла в нужных местах и полный путь к файлу в tmp_name. Тут пример с папкой /assets/.
Ну и указать MIME тип присоединяемого файла. (type)

После указываем данный хук в formIT(ajaxForm) и проверяем что все приходит.
У формы на фронте еще должно быть указано enctype=«multipart/form-data» в теге form:
<form method="post" action="/" enctype="multipart/form-data">
Тестируйте, проверяйте.
Удачи.
Алексей Смирнов
31 мая 2023, 23:59
0
Понятно.
Тогда да, боль.
ну и еще как вариант для ускорения — можно просто копировать категорию-ресурс, тогда в новом ресурсе будут уже выделены те ресурсы, что в предыдущем — будет проще работать с этим, раз у вас в категориях выбираются ресурсы.
Еще можно накатать плагин, который при первом сохранении, допустим, запишит все 200 товаров, а вы после просто нажмете крестики и удалите не нужные.
Как-то так.
Алексей Смирнов
31 мая 2023, 23:17
0
А почему вы Карточку-русурс не хотите создавать сразу в Категории-русурсе?
Почему так сложно делаете?
Алексей Смирнов
31 мая 2023, 22:53
+1
Вопрос такой.
Карточка-ресурс имеет 1 родителя или может иметь много родителей?
Иными словами: Карточка товара должна принадлежать мультикатегориям (карточки-категории)?
Почему задаю этот вопрос, потому что кажется, что вы что-то не так делаете, раз у вас подавляющее большинство товаров (карточек) привязывается к категорям.
Расскажите что у вас за категории и что за товары. Возможно, есть решение по проще и быстрее.
Алексей Смирнов
18 мая 2023, 15:44
0
В лексиконах ключи, обычно пишутся так config_key_info, поэтому, есть вариант проверять наличие в строке нижнего подчеркивания. Если у вас есть один определенный суффикс, то можно проверять его на вхождение. Примерно вот так:
{set $key = "_"}
{if $key | in : ("config_key_info" | config)}
нет в лексиконах
{/else}
  Результат: {("config_key_info" | config)}
{/if}
Еще можно проверять на пустоту.
в доке есть примеры работы со строками.
Алексей Смирнов
12 мая 2023, 11:01
0
Если вы хотите просто сменить путь (не меняя сам файл и прочее) то можно просто вывести поле картинки как строку и поменять пути.
Если вы хотите прям менять фото в таблице колекций — загружать, менять в браузере, то скорее всего не получиться простым путем нужно писать много кода.