g0dzilla
С нами с 22 ноября 2017; Место в рейтинге пользователей: #276Знакомимся с Vesp Core
Я уже рассказывал вам о своём новом проекте Vesp, который я использую как заготовку для создания сайтов заказчикам. По мере эксплуатации пришло понимание, что в разных проектах всегда есть некий общий функционал, который можно и нужно выделить в отдельный репозиторий, и покрыть тестами.
Что я и сделал на github.com/bezumkin/vesp-core, теперь осталось рассказать, как его использовать.
Что я и сделал на github.com/bezumkin/vesp-core, теперь осталось рассказать, как его использовать.
[ogImage] — генерация превью с текстом
Нужно красивое превью страницы в соцсетях?
Защита дополнений в деталях
Приветствую. Эта заметка будет полезна скорее для уже состоявшихся авторов компонентов, но возможно начинающим тоже будет полезно изучить механизм и позволит стать будущими авторами дополнений, если ещё в раздумьях.
Не так давно некоторые дополнения на modstore.pro обзавелись защитой. Дополнения можно по прежнему устанавливать из репозитория, но если попробовать скопировать архив с пакетом на другой сайт, то установить ничего не получится. И это было сделано не спроста, так как наглости некоторых людей нет предела, пришлось предпринять меры.
Следом авторам платных дополнений разослали инструкцию о том, каким образом встроить подобную защиту в собственные дополнения. Стоит отметить, что с первого раза сделать по инструкции (несмотря на простоту) не получилось в силу особенностей применяемого варианта сборки пакета. Пришлось разбираться досконально и выяснять, как и что в MODX работает, чтобы сделать это “правильно” и надежно.
Прежде чем продолжить, стоит ознакомиться с специальным методом сборки пакетов – «Сборка transport-пакета без установки MODX». Инструкция написана в далеком 2015 году, однако описанный метод работает до сих пор. Отличие в том, что подход не требует установки MODX для сборки пакета, т.е. сборку запустить можно откуда угодно, имея только исходники пакета и xPDO.
Детали внутри.
Случайные варианты текста
Сниппет для вывода случайного варианта текста
При каждой перезагрузке будет выдает случайный текст по шаблону
При каждой перезагрузке будет выдает случайный текст по шаблону
Изменяем форму заказа minishop2
Отчёт о митапе в Леуварден, Голландия 07 марта 2018
Привет, друзья!
Вчера прошёл вечерний митап в городе Леуварден, Голландия. Это столица региона Фрисландия, в котором я имею удовольствие в данный момент проживать уже месяц.
Митап, по нашим меркам, был очень необычным — он стартовал в 19 часов вечера, в среду, то есть ровненько посередине рабочей неделе. Местом проведения стал Stenden Hotel.
Совершенно неожиданно для организатора, собралось аж 38 человек, со всей Голландии. Так как среди них затесался и один русский — митап проходил на английском языке.
Вчера прошёл вечерний митап в городе Леуварден, Голландия. Это столица региона Фрисландия, в котором я имею удовольствие в данный момент проживать уже месяц.
Митап, по нашим меркам, был очень необычным — он стартовал в 19 часов вечера, в среду, то есть ровненько посередине рабочей неделе. Местом проведения стал Stenden Hotel.
Совершенно неожиданно для организатора, собралось аж 38 человек, со всей Голландии. Так как среди них затесался и один русский — митап проходил на английском языке.
[MinifyX] Новые возможности старичка
Всем привет! Сегодня поговорим про дополнение MinifyX. Все знают, что это, но не все, что оно больше не поддерживается автором. Основная причина — ядро минифая (библиотека Munee) уже давно не обновляется. Вроде есть проблемы с Bootstrap 4.
Но мне он нравится. А главное, он выполняет всё, что требуется — собирает и минифицирует мои скрипты и стили без ошибок. Я не компилирую сасы, лесы, кофе. Единственное, не хватало разных мелочей для удобства. Вот захотелось мне собирать всё в один файл — и обычные скрипты и скрипты дополнений. Сниппетом это сделать не очень просто, но можно — для каждого шаблона делать отдельный вызов с перечнем необходимых файлов. Но этот вариант не вызвал у меня энтузиазма. И я решил реализовать другой подход. У меня сниппет MinifyX вызывается в чанке head, в котором я определяю секцию HEAD страницы. Поэтому я подумал, а почему бы не использовать подход загрузки файлов по требованию.
Но мне он нравится. А главное, он выполняет всё, что требуется — собирает и минифицирует мои скрипты и стили без ошибок. Я не компилирую сасы, лесы, кофе. Единственное, не хватало разных мелочей для удобства. Вот захотелось мне собирать всё в один файл — и обычные скрипты и скрипты дополнений. Сниппетом это сделать не очень просто, но можно — для каждого шаблона делать отдельный вызов с перечнем необходимых файлов. Но этот вариант не вызвал у меня энтузиазма. И я решил реализовать другой подход. У меня сниппет MinifyX вызывается в чанке head, в котором я определяю секцию HEAD страницы. Поэтому я подумал, а почему бы не использовать подход загрузки файлов по требованию.
Вывод коллекций в коллекциях
Всем привет!
Не так давно встала задача, чтобы в админке ресурс с типом Collections мог выводить дочерние ресурсы с таким же типом Collections. Поискал в сети наткнулся на статью https://modx.pro/help/10929/, где описывалась похожая задача, но решения никто не подсказал.
Мое решение не претендует на совершенство и при обновлении компонента скорее всего слетит, но поставленную задачу решает сполна.
И так решение:
В файле core/components/collections/processors/mgr/resource/getlist.class.php ищем строку 325
Вот такое короткое решение, которое сэкономило кучу времени.
Спасибо за внимание!
Не так давно встала задача, чтобы в админке ресурс с типом Collections мог выводить дочерние ресурсы с таким же типом Collections. Поискал в сети наткнулся на статью https://modx.pro/help/10929/, где описывалась похожая задача, но решения никто не подсказал.
Мое решение не претендует на совершенство и при обновлении компонента скорее всего слетит, но поставленную задачу решает сполна.
И так решение:
В файле core/components/collections/processors/mgr/resource/getlist.class.php ищем строку 325
'class_key:!=' => 'CollectionContainer',
и комментируем.Вот такое короткое решение, которое сэкономило кучу времени.
Спасибо за внимание!
[tinyCompressor] Автоматическая оптимизация и сжатие файлов
Что делает данный компонент?
Оптимизация изображения для сайта — это уменьшение объема изображения без видимой потери качества.
При загрузке файла через файловый менеджер, ТВ-поле в ресурсе файла изображения (jpg/png) и при создании превью изображения — он автоматически его оптимизирует.
Сжатие PDF-файлов — уменьшает размер загружаемых PDF-файлов через файловый менеджер, ТВ-поле.
Оптимизация изображения для сайта — это уменьшение объема изображения без видимой потери качества.
При загрузке файла через файловый менеджер, ТВ-поле в ресурсе файла изображения (jpg/png) и при создании превью изображения — он автоматически его оптимизирует.
Сжатие PDF-файлов — уменьшает размер загружаемых PDF-файлов через файловый менеджер, ТВ-поле.
[Matrous] - компонент для фильтрации мата
Всем добрый.
Иногда кому то необходимо фильтровать мат, к примеру в комментариях.
Иногда кому то необходимо фильтровать мат, к примеру в комментариях.