Артем
С нами с 15 октября 2017; Место в рейтинге пользователей: #167Вчера в 17:14
В vesp долго переезжать. Нету модульности никакой и с авторизацией, в смысле с разграничением прав, там Василий особо не напрягался :-)
Плюсы и минусы Vue и gtsAPI 17
Вчера в 15:41
Параметр sortby сортирует по полю в базе. У вас в базе нет поля «pagetitle:getSurname», есть только «pagetitle».
Я бы предложил фамилию записать в ...
Модификатор сортировки pdoResources по pagetitle 2
Вчера в 13:01
Забыл написать версия modx 3.0.5
И сама форма
<form data-si-form="FormSlider" data-si-preset="slider_form" data-si-event=&quo...
[SendIt 2.0.0] Пагинация и обновлённая загрузка файлов 20
Вчера в 09:34
В критерия должны передаваться параметры where это все что можно передать
т.е.
возможно только так
$criteria = array(
"article:LIKE =>...
Массовое удаление 7
25 ноября 2024, 22:34
Вдруг кому понадобится… Прописать TV параметр в источнике файлов для MIGX можно так (для примера TV `ln`):
[[!migxResourceMediaPath...
Источник файлов и migx 6
25 ноября 2024, 21:01
Привет
Подскажи, пжл как добавить поля из компонента msFieldsmanager?
Скрин
msPre - фильтры по опциям minishop2 11
25 ноября 2024, 20:03
А как добавить если чекбоксы?
msPre добавление кастомного поля (списка с автодополнением) 4
25 ноября 2024, 08:00
ну тогда groupby и having«query» принимает все параметры pdoFetch и в нем есть и groupby и having. Пример навскидку:
"query":{
&quo...
Кейс gtsAPI. CRUD пользователей на фронте 2
24 ноября 2024, 20:31
Правильный вариант из текущей документации такой:
{set $condition = 1}
{switch $condition}
{case 0, 1, 2}
сработае...
Конструкция switch case без break в Fenom 6
— либо ты делаешь запрос каждый раз, когда нужно узнать цену
— либо ты кэшируешь ее на любое время, которое считаешь нужным.
В первом случае клиенты твоего сайта получат всегда актуальные цены перед глазами, а во втором — нет, поэтому тебе нужно будет принудительно запрашивать цену перед, например, оформлением заказа, ну и уведомлять клиента о том, если она изменилась за это время.
Вопрос нагрузки на их сервис — не твоя забота. Если они хотят меньшую нагрузку, то пусть добавляют к ценам TTL, либо предоставляют тебе возможность общаться с их сервисом в рилтайме посредством сокетов.
Лично мне вариант с сокетами кажется наиболее разумным решением — клиенты всегда видят актуальные цены, не нужно слать по 150 запросов в секунду, все довольны.
Если уж ты решил перейти на Fenom, то имеет смысл переписать эту конструкцию целиком. Сверху в head пишешь:
а затем просто
И никаких дополнительных openGraph_Img не нужно.
MIGX TV — это не более чем простой JSON, поэтому в Fenom с ним можно работать без всяких getImageList.
Ты можешь распечатать $data на странице и посмотреть, что там внутри:
Быстрое решение в 1 строку — заменить эту строку на
Теперь для fullname есть альяс и выборка ломаться не будет.
А по-хорошему надо это нормально отрефакторить.
Попозже закину issue или PR.
а вот такого быть не должно — стоит заглянуть в процессор и посмотреть, почему там в count прилетает неверная переменная
сама проблема со списком заказов похожа на это, но в твоем случае вроде счетчики работают
я бы в первую очередь смотрел на то, что возвращает процессор заказов, а потом проследил бы логику его работы, гляди и проблема найдется
еще загляни в консоль, может и вовсе проблема не серверная, а какой-нибудь js отвалился
P.S. по внезапному совпадению, у меня на одном из проектов тоже отваливается список заказов, если отсортировать по покупателю, на твоем скрине именно так и сделано, поэтому попробуй поменять сортировку, авось у тебя тот же кейс
пока что я еще не смотрел, почему так происходит, вероятно, виноват какой-нибудь сторонний компонент
или ты хочешь готовый код, чтобы копипастом себе его вставить?
Так и тут — создавай 25 маленьких чанков, чтобы обработать одну вьюху.
Правда?
Задача: вывести массив товаров, у каждого товара 3 поля — id, sizes, pictures. Каждые 3 итерации меняется класс товара. Сначала 'a', потом 'b', потом 'c', потом по новой. Если есть размер 50, то товар получает класс 'xl', если же 50 нет, но есть 48, то 'l', в противном случае 'm'. В массиве 'pictures' содержится 2 поля — image & thumb. Если thumb нет, то нужно вывести image.
На вход получаешь один массив со всеми товарами.
Покажи, пожалуйста, альтернативное решение без проблем. Разумеется, без Fenom.
Почему? Smarty используется вне modx? Да. Fenom используется вне modx? Да.
Можно было бы написать некий аналог Fenom, но с некоторыми крутыми фичами, которые работали бы только в modx.
Тут согласен, да. Чего только стоят issue в репе Fenom о том, что ignore не работает в modx.
На данный момент родной «шаблонизатор» в modx просто нельзя назвать шаблонизатором — он не справляется с большинством типовых задач шаблонизации, это же очевидно.
Лаконичнее в нем только вызов тегов — тут согласен. Но в реальных сценариях никто не вызывает просто теги, практически всегда требуется дополнительная обработка. А когда ты пишешь сниппет «If», то это уже не кажется таким лаконичным.
Да, вот если бы в нем был такой функционал, то это был бы полноценный шаблонизатор, со своими фичами и идеей, и это было бы круто.
Проясню, что все негодование связано с тем, что текущий вариант шаблонизации в modx без использования Fenom приносит исключительно боль и страдания.
'id' | placeholder — то же самое, что и $modx->placeholders['id'], какие тут могут быть подводные камни? Если $modx->placeholders['id'] доступен, значит и альтернативная конструкция что-то вернет.
Так стандартный «шаблонизатор» практически ничего не умеет. Он призван лишь фильтровать вывод. Это, например, когда нужно вывести текст-заглушку, если плейсхолдер пуст. Тут — никаких проблем. Но что-то сложнее — увы.
Поэтому по большому счету их даже некорректно сравнивать, у них разное предназначение, и там, где Fenom справляется без проблем, стандартный «шаблонизатор» ни в зуб ногой, как говорится.
Под вариациями можно понимать обращение к массиву либо через точку, либо через квадратные скобки, но это легко решается — к массиву можно обращаться всегда через скобки, прямо как в php.
Так это для тебя привычен этот вариант, а если тебе достанется сайт от другого разработчика, которому будет привычен вариант notequals?
Так стандартные модификаторы напрямую связаны со стандартными тегами modx.
Не будешь же ты проверять через Fenom-овский {if} наличие [[*id]]
Так это и так уже есть — альтернативный синтаксис через прямую черту. Например,
Чем не единый стиль?
Шаблонизатор — это ведь про удобную обработку входящих данных в твоем шаблоне.
Представь, что тебе в чанк прилетел массив, который тебе нужно обработать.
Для первых 3 элементов тебе нужно добавить один css-класс, для остальных — другой.
Шаблонизатор должен решать эти задачи, в этом его и назначение.
Fenom с этим отлично справляется, как и какой-нибудь Smarty/Twig/Blade/etc.
Фильтры ввода-вывода не могут даже по массиву пройтись, тебе нужно будет писать сниппеты или парсить малюсенькие чанки столько раз, сколько элементов в твоем массиве.
Чувствуешь разницу?
Сниппеты нужны для инкапсуляции небольшой логики, которую нерационально оставлять в шаблоне, но никак не для одного if, как в случае со стандартными фильтрами.
Что уже говорить про разношерстность этих модификаторов. Одних только != модификаторов (notequalto, notequals, isnt, isnot, neq, ne) уже шесть штук, зачем? Один разработчик использует одно, второй — другое, третий — третье.
Так что еще очень хороший вопрос о том, что разношерстнее — модификаторы или несколько вариаций обращения к массиву в Fenom.
Если «шаблонизатор» не позволяет пройтись по массиву в цикле, то это никакой не шаблонизатор, это фильтры ввода-вывода — именно так они правильно и называются.
Ну а в методе уже можно поменять логику, как душе угодно.
Что значит «свой шаг»? Напиши полную задачу.
Открыть сниппет msProducts, написать в поиске includeThumbs, а затем продублировать подобную выборку в pdoResources.
Если не нравится такое решение, то можно вызывать msProducts дважды, вряд ли это радикально повлияет на производительность, особенно в рамках карусели, где редко бывает больше 10-20 товаров.
Либо можно написать свою собственную выборку в новом сниппете, с помощью pdoFetch.
Либо на худой конец скопировать msProducts и убрать обработку чанка.
Собственно, можно было бы воспользоваться общим параметром &return, выставив json, но в msProducts есть такая строка:
Это значит, что из сниппета можно вернуть либо список id, либо распарсенный шаблон (строку).
Отсюда простой вывод: если нужен массив, то используй pdoResources в связке с 'return' => 'json'.
Там есть готовые примеры и код с комментариями, по которому не сложно разобраться.
Тебе нужно просто получить нужный товар по артикулу
ну а затем просто добавить его в корзину через API