Артем
С нами с 15 октября 2017; Место в рейтинге пользователей: #1676 часов назад
Ну вот и правильная мысль, я же правильно понимаю, что все дополнения, что написаны на ms2 надо переписывать на ms3 многие авторы это не будут делать,...
MiniShop3 - 1.0.0-alpha 15
Вчера в 10:16
Посмотрел докумендацию Sendit.
и нашел то что искал, конечно надо будет писать побольше кода, но это то что надо, и очень гибко оказывается.
Спасибо...
Как кастомизировать сообщения после Регистрации на сайте? 3
28 ноября 2024, 18:01
Так делал на одном проекте, нужно было добавить поиск по полю pagetitle. Думаю, что можно и на TV переделать.
<?php
class myCustomFilter extends...
mFilter2 фильтрация tv 3
28 ноября 2024, 17:35
На ноде при запуске сервера можно большую часть проинициализировать. Например, прогрузить настройки, чанки и сниппеты в память и не лазить за ними в б...
Плюсы и минусы Vue и gtsAPI 18
27 ноября 2024, 19:13
Вообще можно завести допполе и при сохранении ресурса плагином писать в допполе разбирая pagetitle.
Модификатор сортировки pdoResources по pagetitle 7
27 ноября 2024, 12:36
Добрый день. Появилась новая ошибка: 27.11.2024 12:30:20 ERROR /www/site.ru/core/components/yasmartcaptcha/model/yasmartcaptcha.class.php 60
Reco...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс 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