0.00
83 читателя, 73 топика

[EVO] Отключение сниппета на определенной странице без использования phx

В поисках велосипеда для Shopkeeper`а Димой (Dmi3yy ) был придуман вариант как обойти phx, если необходимо не вызывать корзину на определенной странице. Очень быстро выяснилось, что в Shk это решается проще, и решение было сгоряча снесено, хотя на самом деле оно очень нужное и универсальное. Поэтому, с благословения автора я, как успевший утащить решение в копилку знаний, возвращаю его отдельным топиком. Ведь фактически так можно прятать любой сниппет на определенной странице без использования phx!

Читать дальше →

Снова о кешировании. Генерируем меню только один раз

Иногда бывает необходимость сделать меню большим. Ну, реально большим и разветвленным. Например, как на сайтах fsknmsk.ru, medicinskiy-center.ru, www.withoutdrugs.ru, narcononekb.ru

Если Wayfinder вызывается кешируемым, т. е. [[Wayfinder &startId=`0`]] (без восклицательного знака), и изменения на сайте вносятся нечасто, то проблем особых нет — после первого посещения каждой страницы, вывод сниппета кешируется и для этой страницы код меню уже не генерируется.

Если изменения вносятся часто, но на меню они особо не влияют (например, просто выкладываются новости или статьи, которые в меню не появляются), то используем getCache (статья)

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

Поделюсь своим решением, использующим самый простой вариант пользовательского кеширования в MODX

Читать дальше →
на community.modx-cms.ru

Обработка большого количества документов на слабом хостинге

Иногда возникает необходимость обработать сразу большое количество ресурсов, например вдруг решили, что у всех отзывов должен быть URL /review-25.html (у каждого свой id), а сейчас на сайте около 200 отзывов и у них URL формировались обычным translit'ом (ну или не совсем обычным))). Все бы ничего, да вот хостинг слабенький и на нем жестко прописано ограничение на время выполнения скрипта. И максимальное количество документов, которые успевают обработаться — 10-15.

Можно, конечно как-то оптимизировать скрипт, например, не использовать процессоры, можно вносить изменения прямо в базу через phpMyAdmin, можно запускать скрипт 20 раз вручную, пока не обработаются все ресурсы… Каждый выбирает сам.

Для себя я сделал сниппет для пошаговой работы php-скрипта, который вполне может обрабатывать и ресурсы MODX.
Читать дальше →

[EVO] Ошибки в opere из-за WebloginPE и групп ресурсов

Заметил интересный баг который проявляется только в опере. В общем если на странице с ограниченым доступом (страница 403 в настройках MODx) вызвать WebloginPE, то опера через раз отдает контент. Даже не через раз, а с третьего раза.

Читать дальше →

[REVO] Немного о Memcached

Инструмент, который мы будем расматривать сейчас для повышения производительности называется memcached. Или, говоря иначе приложение, которое запускается на сервере и использует часть доступной памяти для хранения ассоциативного массива данных.
Читать дальше →

[EVO] Разгоняем Ditto

Последнее время очень не люблю использовать PHX очень уж он себя нехорошо ведет по отношению к ресурсам.

Тут вдруг вспомнил что в некоторых снипетах есть то встроенный PHX.
Но так как я его все равно не использую то зачем мне что б он там работал?

Итого полез ковырять код Дитто и первое что нашел так это параметр phx который по умолчанию равен 1)

после чего провел небольшой тест:
Документы в дереве ресурсов уровень вложенности 3-4
выводим id, pagetite, tvimage, tvprice
всего документов 396
с phx

MySQL: 0,0593 s, query: 407, PHP: 0,4935 s, total: 0,5527 s, document from: database.
MySQL: 0.0009 s, query: 2, PHP: 0.0318 s, total: 0.0327 s, document from: cache.

без phx

MySQL: 0,0446 s, query: 407, PHP: 0,3141 s, total: 0,3587 s, document from: database.
MySQL: 0.0010 s, query: 2, PHP: 0.0295 s, total: 0.0304 s, document from: cache.


Итого прирост в скорости на треть:)

[EVO] Удаляем раздел из URL

Движок modx evo, как известно, обладает негибким ЧПУ. Порой бывает необходимо убрать из адресной строки ненужные псевдонимы документов, а именно папок. То есть убрать лишний уровень вложенности, не меняя структуру сайта.

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

Давайте разберемся как можно значительно упростить себе жизнь. Сделаем свой роутинг!

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

Читать дальше →