MODX - Создание ресурсов блога

Александр Мальцев
17K
0

На этом уроке мы рассмотрим основные объекты CMS MODX Revolution и создадим несколько веб-страниц (ресурсов) для блога.

В MODX Revolution основные объекты можно разделить на 2 категории:

  • Ресурс (resource). В большинстве случаев данный объект представляет собой веб-страницу сайта, но кроме этого ресурсом может быть вообще любая сущность, которую можно идентифицировать в сети с помощью URL или URI. Ресурсы также можно использовать как контейнеры и помещать в них другие ресурсы, таким образом, вы можете создать структуру сайта. Каждый ресурс характеризуется уникальным идентификатором. Для того чтобы обратиться к полю ресурса необходимо использовать следующий синтаксис:
    [[*pagetitle]] //выводит заголовок ресурса
    [[*id]] //выводит идентификатор ресурса
    
  • Элементы: шаблон (template), дополнительное поле (tv), чанк (chunk), сниппет (snippet), плагин (plugin). Они могут применяться для формирования структуры веб-страницы, хранения дополнительной информации связанной с основным ресурсом, вывода динамического контента, выполнения обработки событий веб-страницы и т.д.
Элемент Описание
Шаблон (template) Шаблон всегда должен быть связан с ресурсом и определяет, как данный ресурс будет выглядеть в браузере. Шаблон следует создавать, если с его помощью будет выводиться множество ресурсов. В шаблонах можно использовать любые теги, чанки, сниппеты и др.
Дополнительное поле (tv) Дополнительное поле (TV) - это пользовательское поле для MODX ресурсов. Переменные TV используются для расширения атрибутов, доступных для ресурса. Изначально в MODX ресурс имеет определенное количество полей по умолчанию: pagetitle, content, description и др. Если вам необходимо добавить несколько дополнительных полей к вашим страницам, то это можно сделать с помощью переменных TV. MODX позволяет иметь практически неограниченное число переменных TV.
Чанк (chunk) Чанк – это кусочек статического текста, который Вы можете использовать на всех страницах сайта. В чанках можно размещать сниппеты, но запрещается использовать код PHP. Для обращения к чанкам в MODX Revolution принята следующая запись:
[[$chunk]]  //вызов кэшированного чанка
[[!$chunk]]  //вызов не кэшированного чанка
Сниппет (snippet) Сниппет – это исполняемый кусок PHP кода, который осуществляет вывод динамического контента на странице или в другом элементе CMS MODX Revolution. Он может применяться для создания динамического меню, вывода последних постов, организации поиска по сайту и многого другого. В сниппетах нельзя смешивать код php и html, т.е. он должен начинаться с <?php и заканчиваться ?>. Если вам необходимо получить на выходе из сниппета html код, то используйте чанк, который установите в качестве возвращаемого значения сниппета. Для передачи значений из спиппета в чанк используйте плейсхолднеры. Для вызова сниппетов используйте следующий код:
[[mySnippet]]  //вызов кэшированного сниппета
[[!mySnippet]] //вызов не кэшированного сниппета
Плагин (plugin) Плагины также как и сниппеты представляют собой фрагменты кода, которые имеют доступ к MODx API. Однако в отличие от сниппетов плагины не требуется вызывать непосредственно в коде, т.к. они связаны с системными событиями, которые могут произойти на веб-странице. Т.е. код плагина выполняется только при наступлении какого-либо события на веб-страницы.

Для обращения к элементам MODX Revolution используется специальный тег, состоящий из множества частей.

[[ //открывающий тег
! //необязательный флаг, который устанавливает, что данный тег является некэшируемым 
elementToken //необязательный маркер, идентифицирующий тип элемента ($ - чанк, * - поля ресурса/tv, + - плейсхолдеры и др.). Если данный маркер не использовать, то данный элемент является сниппетом 
elementName //имя элемента
@propertyset //необязательный идентификатор, предназначенный для использования набора свойств (PropertySet)
:filterName=`modifier`:... //необязательный элемент, который предназначен для применения одного или нескольких выходных фильтров 
? //данный элемент необходимо использовать, если дальше будут следовать свойства 
&propertyName=`propertyValue` &... //необязательный элемент, предназначенный для установки свойств, которые разделяются с помощью символа & 
]] //закрывающий тег

Разработку блога начнём с создания основных шаблонов, которые мы будем использовать для вывода раздела с постами и непосредственно самих постов.

Изменим настройку начального шаблона, который уже есть в системе MODX Revolution. Данный шаблон будем использовать для вывода раздела "Блог":

  • Откройте начальный шаблон, посредством нажатия не него левой кнопкой мыши;
  • Измените его имя на "Блог", а описание на "Шаблон для раздела";
  • Создание шаблона в MODX Revolution для раздела Блог

  • Нажмите на кнопку "Сохранить".

Создайте шаблон, который будем использовать для вывода поста:

  • Нажмите на значок "Новый шаблон";
  • В открывшейся форме введите имя "Пост", а описание - "Шаблон для поста";
  • Нажмите на кнопку "Сохранить".

Примечание: создавать код для шаблонов MODX Revolution мы будем создавать немного позднее, на следующих уроках.

В результате выполненных действий у нас должны получиться следующие шаблоны:

Шаблоны (templates) в MODX Revolution

