![Василий Наумкин](/assets/images/avatars//a95a4b422626318b96b9e46b39f9b729-64.jpg?t=1725751916)
Василий Наумкин
С нами с 08 декабря 2012; Место в рейтинге пользователей: #1- Заметки 11
- Комментарии 24
7 часов назад
Никак. И это небезопасно в первую очередь для тех, кто будет платить.
Форма ввода карты в платежном плагине Modx Minishop2 1
7 часов назад
У минишопа из коробки нет уведомлений о регистрации.
как отключить уведомление о регистрации? 1
7 часов назад
Вешать надо на три события msOnAddToCart, msOnChangeInCart, msOnRеmoveFromCart. И менять надо не итоговую стоимость, а цены отдельных товаров в корзин...
Смена итоговой суммы корзины 1
7 часов назад
«Показывать вложенные товары» позволяет видеть в категории первого уровня, товары из дочерних категорий. А делать товары вложенными в другие товары эт...
Дочерние документы в товарах минишопа 1
Вчера в 16:41
Вопрос, компонент умеет работать со стандартной галереей MiniShop2?
ImgsPaste - дружелюбная вставка фотографий из ms2Gallery, MIGX в контент 44
06 сентября 2024, 12:27
Спасибо, Александр. В целом, удаление 1-й версии перед установкой 2-й помогает, но теряются все заполненные поля соответственно.
ExtraFields. Дополнительные поля для ресурса (modResource) и пользователя (modUserProfile). 37
06 сентября 2024, 08:27
Нашел баг, если установить значения по умолчанию для типа поля изображение, а затем заполнить блок контентом, то поле изображение может перезаписаться...
PageBlocks. Удобное управление контентом сайта. 34
Я действительно не понимаю, в чём может быть проблема вывести какие-то значения в чанке, а потом скопировать их через javascript.
Если это получается сделать с title и alt, что мешает это сделать с другими элементами? Очевидно, вы просто не знаете, как работать с jQuery.
В моём коде title и alt — это атрибуты тега img, поэтому и обращение к ним идёт через image[0].title и image[0].alt. Если рядом с картинкой будет элемент с классом, например, desc, то получить его можно так:
Это весь нужный javascript код. 80 lvl не требуется даже близко.
Чтобы всё работало, нужно не забыть вывести описание на страницу:
Я вывожу его в скрытом виде, чтобы не мешало.
А еще нужно предусмотреть блок для вывода текста в главной картинке
Как видно, речь исключительно о работе с javascript, никаких особенностей, связанных с ms2Gallery, здесь нет.
Все верно. Из-за этого и была проблема. Дело в том, что $modx->regClientStartupScript() и подобные методы работают со свойствами самого $modx, а вот при сохранении кеша используются свойства самого ресурса. А так, как в отработанных уже после процессинга тегах выполняется типа $modx->regClientStartupScript() (который устанавливает свойства для $modx, но не устанавливает их для $modx->resource), то при генерации кеша документа этих скриптов в кеше просто нет. joxi.ru/4Ak3wb9tMX8nGA
Решение: пишем плагин на событие OnBeforeSaveWebPageCache, простейший вид:
И тогда при генерации кеша документа будут сохранены все скрипты. joxi.ru/LmGVQx0uRJN1Xr
При чем это будет выполняться только при первом заходе на страницу. Когда документ уже закеширован будет, это не будет выполняться.
UPD: Может даже имеет смысл это в ядро запулить (то есть код кешманагера поправить), так как очень похоже на багу самого MODX-а. Какая-то глупость в двух отдельных сущностях хранить эти переменные и создавать/получать в разных местах на разных этапах.
Result:
Все ajax запросы eventsCalendar2 отправляются на текущую страницу, где сниппет должен их словить, обработать, выдать ответ и прервать работу парсера. В общем, как написано в этой статье.
И всё отлично работает, за исключение того, что при компиляции шаблона Fenom он прописывает вывод всех данных не в переменную, которую покажет в конце, а выводит их сразу через echo.
Соотвественно, в ответ ajax запроса попадают все сниппеты, обработанные до eventsCalendar2 — и ты видишь их на странице. Это косяк старой архитектуры eventsCalendar2, ведь по уму нужно бы отправлять все запросы на отдельный коннектор или плагин, как в mFilter2 и miniShop2.
Но можно выйти из ситуации и сейчас:
1. Нужно вызывать eventsCalendar2 в шаблоне, перед всеми другими сниппетами, и сохранять его вывод в переменную.
2. А переменную уже выводить на странице. Но не в контенте, а тоже в шаблоне или в чанке, потому что ресурс обрабатывается перед шаблоном и переменная там еще будет пуста.
Тогда при обычной загрузке страницы сниппет отработает, данные сохранятся в переменную и выведутся в нужном месте страницы. А при ajax запросе сниппет отреагирует первым и выдаст чистый ответ, без других сниппетов.
Примерно так:
Кстати говоря, можно так сохранять и вывод других сниппетов, чтобы вызывать их в одном месте, а показывать в другом.
Наверное, можно и как-то красивее написать, но я не придумал.
Теперь никто не откроет полноразмерные картинки, и ты можешь отдавать их через PHP покупателям.
1. естественно меняем класс обработчик фильтров. Идем в настройки системы и в настройках mSearch2 меняем параметр mse2_filters_handler_class на CustomFilter
2. теперь нам нужно создать сам класс. для этого создаем файл core/components/msearch2/custom/filters/custom.class.php с содержимым
осталось добавить в чанк вызова мфильтра строчку
вуаля — фильтр работает как нужно ;)
Файл нужно сделать исполняемым, проверить наличие Python3 и путь к нему на сервере, а затем вызывать с указанием имени файла или путём к директории.
Скрипт переименует все файлы так, что останутся только символы 0-9- и _.
Если файл с новым именем уже есть в директории, то ему (имени) будет добавлена цифра на конце. Во время работы скрипта выводятся имена всех обработанных файлов.
Благодарность можно перечислять вот здесь.
Скрипт поставляется «как есть» — вы используете его на свой страх и риск. Претензии по работе скрипта не принимаются.
1. Я не смог найти способ проверить наличие дублей, вообще. Все статьи в интернете больше походят на набор бабушкиных сплетен «зайдите в гугл, поищите так, а потом на яндекс, поищите эдак — видите, у вас разные результаты, значит у вас там где-то дубли!».
2. Если на сайте есть страницы, которые Яндекс исключил из поиска, наверное — он должен где-то их показывать? Не вижу
3. Откуда вообще могут взяться дубли по url, если этих url нигде нет? Ссылки на сайте выводятся как надо, в sitemap.xml — тоже. Яндекс сам при индексировании будет убирать слэш у контейнеров, что ли?
Ну а теперь ответы.
Friendly urls — это команды движку открыть какую-то страницу не по номеру, а по имени. Имя отправляется на запрос в index.php и он уже думает, какую страницу отдать. Так что, Apache2 и Nginx здесь сразу не при чём, работать нужно с движком сайта.
Для примера я набросал простой плагин, который сравнивает запрошенный адрес с каноническим для страницы, и если они не совпадают — делает 301 редирект.
Конечно, его нужно внимательно тестировать, но общее направление работ понятно.
2. Вызови mFilter2
3. Допиши javascript для скрытия кнопки на странице, когда больше нечего показывать:
4. По желанию можно добавить функцию setMore, которая будет писать сколько загрузится результатов на кнопке:
Вызов этой функции нужно раскомментировать в конце первой функции и добавить при загрузке страницы:
Вот так у меня на тесте всё работает, даже пагинация кнопками. Вот вся тестовая страница.
Вызывать как-то так: