Андрей

Андрей

С нами с 09 апреля 2015; Место в рейтинге пользователей: #68

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

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

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

Сборка элементов сайта в компонент (пакет), пошаговая инструкция

Привет, давно не виделись :)

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

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

Какие-то отдельные подзадачи я все же сделал руками, так как это было просто быстрее и проще. Например, нужно было в некоторых шаблонах (уже существующего сайта) добавить вызов нового снипета или настроить формы редактирования ресурса под клиента. Эти манипуляции были сделаны прямо на боевом сайте. Повторюсь, потому что так быстрее и проще и не влияет на остальной процесс. По методологии LEAN.

Вводная закончилась. Продолжаем внутри заметки.

Іван Клімчук
27 августа 2019, 19:57
modx.pro
25
3 479
+38

Разноцветные теги с tvSuperSelect

На текущем проекте была задача сделать теги цветными, чтоб каждый тег у посетителей ассоциировался со своим цветом. Да, это редко кому надо, но задача прикольная. Mой вариант решения под катом:
Антон
19 августа 2019, 02:27
modx.pro
11
1 737
+12

Curl клиент modx

Встроенный curl клиент для отправки запросов на сторонние сервисы (RESTful и другие).
Так как все чаще используются сторонние сервисы в повседневной разработке сайтов, для этих целей в modx есть встроенный клиент, с помощью которого можно отправлять запросы:

/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
$response = $client->get('GET запрос');
или
$response = $client->post('POST запрос');

// Обработка полученных данных в json или xml формате и преобразование их в массив
$array = $response->process();
В заметке перечислены способы работы с клиентом
Андрей Степаненко
12 августа 2019, 07:56
modx.pro
34
4 940
+39

MODX basix - организация рабочего пространства программиста на MODX (part 1 of 3)

Привет! Я снова на связи.
Один их неоспоримых плюсов MODX — все что угодно (практически) можно сделать из под админки. Однако работа из админки будучи 24\7 вовлеченным в MODX очень сильно снижает продуктивность.
Павел Бигель
29 июля 2019, 16:40
modx.pro
4
2 125
+12

Выбор чанка в зависимости от контекста (Fenom)

Здравствуйте.
Прошу помощи в таком вопросе: делаю мультиязычный сайт. Есть два чанка
chunk_ru
chunk_en
Нужно выбрать чанк в зависимости от контекста. На обычном синтаксисе MODX я делаю этак —
[[$chunk_[[++cultureKey]]]]
А как это сделать на синтаксисе Fenom? И если чанк лежит в файле?
Oleg
29 июля 2019, 08:02
modx.pro
1
691
0

Как увеличить лимит GROUP_CONCAT в сниппете

Доброго дня
Вывожу id уникальных товаров купленных пользователем с помощь pdoUsers примерно так

[[!pdoUsers?
   ...
    &select=`{
            ...
            "msOrderProduct": "GROUP_CONCAT(DISTINCT msOrderProduct.product_id) as allprod" }`
]]
vrm13
24 июля 2019, 14:03
modx.pro
1
958
0

[msFavorites] - версия 3.0, работа с любыми объектами.

[msFavorites] — компонент реализует функционал создания списков избранного.

Особенности:
— работа с любыми объектами
— работа с любыми пользователями

Демо-версию можно посмотреть на msfavorites.vgrish.ru, а попробовать перед покупкой на modhost.pro

Володя
05 июля 2019, 06:53
modx.pro
4
2 109
+19

Обновление дубликатов страниц (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
11
1 292
+7

Внедряем webp без боли

Недавно начал работу над очередным проектом, и захотелось сразу добавить поддержку webp (раз такая поддержка уже есть в MODX из коробки). Задача несложная, но хотелось сделать все красиво, да так чтобы менеджеру не нужно было дополнительно эти изображения конвертировать.
PG
PG
21 июня 2019, 02:15
modx.pro
24
12 770
+18