pdoTools в MODX - заміна стандартних сніпетів

pdoTools - це пакет, що містить інструменти для швидкої розробки сніпетів в MODX Revolution, а також набір готових сніпетів для повсякденної роботи. Саме про цих сніпетів і йтиметься у статті, а точніше про те, як я замінював ними стандартні «сніпети» і для чого це робив.

Так чим же хороший компонент pdoTools? А тим, що дозволяє створювати сніпети без використання xPDO - MODX'івської надбудови над PHP розширенням - PDO. Невелике пояснення із цього приводу. Спочатку всі запити до бази даних здійснювалися на SQL (структуровану мову запитів), і все б добре, але синтаксис цих запитів до різних СУБД (MySQL, MSSQL, Oracle, FireBird. ) Часто відрізняється. Доводилося заточувати код під певну СУБД і переписувати його під час використання з іншого СУБД. Щоб уникнути цієї незручності для PHP було написано розширення PDO, яке дозволило створити універсальний інтерфейс для роботи з базами даних. MODX пішли далі і для зручності розробки написали надбудову над PDO, яку назвали xPDO. Ця надбудова робить роботу з БД з-під MODX (а ми пам'ятаємо, що MODX, це не просто CMS, це CMF) ще зручнішою і безпечнішою, але за все треба платити і в нашому випадку це швидкість роботи. xPDO як результат запиту повертає об'єкти і при великій кількості об'єктів, що повертаються (тисячі), час генерації сторінки значно зростає. Тому наш співвітчизник Василь Наумкін вирішив розробити власний інструмент для створення сніпетів, які працюють через PDO, а не через xPDO. Як ви зрозуміли, цей інструмент і є «pdoTools».

Далі наслідують приклади, як я робив заміни всім звичних сніпетів на сніпети з пакету «pdoTools». Описувати всі параметри цих сніпетів не бачу сенсу, тому що вони вже є насайті розробника, але на деяких моментах я все ж таки загострю увагу.

Заміна getResources на pdoResources

Сніпети для виведення ресурсів. Про цю заміну я писав окрему статтю, вона вийшла не надто змістовною, але комусь може і знадобилася. Приклад заміни сніпету "getRecources" на "pdoRecources" з прив'язкою до "pdoPage" трохи нижче.

Заміна getPage на pdoPage

Сніпети для посторінкового виведення ресурсів MODX Revolution.

"articlePaging" - це набір параметрів, де зберігається вміст чанків Сніппет для оформлення висновку. Для «pdoPage» я наведу їхній вміст, оскільки він трохи відрізняється від наявних у «getPage».

По-перше, зникли параметри &element >

Заміна getResourcesTag на pdoResources

Відразу звертаємо увагу на параметр - &where=`` У ньому ми вказуємо критерій вибірки ресурсів. Якщо простими словами, то вибираємо всі ресурси, у яких у TV параметрі tags зустрічається слово, що передається в GET параметрі tag. А його, у свою чергу, ми витягуємо з URL за допомогою сніпету getUrlParam, який ви можете встановити з репозиторію

До речі, можливо, є й якісь інші способи, якщо знаєте, то поділіться.

Заміна breadCrumbs на pdoCrumbs

Після заміни довелося трохи підредагувати CSS оформлення хлібних крихт, що виводяться, так як «pdoCrumbs» на відміну від «BreadCrumbs» на виході дає не список li, а просто набір посилань, розділених сепаратором, зазначеним у сніпеті.

Заміна Wayfinder на pdoMenu

Заміна GoogleSitemap на pdoSitemap

Інші сніпети

До складу «pdoTools» входить ще 2 сніпети. Я не застосовував їх поки що на практиці, тому нічого писати про них не буду. Це сніпети «pdoUsers» для виведення списку користувачів сайту іpdoNeighbors для виведення сусідніх ресурсів.