Александр Мельник

Александр Мельник

С нами с 02 сентября 2016; Место в рейтинге пользователей: #214

Простой(или нет) способ обновить кеш страницы у клиента.

Столкнулся с такой ситуацией: клиент захотел сделать рескин сайта, я всё переверстал, но штука в том, что все картинки закешированы в браузерах у тех, кто уже был на сайте, и если с файлами стилей или яваскриптом я могу сделать style.css?ver=2 с сылкой на стильник, то все картинки во всех шаблонах и чанках так не обновишь.
Погуглив немного я понял, что можно либо шаманить с возвращаемыми хедерами, либо для всех изображений менять урл. Первый вариант не очень, потому что тогда картинки будут вообще всегда заново грузиться, а нам надо только при их реальном изменении. Возможно есть какой-то трюк с Last-modified, но я до него недогуглился.
Тогда я решил сделать простой плагин на событие OnWebPagePrerender, который бы перехватывал страницу перед отправкой пользователю и просто менял все урлы для картинок:
<?php
if ($modx->event->name == 'OnWebPagePrerender') {
    $output = &$modx->resource->_output;
    $output = str_replace('.png',".png?ver=" . $modx->getOption('assets_version'),$output);
    $output = str_replace('.jpg',".jpg?ver=" . $modx->getOption('assets_version'),$output);   
}
Антон
06 января 2019, 03:10
10
289
+11

Динамическое обновление цены товара miniShop2 по курсу доллара, через Cron.

Всем привет, друзья. Возникла у меня задача, сделать так, чтобы цены у товаров менялись в соответствии с курсом доллара, раз в сутки.
Vlad
17 декабря 2018, 23:01
16
365
+10

Localizator - поддержка TV параметров

1. Изменены окна редактирования локализаций, добавлена возможность редактирования TV-параметров

Для вывода на редактирование определенных TV-параметров добавлена настройка локализатора localizator_tv_fields

2. Сделан сниппет Localizator
{'Localizator' | snippet : [
    'snippet' => 'pdoMenu',
    'includeTVs' => 'img',
    'processTVs' => 'img',
    'parents' => 0,
    'level' => 1,
]}
TV-параметры будут заменяться на параметры из локализации.
Для этого нужно изменить настройку pdoFetch.class на pdotools.pdofetchlocalizator


Компонент по прежнему бесплатный и доступен на modstore.pro

Исходники на https://github.com/but1head/localizator

Отправить спасибо можете на Яндекс-кошелек 410015133943061
Артем
23 октября 2018, 18:51
12
741
+18

Localizator + mSearch2. Шерше ля фам или поиск по-французски


На днях в разделе работы появилось объявление о скрещивании Localizator и mSearch2. Заинтересовало оно меня тем, что по итогу работы необходимо написать статью и опубликовать здесь. А вы знаете, как я люблю писать статьи, правда? Заказ оформил Hiddenski, за что давайте вместе его поблагодарим! :)
Первый раз пишу статью по заказу, посмотрим, что из этого получится.
Павел Гвоздь
26 сентября 2018, 22:40
11
681
+22

Полезные методы xPDOCacheManager

Класс xPDOCacheManager реализует механизм кеширования в MODX. Кеш у нас хранится в файлах, а значит, этот класс может помочь нам в работе с файловой системой.

Чтобы иметь доступ к методам класса xPDOCacheManager, нужно получить экземпляр этого класса. Это делается одной строчкой:
$cache = $modx->getCacheManager();

xPDOCacheManager::writeFile

Первый метод поможет нам записывать данные в файл. Работает он очень просто:
$cache->writeFile(MODX_BASE_PATH . 'filename.txt', 'Текст');
Илья Уткин
14 сентября 2018, 10:07
20
1 002
+24

Как настроить Babel, чтобы не было мучительно больно

Один день проведённый на modx.pro показал, что у людей очень много проблем с дополнением Babel. Люди боятся его за сложность настройки. На самом деле всё не так страшно. Эта статья, надеюсь, поможет при создании мультиязычных сайтов. Целью этой статьи не является разбор, чем одно дополнение лучше другого, это именно инструкция: как сделать.
Янис
12 сентября 2018, 10:03
18
872
+12

Фильтр списка товаров через POST-запрос

У меня есть страница со списком товаров. Необходимо при клике на логотип производителя вывести только товары данного производителя.

Каким образом отправить post-запрос на вывод отфильтрованных товаров?
Aleksandr Suslov
03 марта 2018, 09:49
2
363
0

[msPNnotify] - заменяем JGrowl

Описание
Компонент полностью заменяет уведомления Jgrowl на PNnotify для minishop2
Требуется только установка, далее все будет работать само. Все что делает компонент — это добавляет свои js на страницу. Настройки minishop2 он не переписывает, а лишь заменяет метод Massage
Посмотреть работу вы можете на демо-сайте

Под катом маленькое отступление и ссылка на скачивание компонента

Pavel Zarubin
26 февраля 2018, 23:59
8
3 289
+11

Лента фоток Instagram для сайта.

Всем привет!

Когда-то давно в Modstore существовал компонент InstagramWidget. Затем его не стало, по той простой причине, что инстаграм перестал поддерживать технологию, на основе которой этот компонент был написал, и он тупо перестал работать.

Когда пару лет назад мне в руки попала хотелка от клиента — запустить виджет инстаграма на сайте, — путем недолгого гугления я нашел вот это. Радует, что проект живой — последнее обновление три дня назад. И недолго помучившись, я его запихнул в сайт клиента.

Однако далеко не все меня там устраивало. Во-первых, пришлось аккуратно выпиливать все эти жесткие die() в случае ошибок. Во-вторых, там довольно кустарная система кеширования. И так далее.

Поэтому, когда недавно мне снова прилетела похожая хотелка, я поскрипел зубами, и вдохновившись этим решением написал свое — проще и чисто под Modx.
Алексей Бгатов
29 января 2018, 01:04
21
3 437
+11

Экспорт товаров Minishop2 в CSV – без программирования

Задача: экспорт товаров в CSV с возможностью выгрузки всех опций или tv как захочется.
Сложность: 0 знаний в php :-)
Решение:
  1. Создаем новый ресурс: > опубликован > не показывать в меню > тип содержимого: HTML > не использовать HTML редактор > заморозить uri c .csv в конце.
  2. Вызываем msProducts с нужными настройками, у меня так:
    {'!msProducts'|snippet:[
        'hideContainers' => 1,
        'parents' => 3,
        'limit' => 150,
        'depth' => 3,
        'includeTV' => '1',
        'includeTVs' => 'video',
        'sortby' => 'menuindex',
        'sortdir' => 'DESC',
        'showLog' => 1,
        'tplFirst' => '@FILE chunks/export/first_row_drom.tpl',
        'tpl' => '@FILE chunks/export/eng_drom.tpl'
        ]}
  3. Сохраняем
Konstantin
11 января 2018, 09:30
16
3 082
+5