Артем
С нами с 15 октября 2017; Место в рейтинге пользователей: #1678 часов назад
Отличное дополнение, спасибо!
Подскажите, как организовать файл если стоит msOptionsPrice2 привязан к опции size там может быть много позиций с разн...
[YandexMarket2] интеграция с msOptionsPrice2 1
Сегодня в 00:42
Еще снова вернулась проблемка, после выбора способа доставки почтой РФ — появляется стоимость доставки, но она «прилипает» и не исчезает после переклю...
Расчет стоимости доставки msRussianPost 11
Вчера в 21:57
Лучше деинсталировать и установить новую версию. Там полностью переписан JS.
ms_CDEK2 пропал? 5
Вчера в 20:33
Фильтрация как правило предполагает точное совпадения значений, а тебе нужен поиск.
mFilter2 фильтрация tv 1
Вчера в 19:55
Все исправилось, после замены на 'parents' => $_modx->resource.id
Помогите найти ошибку в шаблоне, теги 13
Вчера в 09:31
А кто подскажет, как в форму Создания/Редактирования ресурса, через ms2Form, добавить возможность выбирать несоклько параметров в одном TV?
Ну то-ест...
Создание ресурсов из фронтенда сайта, зарегистрированными пользователями. 4
Вчера в 08:53
если правильно понял то так
{set $rows = json_decode($_modx->resource.constructor_block, true)}
{foreach $r...
getImageList. Вывести вложенный migx на fenom 1
Вчера в 08:43
Подскажите, если на странице будет две формы, они будут работать? К примеру reCaptchaV3 этого сделать не может, нужно через костыль в виде скрипта, ко...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс 5
20 ноября 2024, 16:25
В сниппете rcv3_html достаточно отложить загрузку через setTimeout (хотя кто-то делает через onClick). Не думаю что мой вариант самый правильный и что...
reCaptcha v3 - отложенная загрузка 1
19 ноября 2024, 10:51
Решил свою проблему через имя пользователя, но хотелось бы через права пользователя «Неограниченные права»
<?php
/**
* Системное событие OnMan...
Редактирование контекста в мультидоменном сайте 1
— либо ты делаешь запрос каждый раз, когда нужно узнать цену
— либо ты кэшируешь ее на любое время, которое считаешь нужным.
В первом случае клиенты твоего сайта получат всегда актуальные цены перед глазами, а во втором — нет, поэтому тебе нужно будет принудительно запрашивать цену перед, например, оформлением заказа, ну и уведомлять клиента о том, если она изменилась за это время.
Вопрос нагрузки на их сервис — не твоя забота. Если они хотят меньшую нагрузку, то пусть добавляют к ценам 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