Наш блог будет состоять из:

  • главной страницы, имеющей название "Мой блог";
  • раздела "Блог", в котором мы будем создавать посты;
  • страницы "О себе", где мы разметим информацию об блоге и авторе;
  • страницы "Карта блога", которая будет содержать ссылки на все ресурсы нашего сайта в удобной для посетителя форме.

Для создания страниц или их редактирования необходимо перейти в левой панели на вкладку "Ресурсы" и открыть раскрывающий список "Website".

Т.к. главная страница у нас уже есть, то произведите необходимую настройку её полей:

  • В поле "Заголовок" введите текст "Мой блог";
  • В раскрывающем списке "Начальный шаблон" выберите значение "(пустой)".

    Настройка полей документа в MODX Revolution

  • После выполнения изменений в полях ресурса, выполните его сохранение.

Для создания раздела с тикетами (постами) нажмите на значок "Новый документ", в открывшейся форме выполните следующее:

  • В поле "Заголовок" введите текст "Блог";
  • Выберите из раскрывающего списка "Шаблон" значение "Блог";
  • Во вкладке "Настройки" выберите из раскрывающего списка "Тип ресурса" значение "Раздел" и нажмите на кнопку "Сохранить".
  • После сохранения документа перейдите во вкладку "Настройка раздела", а затем в ней выберите пункт "Дочерние тикеты";
  • В этом разделе в качестве шаблона дочерних документов выберите значение "Пост", а в поле "Формирование URI" измените строчку на %alias%ext;

    Настройка дочерних тикетов раздела

  • Нажмите на кнопку "Сохранить".

Страницы "О себе" и "Карта блога" создадим следующим образом:

  • Нажмите на значок "Новый документ";
  • В открывшейся панели в поле "Заголовок" введите название соответствующей страницы;
  • В качестве шаблона ресурса выберите значение "(пустой)", т.е. данный ресурс не будет использовать шаблон.
  • Во вкладке "Настройки" проверьте, что тип ресурса соответствует значению "Документ", а тип содержимого – значению "HTML".
  • Нажмите на кнопку "Сохранить".

Настройка полей ресурса О себе

Для создания постов в разделе "Блог" выполните следующее:

  • Загрузите изображения в каталог на сервере (например: assets/images/tickets/2015.02/), которые Вы будете использовать в постах;
  • Откройте ресурс "Блог" и перейдите на вкладку "Раздел";
  • Создайте пост используйте кнопку "Создать тикет";

    Создание тикета в MODX Revolution

    • В открывшейся форме введите посту заголовок и содержимое. В содержимом для обрезания поста используйте тег <cut />. Т.е. с помощью данного тега определите, какая часть статьи будет отображаться при выводе списка постов на веб-странице;

      Создание поста в MODX Revolution

  • Создайте аналогичным образом ещё 3 - 4 поста.

    Посты в MODX Revolution

