В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.
В статьях указаны источники. Цель этого раздела — сохранить статьи, которые могут в будущем пригодиться. Ведь сайты могут просто пропасть — их могут заблокировать, владелец может забыть продлить хостинг или домен, а статья-инструкция может пригодится именно в самый неподходящий момент.
Сниппет вывода TV параметров при условии их наличия
21 декабря 2022, 08:27
пригодился для вывода списка параметров товара из TV
наименование TV берется из description
UPD: после долгих раздумий добавил в фильтр id категории
Читать дальше
наименование TV берется из description
UPD: после долгих раздумий добавил в фильтр id категории
Читать дальше
Решение проблемы "Добавление комментариев закрыто. MODx Revolution, компонент quip"
21 декабря 2022, 08:26
Сообщение от модуля Quip комментариев:
Добавление комментариев закрыто. MODx Revolution, компонент quip
Как решить проблему —
Зайти в Сниппет: QuipReply(), вкладка параметры, разрешить редактирование, находим closeAfter поле, и вместо 14, пишем 99999999999. Сохранить набор параметров, Сохранить. Очистить кэш.
Повторяем толе самое для Сниппет: Quip ().
Теперь форма ввода комментариев не пропадет спустя 14 дней.
Читать дальше
Добавление комментариев закрыто. MODx Revolution, компонент quip
Как решить проблему —
Зайти в Сниппет: QuipReply(), вкладка параметры, разрешить редактирование, находим closeAfter поле, и вместо 14, пишем 99999999999. Сохранить набор параметров, Сохранить. Очистить кэш.
Повторяем толе самое для Сниппет: Quip ().
Теперь форма ввода комментариев не пропадет спустя 14 дней.
Источник: modx.pro/solutions/23099
Читать дальше
Как сделать мультикатегории на MODX с TV-шкой
21 декабря 2022, 08:25
Всем привет.
Недавно глубоко озадачился этим решением и в результате которого нехитрым (почти) способом можно сделать мультикатегории.
Подходит данное решение для сайтов у которых, наверное не более 5..10к товаров. На больших, думаю, будет тормозить, (не проверял) так что обратная связь приветствуется.
Читать дальше
Недавно глубоко озадачился этим решением и в результате которого нехитрым (почти) способом можно сделать мультикатегории.
Подходит данное решение для сайтов у которых, наверное не более 5..10к товаров. На больших, думаю, будет тормозить, (не проверял) так что обратная связь приветствуется.
Читать дальше
Remove Duplicates MODX
21 декабря 2022, 08:24
Может кому пригодится.)
Компонент ищет дубликаты ресурсов, в разных контекстах!
PS^ версия сыровата, JS накидал на коленке (эффекты и тп пока отсутствуют).
Есть два варианта обработки ресурсов:
Читать дальше
Компонент ищет дубликаты ресурсов, в разных контекстах!
PS^ версия сыровата, JS накидал на коленке (эффекты и тп пока отсутствуют).
Есть два варианта обработки ресурсов:
- Перемещение в корзину
- Создание нового алиаса с прфиксом ID ресурса.
Читать дальше
Возвращаем привычный вид страницы после установки пакета SEO Suite
21 декабря 2022, 08:24
Разработчик sterc, выпустивший два известных модуля для СЕО-шников: SEO Tab и SEO Pro — сделал новый пакет.
Называется он: SEO Suite. Данный пакет объединил в себе два выше указанных пакета + был полностью переписан весь код и добавлены новые плюшки.
Всё бы ничего, но как по мне он очень уж сильно меняет внешний вид страницы в админке. Стало неудобно =(
Поэтому не долго думая — вернул прежний вид, но при этом оставив новый функционал.
Читать дальше
Называется он: SEO Suite. Данный пакет объединил в себе два выше указанных пакета + был полностью переписан весь код и добавлены новые плюшки.
Всё бы ничего, но как по мне он очень уж сильно меняет внешний вид страницы в админке. Стало неудобно =(
Поэтому не долго думая — вернул прежний вид, но при этом оставив новый функционал.
Читать дальше
[СДЕЛАЙ САМ] Ajax Регистрация, Авторизация, Сброс пароля, Редактирование профиля
21 декабря 2022, 08:23
Задача: сделать ajax регистрацию, авторизацию, сброс пароля и редактирование пользователя, используя минимум сторонних компонентов.
Почему минимум? Ну часть из тех компонентов, что реализуют подобный функционал, платная (Office, ajaxLogin) и бюджеты есть не всегда на них есть. Некоторые (ajaxLogin) в данный момент не доступны из-за смерти автора. Общий недостаток большинства компонентов это то, что они загружают дополнительные скрипты и стили, что порой приводит к необходимости дополнительно оптимизировать сайт. Компонент Login не работает по ajax. Однако это можно обойти , но runSnippet запустит много всего и не факт что это всё нужно в данный момент. Поэтому предлагаю своё решение.
Нам понадобится:
1. AjaxForm;
2. FormIt;
3. Этот репозиторий.
Порядок действий:
1. Скопировать core/elements/snippets/ajaxidentification.class.php.
2. Создать в админке сниппеты
2.1 AjaxIdentification (код лежит в core/elements/snippets/hooks/AjaxIdentification.php);
2.2 userExists (код лежит в core/elements/snippets/validators/userExists.php);
2.3 userNotExists (код лежит в core/elements/snippets/validators/userNotExists.php;
2.4 ActivateUser (код лежит в core/elements/snippets/ActivateUser.php) // этот можно вызывать прям из файла если хотите.
3. В вывоз AjaxForm в параметр hooks первым значением добавить AjaxIdentification, сюда же добавить параметр method ( register — регистрация, login — авторизация, forgot — восстановление доступа, update — обновление данных).
4. В js на событие af_complete добавить редирект на нужные страницы. Ссылки можно получать
из мета-тегов с именами типа loginSuccessUrl.
Всё. Далее немного потока сознания и пояснений.
Читать дальше
Почему минимум? Ну часть из тех компонентов, что реализуют подобный функционал, платная (Office, ajaxLogin) и бюджеты есть не всегда на них есть. Некоторые (ajaxLogin) в данный момент не доступны из-за смерти автора. Общий недостаток большинства компонентов это то, что они загружают дополнительные скрипты и стили, что порой приводит к необходимости дополнительно оптимизировать сайт. Компонент Login не работает по ajax. Однако это можно обойти , но runSnippet запустит много всего и не факт что это всё нужно в данный момент. Поэтому предлагаю своё решение.
Нам понадобится:
1. AjaxForm;
2. FormIt;
3. Этот репозиторий.
Порядок действий:
1. Скопировать core/elements/snippets/ajaxidentification.class.php.
2. Создать в админке сниппеты
2.1 AjaxIdentification (код лежит в core/elements/snippets/hooks/AjaxIdentification.php);
2.2 userExists (код лежит в core/elements/snippets/validators/userExists.php);
2.3 userNotExists (код лежит в core/elements/snippets/validators/userNotExists.php;
2.4 ActivateUser (код лежит в core/elements/snippets/ActivateUser.php) // этот можно вызывать прям из файла если хотите.
3. В вывоз AjaxForm в параметр hooks первым значением добавить AjaxIdentification, сюда же добавить параметр method ( register — регистрация, login — авторизация, forgot — восстановление доступа, update — обновление данных).
4. В js на событие af_complete добавить редирект на нужные страницы. Ссылки можно получать
из мета-тегов с именами типа loginSuccessUrl.
Всё. Далее немного потока сознания и пояснений.
Читать дальше
Билдер SQL запросов для modx, minishop2 и TV
21 декабря 2022, 08:22
Всем привет, просили меня недавно сделать выгрузку со старого сайта на modx с более чем 200к товаров, т.к. я уже давно не работал с modx, абсолютно забыв методы API, а также помня, насколько медленно и ресурсозатратно оно работает было решено писать SQL напрямую и все бы ничего, пока я не увидел структуру tv полей. Руками писать SQL с выборкой необходимых TV было адским адом, и было решено за часик накидать мини билдер SQL запросов
Получился примерно такой в использовании билдер, по мне покрывает 100% моих задач в формировании SQL для выгрузок из modx & ms2:
Если хочется сразу к коду
Читать дальше
Получился примерно такой в использовании билдер, по мне покрывает 100% моих задач в формировании SQL для выгрузок из modx & ms2:
$builder = new SimpleBuilder(); $builder->addResourceFields('id', 'pagetitle', 'longtitle') ->addMs2Fields('article', 'price') ->addTvFields('price_opt', 'product_time', 'valute', 'remains', 'product_tax') ->where('deleted', '=', false) ->where('published', '=', true) ->where('class_key', '=', 'msProduct') ->where('remains', '!=', 0) ->whereNotNull('remains') ->whereIn('id', [18559, 18560]) ->limit(1) ->offset(1) ; $sql = $builder->sql(); $products = $modx->query($sql)->fetchAll(PDO::FETCH_ASSOC);Под катом код и результат SQL который формирует билдер
Если хочется сразу к коду
Читать дальше
AjaxForm без jQuery
21 декабря 2022, 08:21
Приветствую тебя дорогой читатель. Давно хотел это сделать и наконец-то сделал — теперь для работы AjaxForm не нужен jQuery. Для этого нужно
1. Перейти по ссылке.
2. Заменить содержимое папок core/components/ajaxform и assets/componentns/ajaxform/ данными из репозитория.
3. Заменить код сниппета AjaxForm кодом из репозитория.
Если будут ошибки пишите в комментарии, а под катом немного о нюансах.
Читать дальше
1. Перейти по ссылке.
2. Заменить содержимое папок core/components/ajaxform и assets/componentns/ajaxform/ данными из репозитория.
3. Заменить код сниппета AjaxForm кодом из репозитория.
Если будут ошибки пишите в комментарии, а под катом немного о нюансах.
Читать дальше
MODX + Docker
21 декабря 2022, 08:20
Всем привет!
Увидел тут в комментариях к одной заметке вопрос про MODX в Docker. Так уж совпало, что я как раз недавно освоил работу с Docker для своих проектов на Vesp, и Pixmill попросили меня сделать что-то такое же и для MODX.
Вызов был принят — и вот результат github.com/bezumkin/modx-docker, можете использовать. Ниже будут пояснения.
Читать дальше
Увидел тут в комментариях к одной заметке вопрос про MODX в Docker. Так уж совпало, что я как раз недавно освоил работу с Docker для своих проектов на Vesp, и Pixmill попросили меня сделать что-то такое же и для MODX.
Вызов был принят — и вот результат github.com/bezumkin/modx-docker, можете использовать. Ниже будут пояснения.
Читать дальше
ZoomX для новичков
21 декабря 2022, 08:18
ZoomX — компонент, который подключает шаблонизатор Smarty и делает элементы файловыми. Также есть роутер, контроллеры, как во фреймворках. Главный плюс, конечно — это файловые элементы без костылей в виде статических элементов.
Как мне показалось, автор считает, что компонент предназначен для опытных разработчиков, более менее знакомыми с фреймворками, дабы те не ушли с MODX. Могу ошибаться, конечно) Моё же мнение таково: ZoomX нужно изучать сразу же, вместе с pdoTools. Почему? Чтобы не тратить время на изучение стандартного парсера и на решение проблем с ним при реализации чего-то сложнее вывода заголовка страницы. Smarty гораздо проще в использовании. Хранение элементов в базе может отпугнуть новичков. Именно ZoomX, а не выход третьей версии MODX — важнейшая веха в развитии системы со времён pdoTools. Но все статьи про компонент написаны для более-менее опытных разработчиков, новичкам будет сложно разобраться. Поэтому, собственно, и решил написать эту статью.
Читать дальше
Как мне показалось, автор считает, что компонент предназначен для опытных разработчиков, более менее знакомыми с фреймворками, дабы те не ушли с MODX. Могу ошибаться, конечно) Моё же мнение таково: ZoomX нужно изучать сразу же, вместе с pdoTools. Почему? Чтобы не тратить время на изучение стандартного парсера и на решение проблем с ним при реализации чего-то сложнее вывода заголовка страницы. Smarty гораздо проще в использовании. Хранение элементов в базе может отпугнуть новичков. Именно ZoomX, а не выход третьей версии MODX — важнейшая веха в развитии системы со времён pdoTools. Но все статьи про компонент написаны для более-менее опытных разработчиков, новичкам будет сложно разобраться. Поэтому, собственно, и решил написать эту статью.
Читать дальше