We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 4856
    • 55 Posts
    Плагин автоматически перемещает документы внутри определенной категории в папку по дате публикации.

    В заданном месте дерева создается структуру папок вида:
    [tt]
    !---[2010]
    ! !---[Январь]
    ! ! !----[1]
    ! ! !----...
    ! !---[Февраль]
    ! ! !----...
    ! !---...
    !---[2009]
    ! !---...
    ...
    [/tt]
    (Либо аналогичная, но без дней месяца - от значения параметра в конфигурации)

    При редактировании любого документа внутри категории или ее вложенных подкатегорий, документ, если меняется дата публикации, перемещается в новое место.

    Установка

    0. Разархивируйте repo-883.zip (DocumentManager) в папку с MODx

    1. Скопируйте папку doc_mover в директорию assets/plugins

    2. Создайте новый плагин, назовите doc_mover и вставьте код плагина:
    /*####
    #
    #	Name: DocMover (Automatic move documents by months or days)
    #	Version: 0.0.2 
    #	Author: Cept ([email protected])
    #	Date: May 30, 2010
    #
    ####*/
    
    include_once $modx->config['rb_base_dir'] . "plugins/doc_mover/doc_mover.parser.class.inc.php";
    $e = &$modx->Event;
    
    switch($e->name) {
    	case 'OnDocFormSave':
    		$DocMover = new DocMover();
    
    		// Из конфигурации
    		$DocMover->base_doc = $base_doc;
    		$DocMover->tree_start_index = $tree_start_index;
    		$DocMover->tree_mode = ($tree_mode == 'по дням') ? 'days' : 'months';
    		$DocMover->tree_tpl = $tree_tpl;
    		$DocMover->check_tree_created = ($check_tree_created == 'да');
    		$DocMover->create_base_name = ($create_base_doc == 'да') ? $create_base_name : '';
    
    		$DocMover->OnParseDocument();
    		break;
    }
    


    3. На закладке Конфигурация -> Конфигурация плагина введите:
    &create_base_doc=<nobr><b>Создать базовую папку</b> (внутри нее будут располагаться<br/> элементы дерева, создаваемые модулем, при добавлении<br /> документа в папку, он будет автоматически перемещатся.<br /> Если папка уже создана выберите <i>нет</i>)</nobr>;list;да,нет;нет &create_base_name=<ul>если <i>да</i>:<br /><b>Имя для создаваемой базовой папки</b> ;string;Архив &base_doc=</ul><b>Код документа базовой папки</b>;int;2 &tree_start_index=При создании элементов дерева <b>использовать номера  начиная с</b> этого;int;1001 &tree_mode=<b>Режим списка дат в дереве</b>;list;по дням,по месяцам;по дням &check_tree_created=<b>Проверять создано ли дерево</b> (проверяет наличие хотя бы первой папки каждый раз при редактировании)
    <br /><br /><p><b>Примечание:</b> Для первоначальной инициализации нужно зайти в редакцию любого документа и сохранить его. После этого данный параметр можно отключить.;list;да,нет;да
    


    4. Поменяйте настройки на свой выбор. "Проверять создано ли дерево" должно быть "да"

    5, На закладке "Системные события" поставьте галку около OnDocFormSave

    6. Откройте любой документ и просто сохраните его - после этого в заданном месте должно появится дерево

    7. Снова войдите в плагины, на закладку Конфигурация и в поле "Проверять создано ли дерево" поставьте "нет"
      • 785
      • 2,113 Posts
      И зачем позволять MODx записать все в базу, после чего самому опять же обращаться к базе для повторной записи. Если вместо события OnDocFormSave работать с событием OnBeforeDocFormSave, можно в памяти обработать все, что нужно, чтобы потом MODx сам все записал. Скорее всего, обращения к базе вообще не потребуются, так как вся структура сайта в MODx хранится в памяти.
        Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
        Статьи о MODx, регулярно новые публикации
        • 4856
        • 55 Posts
        Согласен. Спасибо за совет, реализовать в таком виде как говорите не хватило знаний об API.

        Код пока не оптимизирован, написан за день, ну и версия все же 0.0.2 )

        Начиналось с того, что готового не нашел и решил написать разбор и упорядочивание большого количества новостей, а заодно потренироваться в написании плагинов. Это первый.
          • 785
          • 2,113 Posts
          Quote from: cept at May 31, 2010, 06:00 AM

          решил написать разбор и упорядочивание большого количества новостей
          Вообще-то лично у меня есть сомнения в правильности постановки задачи. Фактически при редактировании документа меняется его адрес (url), так как он помещается в другую папку. Это плохо, как с точки зрения поисковых систем, так и с точки зрения посетителей сайта. Мне кажется, что лучше документы оставлять навсегда на своем месте, а для удобства навигации формировать блоки ссылок в соответствии с датами редактирования. Но, как говорится, дело хозяйское, задачи бывают разные…
            Создание сайтов на MODx, поддержка сайтов, поисковая оптимизация, программирование, копирайтинг
            Статьи о MODx, регулярно новые публикации
            • 4856
            • 55 Posts
            В рамках задачи новостей каждый день по 6-10 штук. В одном месте хранить явно не хорошо будет.
            А, да. На роботов оптимизации не нужно, такой задачи нет. smiley
            Главное чтобы поиск был и управлять можно было.
            При таких условиях задачи кажется оно подходит. smiley