Комментарии ()

  1. pavise
    22 октября 2020, 20:07
    В статье написано:
    Во вкладке «Настройки» выберите из раскрывающего списка «Тип ресурса» значение «Раздел» и нажмите на кнопку «Сохранить».
    У меня в «Тип ресурса» нет значения «Раздел».
    Как сделать, чтобы он появился?
    1. Александр Мальцев
      Вчера в 12:20
      В текущей версии он называется «Раздел с тикетами». Чтобы он появился вам необходимо установить компонент Tickets.
    2. Sergey Net
      06 июля 2020, 22:46
      Здравствуйте Александр!
      Спасибо большое за вашу статью и вообще ваши труды!
      Учитывая что мир IT быстро развивается, хочу спросить — эта статья была написана в 2017, а в 2020 году, делая блог вы бы делали таким же способом? или может уже использовали какие-то другие инструменты?
      1. Александр Мальцев
        07 июля 2020, 16:17
        Здравствуйте! Спасибо за отзыв! Да, технологии быстро развиваются и MODX, конечно, не поспевает за их развитием, тем более что активных разработчиков, двигающих эту систему не сильно много. Да, есть на PHP системы, быстро следующие за изменениями технологий, например, Laravel, Slim. Но их применение для разработки блогов или других проектов, потребует гораздо больших усилий, времени и мастерства. Не знаю, насколько будет оправданным их применение в этом случае. На мой взгляд такие системы, как Laravel – это просто другая область использования. Например, когда вам нужно создать уникальный проект. И его выполнить на MODX будет более сложно, чем на Laravel. Тут всё зависит от задачи.

        MODX, конечно, развивается более медленно, чем PHP фреймворки, т.к. MODX – это всё-таки CMS. Но со временем и на MODX появятся эти новшества. А так сами решайте, что использовать MODX или что-то другое. Если MODX нравится и подходит под задачу, то не вижу смысла его не использовать.
      2. Дмитрий
        28 мая 2018, 17:14
        Скажите, как можно вывести комментарии с постраничной навигацией (как на форумах), просто на странице может быть под 1000 комментариев и получится очень длинная страница.
        Пока на странице выводятcя комментарии TicketComments хотелось бы их переделать.
        Есть у Вас идеи?
        1. Nik
          17 декабря 2019, 12:47
          Хочу поделиться как можно сделать постраничную навигацию в Tickets, на ajax (без перезагрузки страницы).
          Примерно так —
          Информация собрана по частям, из разных мест, и приведена в единое целое. Протестирована мной на тестовом сайте. К сожалению пока пример в работе показать не могу, поскольку тестовый сайт на локальном веб сервере. Могу заверить — все работает.
          Итак, прописываем сниппет pdoPage в нужном нам месте, где будут комментарии, примерно таким образом:
          <section class="comments">                  
          <div id="pdopage">                     
          <div class="rows">                    
          [[!pdoPage?                        
          &element=`TicketComments`                         
          &action=`comments`                         
          &limit=`5`                         
          &parents=`0`                         
          &formBefore=`0`                         
          &sortby=`{"createdon":"DESC"}`                                              
          &ajaxMode=`default`                        
          &nestedChunkPrefix=`tickets_`
                                   &tplComments=`tpl.Tickets.comment.wrapper.my`
                                   &tplCommentForm=`tpl.Tickets.comment.form.my`
                                   &tplCommentAuth=`tpl.Tickets.comment.one.auth.my`
                                   &tplCommentGuest=`tpl.Tickets.comment.one.guest.my`                      
          ]]                      
          </div>                      
          [[!+page.nav]]                      
          </div>                       
          </section>
          
          Чанки с окончанием .my, это копии чанков, переделанных под себя, у вас свое соответственно.
          Еще, комменты у меня без древовидной структуры, я их убрал. То есть кнопочки ответить нету, только «написать комментарий», меня так устраивает.
          Теперь нюансы. Параметр &formBefore у меня в ноль, не знаю кому как лучше, но последний отвеченный комментарий на первой странице и вверху, плюс из блока «Последние комментарии» всегда направляет именно к последнему комментарию. При значении единица такого не происходит.
          Параметр &sortby у меня работает именно с createdon, с publishedon не работает.
          Обязательный параметр &nestedChunkPrefix=`tickets_` — Префикс для «быстрых плейсхолдеров», без него у меня не работал рейтинг, кнопочки + и — отображались, но не нажимались, то есть рейтинг не подгружался как положено.
          &ajaxMode ставим в `default`, кому надо кнопку «показать еще», то «button» (для буттон другая история).
          Далее.
          Прописываем этот скрипт на странице где у вас будут комменты, я прописал в футере.
          <script>
          pdoPage.callbacks['before'] = function(config) {};
          pdoPage.callbacks['after'] = function(config) {};
          </script>
          
          Без этого скрипта у меня страница подпрыгивала до самого верху, при переходе например, со страницы 1, на страницу 2. С ним все остается на месте.
          Следующий шаг.
          Переходим в раздел сниппеты и создаем там новый сниппет CountComments:
          <?php
          $thread = $modx->getObject('TicketThread', array('resource' => $modx->resource->get("id")));
          if (empty($toPlaceholder)) {
          return $thread->get('comments');
          } else {
          $modx->toPlaceholder($toPlaceholder,$thread->get('comments'));
          }
          
          Далее.
          Открываем чанк tpl.Tickets.comment.wrapper (у меня он с окончанием .my)
          и прописываем там где будет выводиться слово комментарии и общее количество:
          [[!CountComments? &toPlaceholder=`countComments`]]   
          <h3 class="title" style="font-size: 105%; color: #112e39" ><i class="fa fa-comments" style="color:#0099FF" aria-hidden="true"></i> [[%comments]] ([[+countComments]])</h3>
          
          То есть вместо total, ставим плейсхолдер countComments, и убираем обертку .
          Для чего? Допустим, у вас на странице 41 комментарий, limit вы установили в 5 комментов, без этого общее количество комментариев у вас будет показываться 5, хотя их всего 41. То есть будет выводиться не общее количество комментариев, а сколько их на странице.

          С countComments показывается общее кол-во.
          В pdoPage есть параметр &totalVar, где указывается имя плейсхолдера для сохранения общего количества результатов, с ним я не работал не знаю.
          Вроде бы все, ничего не упустил.
          1. Nik
            17 декабря 2019, 18:30
            Дополню пока вспомнил, в описании немного ошибся, проблема не в &formBefore, а в сортировке по «ASC», тогда из последних комментариев перекидывало просто на страницу, а не на последний коммент.
            1. Nik
              18 декабря 2019, 10:29
              И еще одно важное замечание! Это сортировка! При такой схеме как я указал выше, постраничная навигация будет, но она будет «по китайски». Как идет сортировка на обычном форуме

              Последний оставленный коммент, на последней странице, самый первый на первой странице — вверху.
              В этой же сортировке, просто переверните стрелочку наоборот по горизонтали.
              Вообще компонент tickets изначально — это двухуровневая система овтетов, и как сделать чтобы она правильно сортировалась я так и не понял, а очень хотелось бы. С тикет больше подойдет не постраничная навигация, а как в соц.сетях, с кнопкой «показать еще». (там тоже свои доработки нужны). Но опять же, с кнопкой показать еще тоже не совсем удобно (мне например). И если простыня в тысячу комментариев, то допустим мне удобней когда постраничная.
              Кстати для обычных комментов, можете присмотреться к компоненту easyComm, кому надо.
              Хотя тикетс по функционалу мне больше нравится
              1. Александр Мальцев
                18 декабря 2019, 14:04
                Привет! Очень интересное решение, особенно для сайтов, где на одной страницы очень большое количество комментариев. Но, тут ещё по крайней мере нужно продумать момент, чтобы исключить дублирование контента на сайте (для поисковых систем), особенно если это комментарии к статье.
                1. Nik
                  18 декабря 2019, 15:27
                  Доброго дня Александр! Давно хотел у вас спросить (если не секрет), а почему вы убрали кнопку «показать еще» на своем сайте? Насколько я понял она была, но возможно меня тогда еще здесь не было. У вас в статье «Форма обратной связи для сайта с отправкой на почту» 649 комментов и получается очень длинно…
                  Возможно в этой кнопке есть какая-то недоработка? Просто интересно
                  1. Александр Мальцев
                    20 декабря 2019, 07:00
                    Привет! Кнопка работает отлично. Первый момент из-за чего её убрал связан с тем, что так сложнее найти материал. Так можно нажать на Ctrl+F, ввести необходимую фразу, и перейти к местам где она встречается. Второй из-за того что к нему нельзя будет перейти по ссылке. Если есть ссылка на комментарий, то как к нему перейти, если он не отображается на странице. Третий момент связан с индексированием комментариев поисковыми системами. Если это сделать, то тогда нужно что-то придумывать чтобы поисковые роботы их как-то индексировали. В четвёртых как мне кажется не всегда удобно постоянно нажимать на кнопку «Показать ещё».
                    1. Nik
                      20 декабря 2019, 08:04
                      Самый важный момент я думаю это индексация поисковиками. И тут приходится выбирать удобство для пользователей или индексация комментов поисковиками. При постраничной навигации происходит ведь тоже самое? А как найти золотую середину, или ее нет, либо то либо другое…
                      1. Александр Мальцев
                        20 декабря 2019, 08:46
                        Если в приоритете индексация комментариев, то их нужно выводить все сразу.

                        Если комментарии выводить с использованием постраничной навигации, то на всех этих страницах будет повторяться текст статьи. Тут, кроме как исключить эти страницы из индекса, другого пути нет. Для этого нужно будет ко всем этим страницам, кроме первой (где выводятся первые комментарии) добавить следующее:
                        <meta name="robots" content="noindex, follow">
                        
                        Если же на странице выводятся не комментарии, а например анонсы статей или товаров, то здесь имеет смысл их не исключать из индексирования, т.к. контент на каждой из них будет разный.
                        1. Nik
                          20 декабря 2019, 10:13
                          То есть убрать дубли, это то про что вы упоминали выше, говоря о постраничной навигации. Спасибо за пояснения!
                          1. Александр Мальцев
                            20 декабря 2019, 13:31
                            Пожалуйста!
                        2. Nik
                          20 декабря 2019, 08:21
                          Недавно искал ответ на один свой вопрос, как только не вбивал в поисковик запрос, по разному, ни гугл ни яндекс ничего не выдавал близко похожего, пока не перечитал все комментарии, и только в комментариях случайно нашел свой ответ
                          1. Александр Мальцев
                            20 декабря 2019, 09:20
                            Может поисковая фраза не так точно «звучала», как это было написано в тексте страницы. Или этот контент просто не был виден для поисковых роботов. Или страницу поисковые системы вообще не включили в индекс.
                      2. Nik
                        18 декабря 2019, 15:52
                        Не заметил такой кнопки и постраничной навигации и на modx.pro, только на modx.com — Community, используется scroll
                        1. Александр Мальцев
                          20 декабря 2019, 07:37
                          По моим ощущениям в большинстве случаев это связано с неудобством использования кнопки для определённых сценариев, например, таких как комментарии, ленты новостей и т.д. Чтобы перейти к следующим записям нужно будет постоянно нажимать на кнопку «Показать ещё». В дополнение пользователь не знает на какой он странице. Если потом опять нужно будет перейти к этому месту, то пользователю потребуется много раз нажимать на эту кнопку. Что не есть хорошо.

                          Скролл – это что-то среднее между постраничной навигацией и кнопкой «Показать ещё». Мне, например, удобней просматривать информацию с автоматической подгрузкой нежели постоянно нажимать на кнопку.

                          Тут всё зависит конечно от предпочтений веб-разработчика и от того, какой он вариант считает что будет более удобный пользователям при навигации по этой информации.
            2. Владимир
              03 марта 2017, 09:32
              Здравствуйте! Сделал все по вашему уроку, все работает, но не получается одно. Если в статью вставить картинку то она видна, но если вставить ссылку на документ, страницу сайта или любой другой файл то ссылка не работает. При наведении показывает путь файла как assets/путь файла. Так именно в Разделе с тикетами, если вставлять ссылки в других страницах, то ссылка правильно отображается имя сайта/assets/путь файла и открывается. Как исправить что бы в разделе с тикетами ссылки нормально открывались?
              1. Владимир
                03 марта 2017, 10:16
                Все разобрался, нужно ссылки вручную без использования html редактора вставлять, / не было перед assest
                1. Александр Мальцев
                  03 марта 2017, 10:42
                  Молодец!
              2. Nickolay
                19 февраля 2017, 19:00
                Посмотрел ещё раз в лог — батюшки… [2017-02-19 18:38:53] (ERROR in uri /manager/?a=resource/update&id=6 @ E:\OpenServer\domains\mysite.ru\core\model\modx\modparser.class.php: 1352) Bad link tag `[[~? &scheme=`full` &rememberLastDir=`1` &defaultView=`icons` &unlocked=`1` &theme=`windows10`]]` encountered

                Чтобы это значило?
                1. Александр Мальцев
                  21 февраля 2017, 10:22
                  У вас ошибка в теге, с помощью которого вы формируете ссылку. После тильды необходимо указывать id ресурса.
                  Например, ссылка на ресурс, имеющий id = 7:
                  [[~7? &scheme=`https`]]
                  
                2. Nickolay
                  19 февраля 2017, 18:46
                  Подтверждаю, блог и тикеты пустые. В логах и фаербаге ошибок нет. Сначала думал, что баг в сборке модикса 2.5.5 эдванс, поставил обычную. Та же песня — уже потряхивает))) В fb инспекторе видно, что выводится голый хэд и бади. Всё это происходит на оупенсервере 5.2.6. Кэш модикса удаляю руками — не помогает.
                  1. Евгений
                    17 февраля 2017, 15:00
                    Почему то не могу посмотреть посты, опять белый лист и все, пост опубликован. Что я делаю не так?
                    1. Александр Мальцев
                      18 февраля 2017, 02:23
                      Здесь необходимо смотреть какая возникает ошибка (например, 500 или какая-то другая). Для этого можно воспользоваться для начала панелью разработчика в браузере, а также посмотрите ошибки в логах сервера и в CMS MODX Revolution.
                    2. Amsterdam
                      02 марта 2016, 13:15
                      Как ты код сниппета выводишь здесь, в теле статьи? Он же интерпретируется модиксом как вызов сниппета и не показывается. или тут движок сайта не modx у тебя?
                      1. Александр Мальцев
                        03 марта 2016, 14:29
                        MODX сначала парсит свои теги.
                        Т.е. если MODX встречает, например, такую конструкцию:
                        <code>
                        [[TicketMeta]]
                        </code>
                        
                        То он сначала выполнит [[TicketMeta]]:
                        <code>
                        Тут будет результат выполнения сниппета TicketMeta
                        </code>
                        
                        Чтобы такого не было Вам необходимо заменить:
                        [ -> &#91;
                        ] -> &#93;
                        
                        После этого, когда MODX встретит такую конструкцию, он её обрабатывать не будет, т.к. она не будет содержать теги MODX. В итоге Вы получите на экране необходимый код, а не результат его вывода.
                        <code>
                        &#91;&#91;TicketMeta&#93;&#93;
                        </code>
                        
                        Что это осуществить, Вам надо производить эти преобразования либо при сохранении, либо при выводе.
                        Например, можно воспользоваться компонентом (сниппетом) Jevix. Он выполняет нечто подобное при выводе:
                        [[Jevix? &input=`
                        <code>
                        [[TicketMeta]]
                        </code>
                        `]]
                        
                        Если, например, Вы используете Tickets, то данный механизм в него включён по умолчанию. Можно, например, в ресурсах, не включать галочку Выполнять теги MODX, тогда теги [ ] тоже обрабатываться парсером не будут.
                        1. Amsterdam
                          03 марта 2016, 14:33
                          спасибо. но это я уже все разобрал за вчера.
                      2. Алексей
                        20 января 2016, 11:12
                        Александр, подскажи ещё такую вещь. Как сделать с установленным компонентом Тикетс, чтобы ссылки на статьи шли от корня? То есть site.ru/statya, а не site.ru/razdel/statya. До установки компонента у меня так и было. Я просто думал, что блог вообще делается штатными средствами. У меня созданы шаблон для полной статьи и шаблон для блоговой страницы. И контент выводился через pdoResources. Ссылки, соответственно, везде были прописаны так
                        <a href="/[[~[[+id]]]]">Читать далее...</a>
                        и все были от корня. Нашёл, что за вывод блоговой страницы отвечает шаблон tpl.Tickets.list.row. Поменял в нём ссылки на
                        <a href="/[[~[[+id]]]]">Читать далее...</a>
                        , но они всё равно имеют вид site.ru/razdel/statya.
                        В системных настройках use_alias_path стоит значение — Нет.
                        1. Александр Мальцев
                          20 января 2016, 13:28
                          Алексей, tickets по умолчанию при сохранении нового тикета формирует ему URI. В этом случае используется уже он.
                          Чтобы это отменить:
                          1. Необходимо, у созданных уже ресурсов снять галочку «Заморозить URI».
                          2. Чтобы tickets не генерировал его для новых тикетов, открыть вкладку «Настройки раздела» и удалить всё из поля «Формирование URI». После этого сохранить.
                          Теперь tickets не будет генерировать URI и у тебя будет всё как было :)

                          P.S. Но это очень плохая практика и так лучше не делать.
                          1. Алексей
                            20 января 2016, 18:41
                            Почему это плохая практика и так лучше не делать?
                            Мне всегда больше нравились ссылки вида сайт.ру/статья
                            Я думал что в «Формирование URI» %alias — псевдоним именно статьи, без раздела)
                            1. Александр Мальцев
                              21 января 2016, 17:30
                              Это лично моё мнение по этому поводу. Для меня это тоже самое, что все файлы сохранять в один каталог. Т.е. получается что нет структуры. Представьте Вы открыли страницу, содержащую информацию о принтере. Прочитали и хотите посмотреть какие ещё есть принтеры. Т.е. как Вам в этом случаи поступить, как создать прозрачную ссылку? Кроме этого, допустим у Вас ещё есть и другие разделы на сайте. Например, страница с пользователями. Как у Вас в этом случае будет выглядеть ссылка? А как же поисковые роботы Яндекса и Google. Как они поймут Вашу структуру. На мой взгляд это удобно только для небольших сайтов, состоящих из 20 страниц и меньше. Тогда ссылки получаются более короткими, да и в структуре тут особо смысла нет.
                              Если Вам так удобно, то делайте так.
                              1. Алексей
                                21 января 2016, 18:43
                                Понял. Благодарю за ценное мнение.
                                Можешь ещё подсказать по следующим вопросам.
                                Как сделать, чтобы содержимое тикета редактировалось редактором MarkItUp? В настройках он стоит, но когда создаю тикет, всё как у тебя на скриншоте. Если в настройках поставить TypoMCE, то он подцепляется. Может его надо как-то отдельно устанавливать. Может даже отдельную статью на эту тему лучше написать)
                                Как можно сделать, чтобы тикетс использовал мои чанки для шаблонов? Например Я сделал копию tpl.Tickets.list.row, которая называется tpl.Tickets.list.row.my. А то стандартный шаблон, не очень вписывается в дизайн) Как вот сделать, чтобы использовался tpl.Tickets.list.row.my? Или только править стандартный шаблон?
                                1. Александр Мальцев
                                  23 января 2016, 08:43
                                  Установка редактора осуществляется в разделе Настройки системы. В нём необходимо найти параметр с именем «Редактор» (ключ which_editor) и выбрать ему в качестве значения необходимый визуальный редактор (например, MarkItUp). Перед этим его конечно необходимо установить в разделе Управление пакетами (Приложения -> Установщик).
                                  Нет, стандартный шаблон лучше не трогать. Делаете копию (например, tpl.Tickets.list.row.my) и указываете её в качестве параметра.
                                  Например, открываете ресурс (раздел с тикетами) -> открываете вкладку Настройка раздела и в содержимом указываете свой чанк:
                                  [[!pdoPage?
                                    &element=`getTickets`
                                    &tpl=`tpl.Tickets.list.row.my`
                                  ]]
                                  [[!+page.nav]]
                                  
                                  1. Алексей
                                    23 января 2016, 09:39
                                    Лучи добра очередной раз!)
                                    В настройках-то стоит редактор markitUp!.. Но его же в репозиториях нет. Я устанавливал локально, стоит версия markitUp! 0.0.5, скачанная отсюда. Но тикетс почему то не подгружает его.
                                    В описании компонента тикест же написано:
                                    Удобный редактор MarkItUp для тикетов и комментариев.
                                    Я думал он уже в состав входит. В описании ссылка на редактор вот эта, там и версия свежее, но как его установить в MODX, Я так и не понял и нигде не нашёл.
                                    Буду дико рад, если поможешь это осуществить)
                                    1. Александр Мальцев
                                      23 января 2016, 10:28
                                      Алексей, я им не пользуюсь. Да и разбираться в чужом коде не хочется. Попробуй написать автору компонента на гитхаб про это.
                                      1. Алексей
                                        23 января 2016, 11:00
                                        Понял) Подскажи откуда ты столько знаешь про MODX? Посоветуй что почитать, хочу так же хорошо разбираться)
                                        1. Александр Мальцев
                                          23 января 2016, 14:50
                                          MODX — это не WordPress и не Joomla!..
                                          Если разработчик только начинающий, то сделать что-то на Joomla или WordPress более просто. Там не нужно даже знать HTML и CSS. Установил готовый шаблон, что-то подкрутил, вот уже и готово. Из-за этого популярность этих систем намного выше.
                                          Например, в Яндексе вводят что-то связанное с:
                                          WordPress — 1 754 098 раз за месяц,
                                          Joomla! — 268 121 раз за месяц,
                                          MODX — 47 073 раз за месяц.
                                          Вывод: Т.к. популярность MODX намного ниже, то и количество материалов по ней очень мало. Поэтому используй то, что сможешь найти. Самый основной ресурс — это конечно modx.com (документация — rtfm.modx.com/), ну и остальные ресурсы, какие сможешь найти (docs.modx.pro и др.).

                                          Хоть MODX и более сложен в изучении, но и возможности он предоставляет намного больше. Во-первых, он не CMS (т.е. не конструктор сайтов), а CMF (т.е. конструктор CMS).
                                          Во-вторых, Вы полностью контролируете вывод HTML, т.е. всегда знаете, что у Вас получится. А это большой плюс для поисковой оптимизации (SEO). В третьих Вы сможете создать любой нестандартный потенциал, который пользователям Joomla! даже и не снился.
                                          1. Sergey Net
                                            06 июля 2020, 22:56
                                            Привет Александр!
                                            извини что вопрос не по теме — блог. Но он по теме написанного тобой комментария. Я сейчас только начинаю изучать Modx, и он мне очень нравиться. Нравится вот это чувство полного контроля над кодом.
                                            Но, в наше время в IT сфере все движется с сумасшедшей скоростью. Скажи, как ты думаешь — Modx он успевает за современными тенденциями 2020-го года? Я хочу изучать Modx и дальше, но в то же время не хочу через пол года, изучив его сделав на нем несколько сайтов, не хочу узнать что я в лодке которая идет ко дну, и что Modx уже морально устарел и.т.д. Что ты думаешь по этому поводу? Что бы ты посоветовал?
                                            Я хочу учится создавать все более и более хорошие сайты для клиентов, чтоб это была не пустышка, именно поэтому я перешел с WordPress конструкторов на Modx. Но вот ты, мудро и по дружески скажи — я в правильном направлении двигаюсь?
                                            1. Александр Мальцев
                                              08 июля 2020, 05:00
                                              Привет! MODX конечно же не успевает за современными тенденциями. Но она развивается, хотя и очень медленно. Новые версии выходят. А так конкретных гарантий, что MODX продолжит развиваться через 5 лет конечно нет. Но и причин по которым эта CMS должна прекратить своё развитие тоже не вижу.

                                              Но гарантий, что и другие CMS тоже будут развиваться нет. В любой момент может и любая другая даже самая современная CMS прекратить своё развитие, если из неё уйдут основные разработчики этого проекта. Такое может быть и это надо учитывать.

                                              На мой взгляд нужно ориентироваться на то, нравится ли эта CMS или нет. Т.к. в этом случае вы будете разрабатывать в ней с совсем другим настроем нежели на системе, которая вам не нравится.

                                              На MODX, так и на другой системе можно создать как хороший сайт, так и не очень. Тут всё зависит не от самой системы, а от мастерства её использования.
                                            2. Алексей
                                              26 января 2016, 15:55
                                              Я понимаю о чём ты говоришь) У меня был сайт на Джумле, как раз переделываю его на Модэкс. Но возникают трудности, не всегда мне просто по документации понятно, как это сделать)
                                              Вот снова вопрос возник. Смотрю у меня в коде контента вместо тега p стоит br. Посмотрел у тебя в коде всё в порядке. Понял, что это дело рук Jevix. Нагуглил как через набор параметров убрать br и добавить p. Я так понимаю ты тоже самое делал?
                                              Но вот в чём проблема. В 2 статьях из 3 всё стало нормально. А в одной почему-то Jevix ставит оба тега в конце абзаца вот так /p br. Куда копать не пойму. Если отключить Jevix, то всё норм. Единственное, что к этой статье есть два моих тестовых комментария. Вот и всё отличие между ними.
                                              1. Александр Мальцев
                                                28 января 2016, 16:00
                                                Да, это рук Jevix. Он при сохранении комментариев или ticket (т.е. самих ресурсов) производит в них изменения в соответствии с параметрами. Настройка параметров Jevix осуществляется в панели управления. Для этого необходимо нажать на шестерёнку и перейти на страницу Наборы параметров.
                                                Там слева два пункта. Один для комментариев, другой для Ticket. Названия параметров говорят сами за себя:
                                                cfgAllowTagParams — разрешённые параметры тегов,
                                                cfgAllowTags — разрешённые теги,
                                                cfgSetAutoBrMode — заменяет новые строки на br, ну и т.д.

                                                Я как вижу Вы уже сами разобрались во Всём этом. Jevix — это как бы фильтр для того, чтобы пользователи не могли ввести на сайте всё что угодно.
                                                1. Алексей
                                                  28 января 2016, 09:54
                                                  Изменить коммент не могу. В общем, во всех статьях в конце абзаца вставляется тег br. Подскажи как ты у себя это проблему решил? У меня через наборы параметров не получается.
                                                  1. Алексей
                                                    28 января 2016, 10:43
                                                    Разобрался. Может поможет кому-то, надо было парамерт cfgSetAutoBrMode в значение Нет поставить)
                            2. Виталий
                              12 января 2016, 18:53
                              Во вкладке «Настройки» выберите из раскрывающего списка «Тип ресурса» значение «Раздел» и нажмите на кнопку «Сохранить».
                              Версия modx-2.4.2-pl не поддерживает данную функцию а сразу создает тикет.
                              Подскажите как решить данную проблему?
                              1. Александр Мальцев
                                13 января 2016, 12:00
                                В версии modx-2.4.2-pl всё тоже самое. Только в последней версии Tickets пункт называется не Раздел, а Раздел с тикетами. Проверьте может Вы просто создаёте Тикет уже в Разделе с тикетами
                              2. Алексей
                                08 января 2016, 16:49
                                Во вкладке «Настройки» выберите из раскрывающего списка «Тип ресурса» значение «Раздел» и нажмите на кнопку «Сохранить».
                                А как обратно вернуть?
                                1. Александр Мальцев
                                  08 января 2016, 17:43
                                  А обратно вернуть не получится. Это необратимый процесс.
                                  1. Алексей
                                    08 января 2016, 17:52
                                    Серьёзно? Неужели разработчики не предусмотрели? А если удалить Tickets?
                                    1. Александр Мальцев
                                      09 января 2016, 05:59
                                      Ticket — это расширение стандартного modDocument ресурса CMF MODX. На мой взгляд это связано с тем, что когда Вы изменяете тип ресурса на раздел для Вас создаются записи в других таблицах. И простым переключением Вы уже тут не отделаетесь. Это уже другой объект, расширенный modDocument. Чтобы это осуществить, необходимо было бы удалять записи в других таблицах, а также все его дочерние ресурсы (тикеты). А это ответственный шаг и его нельзя сделать обычным переключением.
                                      Для того чтобы это осуществить необходимо (правильное решение): удалить этот ресурс и создать новый (тот, который Вам нужно).
                                      Или если Вы хотите поступить жёстко (при этом данные в других таблицах останутся), то сделайте следующее (неправильное решение, т.е. то, что Вы хотите сделать можно сделать так):
                                      Откройте базу данных MODX (например, с помощью phpmyadmin) -> Откройте таблицу modx_site_content (она содержит все ресурсы) -> Найдите ресурс, который Вам необходимо изменить -> поменяйте у него значение поля class_key на modDocument.
                                      1. Алексей
                                        09 января 2016, 07:55
                                        Понял. Благодарю за разъяснение. Я уже думал на счёт того, чтобы ручками в базе поковыряться) Там ещё, по идее, значение поля properties надо тоже менять)
                                        Я просто хочу сделать как у вас, чтобы было выпадающее меню с разделами. Я правильно понимаю, что для этого нужно создать ресурс Блог (контейнер), в нём, например, ресурсы Автомобили, Кошки, Собаки… И уже из них делать разделы с помощью расширения? Или эти подразделы можно делать с помощью расширения, если сделать основной ресурс Блог разделом?
                                        1. Александр Мальцев
                                          09 января 2016, 09:27
                                          Да, необходимо сначала будет создать ресурс Блог (контейнер (включенная галочка), тип ресурса: Документ), а в нём уже создать ресурсы Автомобили, Кошки и Собаки… (тип ресурса: Раздел с тикетами). После этого создавать ресурсы (тикеты) уже в этих разделах…
                                          1. Алексей
                                            09 января 2016, 10:28
                                            Лучи добра вам) Весьма подробно объясняете) Хорошо, что нарвался на ваш сайт) А то уже хотел штатными средствами реализовывать такую структуру)
                                2. Андрей
                                  14 ноября 2015, 21:25
                                  Александр, просто нет слов. Ваши уроки по содержанию самые доступные из всех, что пришлось нарыть в интернете. В этой серии уроков, как мне видится, есть только одно «но»: Вы пишете о создании блога, но не рассматриваете такой важный, опять же на мой взгляд, аспект, как вставка изображения.
                                  Простыми методами это можно сделать через дополнительное поле, но прошу Вас рассмотреть вариант использования для этих целей бесплатного дополнения Asset Manager, поскольку с его помощью также можно создавать галереи изображений, с привязкой к ресурсу.
                                  Если сможете подсказать как вкладку это компонента сделать видимой в тикетах, буду очень признателен. По-умолчанию она видна только в обычных документах.
                                  Еще раз спасибо за Ваши труды.
                                  1. Александр Мальцев
                                    17 ноября 2015, 13:19
                                    Спасибо, Андрей.
                                    Возьму на заметку компонент Asset Manager.
                                    1. Андрей
                                      05 декабря 2015, 19:34
                                      Разбираюсь по-тихонечку с Asset Manager.
                                      Очень удобно, что галерея привязывается к ресурсу
                                      Чтобы его вкладка виделась в тикетах в админке, в настройках компонента в поле assman.class_keys указать [«Ticket»].
                                      Автор пишет, что обновление компонента не допускают в репозиторий модекс
                                      Поэтому, чтобы исправить баг меню в версии Модекса 2.4.2, нужно из гитхаба автора переписать файл core/components/assman/controllers/BaseController.php. Я на всякий перезалил всю папку с компонентом. Всё работает
                                  2. Алексей Ширкин
                                    16 марта 2015, 17:53
                                    У меня в типах ресурсов в пункте
                                    Во вкладке «Настройки» выберите из раскрывающего списка «Тип ресурса» значение «Раздел» и нажмите на кнопку «Сохранить».
                                    нет значения «Раздел»

                                    Как быть?
                                    1. Александр Мальцев
                                      17 марта 2015, 11:16
                                      Добрый день, Алексей.
                                      Вам необходимо проверить наличие установленного пакета Tickets.
                                    2. Аня
                                      07 февраля 2015, 12:22
                                      А можно ли сделать в modx так, чтобы название url заканчивалось .html?
                                      1. Александр Мальцев
                                        07 февраля 2015, 13:48
                                        Аня, если Вы настроили дружественные URL, то в качестве идентификаторов ресурсов будут использоваться URI. По умолчанию название таких ресурсов будет заканчиваться на .html. Если вы хотите изменить конкретный URI ресурса, то не забудьте поставить галочку «Заморозить URI», чтобы впоследствии данный параметр не изменился.

                                        MODX URI

                                        Или можете изменить данное окончание при генерации URI для всех ресурсов. Данный параметр находится в меню «Сайт» -> «Типы Содержимого»:

                                        Страница MODX Content Type

                                        Но, если Вы не настроили ЧПУ (дружественные URL) тогда будет использоваться не URI, а URL. Тогда MODX Revolution будет выводить ресурсы через id.

                                        URL страницы по умолчанию
                                      Войдите, пожайлуста, в аккаунт, чтобы оставить комментарий.