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

VESP: Обновление существующих таблиц в базе

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

В заметке Знакомимся с Vesp Core описан базовый функционал создания таблиц через миграции. Пока сайт находится в разработке и в таблицах нет ценных данных, можно менять таблицы полностью откатывая все миграции, и запуская их заново. Это отлично работает. Но удаляет все данные из таблиц и для работающего сайта не годится.
Иван Бондаренко
22 октября 2020, 12:29
modx.pro
2
159
+14

Localizator. Атрибут hreflang для мультиязычных сайтов



У нас есть мультиязычный сайт, построенный на Fenom и Localizator. Нам нужно прописать атрибут «hreflang» для правильного распознавания локализованной версии страницы поисковиками типа Google и Яндекс.

Используем вариант указания языковых версии в head. Этот вариант подходит для сайтов, у которых языков меньше 10 штук. Если больше, то оптимально будет указать локальные версии в sitemap.xml.

Совместно с @Евгений Webinmd накидали сниппет hreflangs, а потом его еще улучшил @Alex =).

Иван Бочкарев
22 сентября 2020, 22:28
modx.pro
2
472
+17

Hook Formit. CallTouch + MODX

Всем привет!

Поступила задача на интеграцию форм с calltouch.ru/



На сайте есть информация Как подключить заявки с сайта к отслеживанию Calltouch

Мы же выберем решение в виде хука для Formit.

Иван Бочкарев
16 сентября 2020, 13:07
modx.pro
3
454
+16

Модуль оплаты для сервиса Яндекс.Касса по новому протоколу

Всем привет!
Возникла необходимость написать собственный модуль оплаты по Яндекс.Кассе, набросал за пару дней — делюсь.
Дмитрий
12 сентября 2020, 14:07
modx.pro
6
496
+12

Минификсация html кода в 1 строку

Доброго! размещаю инструкцию чтобы не потерять, ну и просто если кому понадобится, все же вещь полезная. Позволяет перевести весь код страницы в неудобный для копирования html код.
+ удаляет комментарии <!- ->, пробелы, табуляцию. Это частично отбивает желание копировать ваш сайт, ускоряет немного загрузку. Данное сжатие можно включать и отключать tv полем.

Не ругайтесь если что-то подобное уже лежит на modx.pro, я доработал код и теперь все работает так как мне нужно. Можно было бы добавить данную функцию в компонент minifyx
Сергей
10 сентября 2020, 15:03
modx.pro
4
613
+3

[msPromoCode2] Кейс. Генерация промо-кода в письме на следующий заказ


Не так давно в документации к msPromoCode2 появился интересный кейс, при помощи которого можно поднять процент повторных продаж на сайте. Работает так:

  1. Клиент оплачивает заказ,
  2. Статус заказа меняется на «Оплачено»,
  3. В письме ему приходит промо-код на следующий заказ, который действителен в течение месяца.
Дублировать код решения здесь не буду. Проходите, смотрите, внедряйте.
Павел Гвоздь
06 сентября 2020, 08:50
modx.pro
2
239
+11

Quiz. Инструкция как создать опрос

Aleksandr Huz
10 мая 2020, 10:33
modx.pro
5
611
+16

Изменение цены в корзине при переоценке

Привет.

Иногда возникает такая ситуация, когда пишите интернет-магазин на MODX и miniShop2 и при этом вы импортируете товары или переоцениваете их с какого-нибудь внешнего сервиса (Например 1С). Проблема которая возникает абсолютно всегда в таких случаях, что цены на товары меняются достаточно часто. В miniShop2 нет (пока нет) события, который бы позволял хендлить события перехода в коризну. Однако, мы можем сделать это на уровне MODX, его событий и API

Создаем плагин cartCheck и вешаем его на событие OnWebPagePrerender. Это событие уже спарсило ресус и его данные, но еще не вывело на страницу — все что нам нужно. В коде, делаем проверку на шаблон страницы. Обычно, корзина имеет свой выделенный шаблон. Далее нам предстоит инициализировать минишоп, получить корзину, модифицировать ее как угодно и назначить обратно. Так же мы сделаем проверку на то, опубликован или удален ресурс и не дадим его купить. На этом, собственно все. Ниже привожу код плагина

<?php
if ($modx->event->name = 'OnWebPagePrerender'){
    if ($modx->resource->id == 5) {
        /** @var miniShop2 $miniShop2 */
        $miniShop2 = $modx->getService('minishop2');
        $miniShop2->initialize();
        $cart = $miniShop2->cart->get();
        foreach ($cart as $key => &$element) {
            /** @var msProduct $product */
            if ($product = $modx->getObject('msProduct', $element['id'])) {
                $element['price'] = $product->get('price');
                if (!$product->get('published') || $product->get('deleted')){
                    unset($cart[$key]);
                }
            }
        }
        $miniShop2->cart->set($cart);
    }
}
Павел Бигель
07 мая 2020, 15:56
modx.pro
9
438
+11

[MODX/Laravel] DevDocker - удобная разработка под Linux

Всем приветики, в общем ни для кого не секрет что докер — это шикарная магическая штука и где то там его активно используют но не в modx конечно, где код до сих пор пишут в браузере. В общем 4 года я был в поиске оптимального решения как правильно и удобно вести разработку проектов (раньше на MODX, сейчас на фреймворках) и в итоге могу точно заявить, что я нашел идеальное решение! Под катом я расскажу все что я пробовал за 4 года и минусы каждого решения, ну а не терпеливые могут просто посмотреть видео сборки, которая решает их все или перейти сразу к гитхабу:

Видео

GitHub

Pavel Zarubin
21 апреля 2020, 02:12
modx.pro
8
918
+27

Интерфейс привязки фильтров к категориям

Всем привет!
За последний год уже дважды вставала задача сделать так, чтобы заказчик мог сам выбирать, какие фильтры выводить на странице категории. Объяснять ему, как задавать параметры в чанках, а тем более разрешать лезть в файлы (я всё делаю на Fenom и файлах) — ну совсем не торт. Поэтому я подумал о том, чтобы сделать визуальный редактор.
За час накидал, вдруг кому пригодится.
Дмитрий
20 апреля 2020, 19:10
modx.pro
2
532
+7