Елементи

    Той, хто почне розбиратися з Evolution, зіткнеться з новими термінами.

    Тут ми відзначимо невеликі моменти, які періодично можна підглядати.

    Термінологія

    Шаблон - містить загальну верстку сторінки зі структурою і дизайном. Також, в ньому визначаються місця для виведення динамічного вмісту. Для кожного документа можна вибрати свій шаблон.

    Параметри (TV) - додаткові параметри, які підключаються до шаблону. Параметри можуть бути різних типів (текст, посилання, файл, дата, число тощо). Більш докладно про типи чекайте в наступних статтях.

    Чанк - маленький шаблон, який може використовуватися як просто для виведення якогось вмісту (телефону на всіх сторінках), так і для обробки (шаблон листа eForm, шаблон каталогу Ditto тощо). Таким чином, вид (подання) інформації відділяється від місця обробки і легко управляється.

    Сніпет - код для обробки інформації. Аналізує отриману інформацію (наприклад, повідомлення користувача) і надають результат (наприклад, відправляють повідомлення поштою, а користувачеві показують повідомлення про результат). Сніпети формують меню (Wayfinder), виводять списки статей з розбивкою на сторінки (Ditto), будують форми (eForm). Для виведення використовують Чанки.

    Плагін - код, який запускається при настанні якоїсь події. Наприклад, підсвічує шукані слова (Search Highlighting) при переході зі сторінки пошуку. Подій багато і їх розгляд вартий окремої статті.

    Спеціальні теги

    Для виведення динамічних даних використовуються спеціальні теги.

    Системні

    • [(site_name)] - назва сайту
    • [(base_url)] або [(site_url)] - адреса сайту (https://www.evolutioncms.org)
    • [(modx_charset)] - використовуване кодування
    • [(lang_code)] - код мови сайту
    • [^m^] - кількість використаної пам'яті
    • [^qt^] - час на запит до бази даних
    • [^q^] - кількість запитів до бази даних
    • [^p^] - час на работу PHP скриптів
    • [^t^] - загальний час на генерацію сторінки
    • [^s^] - джерело вмісто (база або кеш)

    Стандартні

    • [*pagetitle*] - Заголовок документа
    • [*longtitle*] - Розширений заголовок документа
    • [*description*] - Опис документа
    • [*introtext*] - Анотація документа
    • [*content*] - Вміст документа
    • [*alias*] - Псевдонім документа
    • [*id*] - Ідентифікатор (номер) документа
    • [*pub_date*] - Дата публікації дкоумента
    • [*unpub_date*] - Дата завершення публікації
    • [*createdby*] - Ідентифікатор користувача, який створив документ
    • [*createdon*] - Дата створення документа
    • [*editedby*] - Ідентифікатор користувача, який редагував документ
    • [*editedon*] - Дата редагування документа
    • [~ідентифікатор~] - URL вказаного документа

    Додаткові

    • [*type*] - Варіант (документ, каталог або посилання)
    • [*contentType*] - Тип вмісту (напр., text/html)
    • [*published*] - Чи опублікован документ (1|0)
    • [*parent*] - Номер (ID) батьківського документа
    • [*isfolder*] - Чи є документ каталогом (1|0)
    • [*richtext*] - Чи використовується при редагуванні документа візуальний редактор
    • [*template*] - Номер (ID) використаного шаблона для документа
    • [*menuindex*] - Порядковий номер відображення в меню
    • [*searchable*] - Чи доступний документ для пошуку (1|0)
    • [*cacheable*] - Чи кешується документ (1|0)
    • [*deleted*] - Документ видалено (1|0)
    • [*deletedby*] - Ідентифікатор користувача, який видалив документ
    • [*menutitle*] - Заголовок меню. Якщо не використовується, то заголовок документа
    • [*donthit*] - Стеження за кількістю відвідувань відключено (1|0)
    • [*haskeywords*] - Документ містить ключові слова (1|0)
    • [*hasmetatags*] - Документ має метатеги(1|0)
    • [*privateweb*] - Документ входить в приватну групу призначених для користувача документів (1|0)
    • [*privatemgr*] - Документ входить в приватну групу менеджерських документів (1|0)
    • [*content_dispo*] - Варіант видачі вмісту (1 - для відображення | 0 - для скачування)
    • [*hidemenu*] - Документ не відображається в меню (1|0)

    Параметри TV, сніпети і чанки

    [\*НазваПараметраTV\*] - виводить значення параметра в документі.
    {{НазваЧанка}} - повертає вміст чанка.
    [[назва сніпета]] - повертає результат роботи сніпета. 

    Можна передавати сніпету додаткові параметри, перераховуючи їх при виклику. Припустимо, якщо ми хочемо отримати id поточного документа і обробити його в сніпеті, то виклик може бути схожий на цей:

    [[назва сніпета?docId=`[+id+]`]]

    [+НазваЗмінної+] - плейсхолдер - зустрічається в чанках, які використовуються для обробки результатів роботи сніпетів. Після обробки замість них вставляються значення. В наведеному вище прикладі ви бачите, як в параметр docId для сніпета ми підставили системний плейсхолдер [+id+], в якому буде id поточного документа. Плейсхолдери можна створювати самому.

    Нюанси

    Насправді є два варіанти виклику сніпета: 1.[[НазваСніпета]] - Кешований виклик сніпета 2.[!НазваСніпета!] - Некешований виклик сніпета

    Де використовувати

    Все дуже гармонійно використовується одне з одним. В шаблонах можна використовувати параметри TV, сніпети і чанки. У чанках можна викликати сніпети, параметри TV та інші чанки. У сніпетах можна викликати взагалі все, але через PHP. В кінцевому рахунку вам повернеться підсумковий результат обробки всіх сніпетів/чанків/параметрівTV. На цю інформацію спирається все інше.

    Приклад шаблона

    <!DOCTYPE html>
    <html lang="[(lang_code)]">
    {{head_tags}}
    <body>
        [*content*]
    </body>
    </html>

    де head_tags це чанк з натупним вмістом:

    <head>  
        <base href="[(site_url)]" />
        <meta charset="[(modx_charset)]" />
        <title>[*pagetitle*] / [(site_name)]</title>
    </head>

    А в полі [*content*] буде виведено вміст сторінки, заданий з адмінки.