Skip to content

artybondar/CustomEvo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CustomEvo

Оптимизация MODX Evolution для работы с большим числом документов

Минусы

  • Перемещение и создание копий документов работает не корректно
  • Сохранение документа в который вложенно много других документов немного подтормаживает из-за необходимости обновления URI адресов (если изменение alias-ов у документов не предвидится, то избавиться от этого минуса можно отключив плагин созданный на 5 шаге установки)

Установка

  1. Закачиваем содержимое папки manager в папку с админкой MODX Evolution

  2. Добавляем в таблицу modx_site_content новую колонку uri типа varchar длинной 255

  3. Запускаем скрипт

$q = $modx->db->query("SELECT id FROM ".$modx->getFullTableName("site_content"));
$q = $modx->db->makeArray($q);
foreach($q as $item){
    $url = $modx->makeURL($item['id']);
    $modx->db->update(array('uri'=>$url),$modx->getFullTableName("site_content"),'id='.$item['id']);
}
  1. Добавляем уникальный индекс колонке uri в таблице site_content

  2. Добавляем плагин на события OnDocDuplicate, OnBeforeDocFormSave и OnDocFormSave

require MODX_BASE_PATH .'assets/plugins/makeuri/makeuri.plugin.php';

Не забываем разместить папку makeuri с плагином из архива в папку assets/plugins

  1. Проверяем порядок вызова плагинов и убеждаемся, что наш плагин запускается последним

  2. Добавляем в файл manager/includes/document.parser.class.inc.php строку

include_once(dirname(dirname(__FILE__)) . '/custom/includes/document.parser.class.inc.php');
  1. Заменяем в файле manager/includes/document.parser.class.inc.php строку
class DocumentParser{ 

на

class DocumentParserOriginal{
  1. Добавляем в файл manager/processors/cache_sync.class.processor.php строку
include_once(dirname(dirname(__FILE__)) . '/custom/processors/cache_sync.class.processor.php');
  1. Заменяем в файле manager/processors/cache_sync.class.processor.php строку
class synccache{

на

class synccacheOriginal{
  1. Добавляем в начало файла manager/processors/move_document.processor.php строку
include_once(dirname(dirname(__FILE__)) . '/custom/processors/move_document.processor.php');
exit();
  1. Отчищаем кеш

  2. Добавляем 3 индекса unpub_date, pub_date, menuindex в таблицу site_content

  3. Добавляем в начало файла manager/actions/mutate_content.dynamic.php строку

include_once(dirname(dirname(__FILE__)) . '/custom/actions/mutate_content.dynamic.php');
exit();

Обновление uri документов

  • Пример обновления uri всех дочерних документов при помощи API можно подсмотреть в файле rewrite-uri.php

About

Оптимизация MODX Evolution для работы с большим числом документов

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published