How to

Add howto

Резервное копирование сайтов в Яндекс Диск


Благодаря статье Михаила Воеводского заметил, что тема резервного копирования востребована в сообществе. Решил поделиться своим скриптом резервного копирования написанным на Python. Примечателен он тем, что полностью удовлетворяет закону импортозамещения заливает файлы на Яндекс Диск, раскладывая их по папочкам вида ГГГГ-ММ-ДД. Это не все его приятные особенности, вот список:

  • Умеет удалять старые бекапы с ЯДиска, если они старее чем N дней (настраивается в config.yaml)
  • Умеет удалять старые логи с сервера
  • Раскладывает бекапы на ЯДиске по папкам вида: ГГГГ-ММ-ДД
  • Бекапит системные папки: /etc/, /var/log/, /root/
26 june 2016, 14:04    Павел Гвоздь
25    899    15 +14

Comparison: картинка-превью из ms2Gallery

Возникла необходимость использовать дополнение Comparison для сравнения обычных документов (не товаров Minishop). Для загрузки изображений используется дополнение ms2Gallery.

Задача: сделать так, чтобы превью для таблицы сравнения брались из изображений ms2Gallery.

Решение:

Шаг 1: Присоединяем таблицу с картинками через leftJoin. При этом указываем размеры превью. В моем случае это 206x117. Если у вас другие размеры — поставьте свои.

[[!CompareList?
	&leftJoin=`{
		"206x117": {"class":"msResourceFile","alias":"206x117", "on": "206x117.resource_id = modResource.id AND 206x117.path LIKE '%/206x117/' AND 206x117.rank=0"}
	}`
	&select=`{
		"modResource":"*"
		,"206x117":"206x117.url as 206x117"
	}`
]]
Шаг 2: В чанке оформления tpl.Comparison.head заменяем плейсхолдер [[+thumb]] на новый с размерами вашей картинки, т.е в моем случае [[+206x117]].

Наслаждаемся результатом.
04 june 2016, 13:22    Иван Бондаренко
2    405    5 -2

Дополнительные поля профиля юзера (не extended)


Разрабатываю проект, в котором необходимо было реализовать более простое редактирование дополнительных полей профиля, чем есть из коробки. К слову, неудобное редактирование — это не единственный минус нативного способа расширения профиля полями. Ни для кого не секрет, что фильтрацию по JSON полям нормально не осуществить, только костылями. Фактически, мне надо было получить решение, которое бы расширяло стандартный код MODX, не трогая исходники, дабы сохранить карму в порядке возможность обновления системы.
Пришёл к выводу, что буду расширять стандартную вкладку профиля «Общая информация». При желании можно чуть переписать код в событии OnUserFormPrerender и создать свою вкладку со своими полями.
31 may 2016, 01:36    Павел Гвоздь
48    1392    57 +19

[Видео] Создание кастомной таблички в админке MODX

или «Говнокодим с customExtra»...

27 april 2016, 15:51    Илья Уткин
10    887    4 +18

[UPDATE] Разные скидки в зависимости от общей суммы корзины

По следам записи Михаила Воеводского и этого объявления о работе был написан плагин для miniShop2, который позволяет выставить скидку в процентах для всей корзины в зависимости от общей суммы корзины.
Скидка выставляется пошагово: по достижении определённых сумм применяется своя скидка. К примеру, корзина стоит 100кр — скидка 10%, 150кр — 15%. При желании можно выставить сколько угодно шагов и какой угодно процент. Данные указываются массивом в самом начале плагина, вот так:
$discounts = array(
    '100000' => '10%',
    '150000' => '15%',
    '200000' => '20%',
);
Часть кода была взята из компонента msPromoCode, в частности для того, чтобы цены на товары в корзине обновлялись динамически при смене кол-ва или удалении товара из корзины.
22 april 2016, 20:54    Павел Гвоздь
16    620    22 +11

Tickets + UserFiles - загрузка с фронт-энда

Для чего:

— Если у вас реализовано добавление тикетов с фронт-энда пользователями и вам нужен удобный инструмент для отслеживания прикрепленных изображений
— Вам нужно несколько независимых друг от друга форм добавления изображений с уникальными параметрами
— Вы хотите иметь единую закладку с загруженными изображениями в тикетах
12 april 2016, 08:05    Максим Кузнецов
13    746    6 +5

Фильтрация пользователей с помощью mFilter2

Делая очередной тематический каталог организаций, где каждый пользователь это отдельная организация, которая размещает информацию о себе и своих услугах, я обычно применял классическое решение, когда при регистрации пользователя с помощью Office, создается отдельный ресурс и тогда можно без проблем просматривать карточки (ресурсы) организаций, осуществлять поиск и фильтровать их по разным параметрам используя готовые коробочные решения mSearch2 и mFilter2.

Плюсов тут несколько, в основном это возможность применять классические решения, ничего не допиливая. Но есть и минусы — приходится писать плагины, которые отслеживают изменение профиля пользователя и дублируют эти изменения в ресурс, определенные сложности модерирования, проблемы со скоростью сохранения и вывода информации и т.д.

Я решил заморочиться и сделал решение без дублирования информации, на основе таблицы пользователей.
03 april 2016, 11:04    Николай Савин
12    797    22 +4

Как я расширил стандартную таблицу пользователей

В последнее время довольно часто приходится делать различные стартапы на заказ, суть которых сводится к платному сервису, с регистрацией, личным кабинетом, ну и как следствие каталогом пользователей, представляющих ту или иную услугу.

Обычно использую office, который обеспечивает готовый личный кабинет из коробки с минимальными усилиями, он же позволяет сохранять все в базу, пользователей. Но вот беда, полей катастрофически не хватает. Логичным решением было создавать страницы для каждого пользователя, и добавлять сколько угодно TV. Так я и делал, но решил заморочиться и не дублировать страницы, а расширить таблицу пользователей и работать с ней напрямую, как с ресурсом.

Вот что я сделал:
30 march 2016, 17:48    Николай Савин
20    884    17 +6

Двухуровневая авторизация в менеджере

Привет, друзья!

После прочтения этого и этого
Хочу поделиться двухуровневой авторизацией в менеджере с помощью Basic Authentication.
Мой вариант отличается от пользователя «Борода», тем что «Пользователь» и «Пароль» (в md5()) хранятся в БД.

Если интересно читаем далее…
21 march 2016, 14:34    t3mnikov
5    794    20 +7

Настройка nginx+php-fpm с помощью Ansible. Видео

Способ настройки, чем-то напоминает Правильный хостинг для MODX Revolution 2. Однако используется другой набор софта и сценарии выполняются с помощью Ansible.
21 march 2016, 12:20    Alexander V
7    1178    3 +5