Готовые решения

Плагин ms2Gallery для TinyMCE 4

Всем привет! Давненько я ничего не писал в «Готовые решения».

Данная заметка будет полезна тем, кто не разбирается в WYSIWYG редакторах, в частности для тех, кто никогда не писал для них плагины. Я работаю с TinyMCE RTE, посему если вы тоже работаете на нем, то этот пост для вас. Я переехал в MODx из WP, а как известно я думаю многим, в WP многие плагины работают через, так называемые shortcode. Это код, который выводит что-то из каких-то кастомных плагинов в контент.
iWatchYouFromAfar
15 сентября 2019, 23:50
modx.pro
8
341
+26

Вывод карточек товара магазина в статьях на сайте

Несколько недель назад от заказчика поступила такая хотелка — надо чтоб в статьи блога на сайте магазина можно было бы вставлять карточки товаров этого самого магазина. Обдумывал разные варианты, но в итоге, совместно с чатиком в телеграме пришел к такому решению:
  1. В статье в нужном месте менеджер делает конструкцию такого вида: %%34,45,54%%, где 34,45 и 54 — айди товаров в магазине, таких вхождений может быть хоть сколько в статье.
  2. На событие onWebPagePrerender вешается плагин, который с помощью регулярки выбирает все вхождения нашего паттерна, для каждого вхождения вызывает сниппет msProducts и последним шагом заменяет в контенте страницы паттерны соответствующими результатами сниппета.
Под катом код плагина:
Антон
19 августа 2019, 01:30
modx.pro
7
369
+7

Обновление дубликатов страниц (duplicate_updater_modx)

Может кому пригодится, написал скриптец для поиска дублей страниц и обновления последних путем добавление префикса +=1

Инструкция залить duplicate_updater_modx.php в корень сайта и запустить в браузере yousute.ru/duplicate_updater_modx.php
git: github.com/vectorserver/duplicate_updater_modx

Сам код:
<?php
/**
 * Created by PhpStorm.
 * User: admin
 * Date: 25.06.2019
 * Time: 14:19
 */


define('MODX_API_MODE', true);
require 'index.php';

$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_FATAL);
$modx->setLogTarget(XPDO_CLI_MODE ? 'ECHO' : 'HTML');

$msg = "";

$table_prefix = $modx->config['table_prefix'];

//Ищем двойников
$find_query = $modx->query("SELECT group_concat(`id`) ids, count(id) c FROM `" . $table_prefix . "site_content` GROUP by concat(uri) HAVING c > 1");

$dubles = $find_query->fetchAll(PDO::FETCH_ASSOC);
//Если нашли
if (count($dubles)) {
    foreach ($dubles as $item) {
        //Разбивем ID
        $ids = explode(",", $item['ids']);
        //Сортируем - старые вверх
        sort($ids, SORT_NUMERIC);

        $count = 0;

        foreach ($ids as $doc_id) {
            $count++;
            //ПРопускаем оригинал
            if ($count > 1) {

                //Обновляем ресурс
                $originalRes = $modx->getObject('modResource', $doc_id);
                $generated = $originalRes->cleanAlias($originalRes->get('pagetitle')) . "-" . $count;
                $originalRes->set('alias', $generated);
                $originalRes->save();
                //В лог
                $msg .= $originalRes->get('id') . " | " . $originalRes->get('pagetitle') . " - обновлен.\n";
            }

        }
        //Сброрс кеша
        $modx->cacheManager->refresh();
    }

} else {
    $msg .= "Дублей нет\n";
}

echo "<pre>" . $msg;
vectorserver
25 июня 2019, 12:33
modx.pro
9
301
+7

Запрос через XPDO к тв параметрам с использование having

Запрос на XPDO для выборки ресурсов у которых совпадают значения тв параметров.

Функция having посчитает количество совпадений по групперуемому полю contentid
Андрей Степаненко
26 апреля 2019, 14:36
modx.pro
10
460
+10

Удобная фильтрация в mSearch2 на мобильной версии (внешний вид)

Доброго всем!
дам очень нужную инструкцию для изменения внешнего вида фильтров на мобильной версии (в десктопной ничего не измениться) в mSearch2 совместно с minishop2

