PHx

    PHx Додаткові можливості для тегів MODX Evolution

    Додаткові можливості для відображення плейсхолдерів, тегів MODx (включаючи параметри TV) і теги налаштувань сайту.

    PHx (Placeholders Xtended) додає нові можливості для відображення плейсхолдерів, тегів MODx (включаючи TV параметри) та теги налаштувань сайту. Рекурсивний парсер дає змогу використовувати вкладені теги. Можна створювати свої модифікатори шляхом створення сніппетів.

    PHx підтримує такі теги MODx:

    [+placeholder+]
    [*теги вмісту*] ([*content*], [*pagetitle*], наприклад)
    [*TV параметри*]
    [(теги налаштування)] (наприклад, [(base_url)], [(site_name)] та інші)
    

    Використання

    Звичайний плейсхолдер виду [+placeholder+] легко перетворюється на плейсхолдер PHx: [+placeholder:esc+]. Те саме можна зробити з тегом вмісту:

    [*createdby*]

    Додаємо модифікатор:

    [*createdby:date=`%a %B %d, %Y at %H:%M`*]

    Також можна використовувати кілька модифікаторів одразу. Вони будуть оброблені ліворуч:

    somevar:esc:nl2br:strip

    Розширене застосування

    Наявність спеціального плейсхолдера "phx" дозволяє використовувати синтаксис PHx без реальної змінної.

    [+phx:if=`[+this+]`:is=`[+that+]`:then=`do this`:else=`do that`+]
    

    З деякими модифіакторами цей плейсхолдер набуває певного значення. У випадку модифікатора "userinfo" він повертає відповідне значення з інформації про поточного користувача:

    [+phx:userinfo=`username`+]

    Синтаксис

    Хоч це і здається логічним, але на цьому варто загострити увагу. Уникайте використання наступних конструкцій у шаблоні, якщо вони не є частиною тегу MODx:

    [+
    [*
    [(
    +]
    *]
    )]
    ]]
    

    Парсер спробує їх обробити та MODx видасть помилку. Зазвичай такої проблеми немає. Але у випадку з JavaScript у вас може бути конструкція, подібна до цієї:

    array[counter++]

    що спровокує дивну поведінку через +].

    Також CDATA, що закриває тег, може створити проблеми.

    /* ]]> */

    Пам'ятайте, що ви не зможете втратити дані вашого сайту, використовуючи неправильний синтаксис PHx. Найгірше, що може статися, - ваш шаблон неправильно відобразиться.

    lcase

    - Повертає рядок, наведений до нижнього регістру.

    [+string:lcase+]

    ucase

    - Приведе всі символи рядка до верхнього регістру.

    [+ucase:lcase+]

    ucfirst

    - Перша літера в рядку стане великою.

    [+ucfirst:lcase+]

    ellipsis

    - Обрізає рядок.

    [+description:ellipsis=`150`]

    length | len

    - Поверне довжину рядка.

    [+string:len+]

    notags

    - Виріже всі HTML теги з рядка.

    [+string:notags+]

    esc

    - Видаляє html теги та розриви рядків

    [+string:esc+]

    htmlent

    - Конвертує вихідну змінну в html сутності. Аналог htmlentities() у PHP.

    [+string:htmlent+]

    nl2br

    - Конвертує символи перекладу рядка на теги.

    [+string:nl2br+]

    strip

    - Видалити символи нового рядка(\n), табулятори(\t), що йдуть пробіли підряд.

    [+string:strip+]

    reverse

    - Переверне задом навпаки літери.

    [+string:reverse+]

    wordwrap

    - Встановлює переноси в залежності від кількості символів слова, аналогічно функції php (За замовчуванням: 70).

    [*pagetitle:wordwrap=`10`*]

    limit

    - Поверне перші символи X від поточного значення (За замовчуванням: 100).

    [*pagetitle:limit=`50`*]

    date

    - Перетворює мітку часу unix timestamps відповідно до заданого формату.

    [*createdon:date=`%d.%m.%Y`*]

    md5

    - Створює MD5-хеш поточного значення.

    [*pagetitle:md5*]

    userinfo

    - Повертає запитані модифікатори дані про користувача.

    [+phx:userinfo=`username`+]
    • cachepwd : Cache password
    • comment : Comment
    • country : Країна
    • dob : Дата народження у форматі часу UNIX
    • email : Email
    • fax : Факс
    • fullname : Повне ім'я
    • gender : Пол
    • internalKey : User internal key
    • lastlogin : Last login, in UNIX time format
    • logincount : Number of logins
    • mobilephone : Мобільний телефон
    • password : Пароль
    • phone : Телефон
    • photo : Фотографія
    • role : Роль
    • state : Статус
    • thislogin : Цей сайт, в UNIX time format
    • username : Логін
    • zip : Поштовий індекс

    math

    - Використовувати обчислення, такі, як - * + /.

    "?" символ замінюється поточним значенням розширення, але також можна використовувати вкладені теги.

    [+price:math=`?*[+curs+]`+] 

    ifempty

    - Використовувати "інше значення" якщо значення placeholder або templatevar порожнє.

    [*longtitle:ifempty=`[*pagetitle*]`*]

    select

    - Приймає значення, залежно від значень placeholder або templatevar.

    [+placeholder:select=`0=OFF&1=ON&2=UNKNOWN`+]

    Умовні вирази

    is - одно (==)

    - аліаси: eq

    ne - не одно (!=)

    - аліаси: isnot, isnt

    eg - більше або одно (>=)

    - аліаси: isgt

    el - менше або одно (<=)

    - аліаси: islt

    gt - більше (>)

    lt - менше (<)

    mo=`Webgroups`

    - аліаси: isinrole, ir, memberof

    Приймає як параметр розділений комами список веб-груп і повертає значення true/false залежно від того, чи належить поточний користувач до будь-якої з цих груп чи ні (замінює собою модифікатор "inrole" , який необхідно було поєднувати з умовним оператором).

    [+phx:mo=`Адміністратори`:then=`Я адмін`:else=`Я простий смертний`+]

    if=`value`

    - Приймає як параметр змінну для порівняння. Також може бути використане у поєднанні з :or або :and.

    [+phx:if=`[+price+]`:gt=`0`:then=`Ціна: [+price+]`+]

    or

    - Логічне АБО (перевіряється, чи вірна перша чи друга умова).

    [+phx:if=`[*id*]`:is=`2`:or:is=`3`:then=`{{Chunk}}`:else =`{{OtherChunk}}`+]

    and

    - Логічне І (перевіряється, чи правильні обидві умови).

    [+phx:if=`[!UltimateParent!]`:is=`1`:and:isnot=`[*id*]`:then=`{{ChildChunk} }`:else=`{{ParentChunk}}`+]

    then=`template`

    - Значення template відображається, коли всі умови правильні. Тут можна вказати виклик {{чанка}}, [[сніппета]] або чистий HTML.

    else=`template`

    - Значення template відображається, коли всі умови не правильні. Тут можна вказати виклик {{чанка}}, [[сніппета]] або чистий HTML.

    show

    - Використовується подібно до then, але як шаблон для виведення використовується вихідне значення. Виконується, якщо умови правильні.

    [+myplaceholder:len:gt=`3`:show+]
    [+myplaceholder:is=`myvalue`:then=`Правильно`:else=`Неправильно`+]
    
    [+myplaceholder:isnot=`myvalue`:then=`Правильно`:else=`Неправильно`+]
    [+myplaceholder:is=`othervalue`:then=`Правильно`:else=`Неправильно`+]
    
    [+myplaceholder:is=`2`:then=``:else=``+]
    
    [+myplaceholder:gt=`1`:then=`Yes`:else=`No`+]
    [+myplaceholder:lt=`3`:and:gt=`1`:then=`Yes`:else=`No`+]
    [+myplaceholder:lt=`[+someplaceholder+]`:then=`Yes`:else=`No`+]
    [+myplaceholder:islt=`2`:then=`Yes`:else=`No`+]
    [+myplaceholder:isnot=`2`:or:lt=`3`:then=`Yes`:else=`No`+]
    
    [+myplaceholder:isnot=`2`:then=`Yes`:else=`No`+]
    [+myplaceholder:gt=`[+someplaceholder+]`:then=`Yes`:else=`No`+]
    [+myplaceholder:lt=`2`:then=`Yes`:else=`No`+]
    [+myplaceholder:gt=`2`:then=`Yes`:else=`No`+]
    [+myplaceholder:lt=`1`:then=`Yes`:else=`No`+]