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

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

С нами с 20 декабря 2014; Место в рейтинге пользователей: #43
Алексей Смирнов
28 сентября 2023, 22:05
0
Если в вариантах до 5...7 значений и они не будут особо дополняться, то можно и через мини-замену организовать без сниппета.
например:
[[+title:is=`1`:then=`Игрок`]][[+title:is=`2`:then=`Запасной`]]
Только для рендера создайте поле с именем title-r, чтобы результат рендера не затирал основной title
Алексей Смирнов
28 сентября 2023, 20:09
0
Если установлен pdoToolse, то достаточно вписать в renderChunk:
[[#[[+idmy]].pagetitle]]
где [[+idmy]] — название поля в migx где id ресурса.
Алексей Смирнов
16 сентября 2023, 23:16
+1
думаю, тут можно (лучше) воспользоваться не tvFilters, а where. Описание как работать и делать выборки для мульти тв описано тут: modx.pro/solutions/23005
Алексей Смирнов
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
Александр, если у вас есть верстка, то вам не нужен этот компонент в данном случае. Поэтому как-бы примерять его в данной вашей ситуации — нет смысла, так же как и другие темы (например мои или иные).
Думаю, автор имеет в виду, что если человек захочет идти от обратного — сначала функционал, а потом дизайн, то может попробовать этот пакет.