На выходе нас ожидает меню куда спрячутся все фильтра, а сбоку, поверх всего будет закреплена кнопка управляющая этим меню (открыть, закрыть). Работает как в bootstrap 3 так и в bootstrap 4. Внешний вид фильтров настраиваете на свой вкус и цвет.

Впринцыпе данный пример можно использовать где угодно, возможно спрячете меню блога, ну там уже на свое усмотрение. Работает через jquery
Сергей
19 апреля 2019, 18:55
modx.pro
20
642
+5

Проверка на заполнение атрибута alt у тега img

SEO-шники говорят что атрибут alt у тега img очень важен для поисковых роботов. Один из товарищей попросил написать на его сайт плагин, который на лету проверял бы наличие и заполнение атрибута ALT у всех изображений и не давал бы менеджеру сохранить ресурс если хоть 1 изображение без атрибута alt (не важно пустой он или его вообще нет).
iWatchYouFromAfar
01 апреля 2019, 20:57
modx.pro
10
906
+13

Увечиличаем скорость синхронизации 1С с minishop2 в 3-5 раз. mSklad/mSync

Не давно обнаружил что во время синхронизации с 1С, есть возможность указать 1С-ке: упаковать в архив все файлы выгрузки и отправить на сервер.

Из-за того что 1С отправляет import.xml, offers.xml и изображения по одному файлу, синхронизация с сайтом довольно надолго затягивается.

К примеру: если у вас 1000 изображений (а время на отправку изображения минимум 1-2 секунды) то нетрудно подсчитать что в итоге ваша загрузка займет минимум 16 минут, это только на отправку файлов на сервер не считая самой обработки файлов.

Эта небольшая доработка класса, скажет 1С отправлять файлы в архиве со всеми данными целиком.
После чего архив будет слаться частями (размер архива указывается в file_limit).
Допустим что интернет у нас слабенький и укажим чтобы часть архива была максимум 10мб.

Внимание!!! Этот метод использовался для синхронизации через mSklad, так что ваш класс может чем то отличатся. Не советую пробовать на боевом сайте.
Андрей Степаненко
01 апреля 2019, 13:45
modx.pro
6
442
+10

Подмена пути источника файлов в текстовом редакторе

Суть проблемы. Сделал сайт, а далее клиенту нужно его наполнять, добавлять фото к статьям в редакторе. Всё бы хорошо, но когда источник файлов один единственный, то с ростом количества ресурсов, становится всё сложнее ориентироваться в папках с фотографиями. Люди начинают путаться, а ещё хуже переименовывать или перемещать уже созданные, случайно удалят, или пишут русскими буквами имена папок… Куча времени тратится на объяснение как надо работать с файловым менеджером.

Хорошо бы было, чтобы при нажатии на кнопку выбора фото (в редакторе), сразу открывалась папка конкретного ресурса, допустим, путь assets/manager/resources/id ресурса/.

Перерыл всё что можно по этой теме, так и не нашёл решения. Публикую неидеальное, но решение)

Николай
25 марта 2019, 15:13
modx.pro
2
537
+4

Избавляемся от ошибки «modAction support is deprecated» в старых пакетах

Если у вас есть дополнение, которое вы делали ещё на первой версии modExtra, то при его установке сейчас вы будете видеть такое сообщение об ошибке:

modAction support is deprecated since version 2.3.0.
Support for modAction has been replaced with routing based
on a namespace and action name. Please update the extra
with the namespace simpleupdater to the routing based system.

Исправить её не сложно, но раньше всё не доходили руки.
Илья Уткин
25 марта 2019, 11:43
modx.pro
8
1 555
+13

Автоматическая смена версии стилей при очистке кэша в MODX

Решил поделиться своим решением версионирования файлов стилей. Зачем нужно версионирование, я, наверное не буду объяснять. Вообще смена версий не такой частый процесс и зачастую он нужен не только для того, чтобы браузеры подхватывали измерения в стилях, но и для отслеживания версий сайта. Вариантов как это реализовать масса. Я состряпал наиболее подходящее для меня и решил поделиться им.

К слову, пока писал этот пост, в телеграм канале как раз подняли эту тему. :-)
iWatchYouFromAfar
25 марта 2019, 10:33
modx.pro
5
529
+7