MODX Revolution як швидко отримати значення поля
Дуже швидкий і ефективний спосіб отримання значення поля MODX Revolution від Джейсона Коварда.
Припустимо, необхідно отримати значення поля якогось об'єкта (ресурс, користувач та ін.). Давайте розглянемо типовий приклад вирішення цього простого завдання.
Поки що все просто: відбувається вибірка ресурсу з >
Але цей спосіб дуже ресурсомісткий, тому що отриманий об'єкт займає небагато пам'яті, якщо необхідно отримати лише значення одного поля.
Але варто додати трохи магії і все працюватиме трохи швидше.
Конкретний приклад
Давайте покращимо останній приклад.
Пояснення
Цей метод працює для будь-якого об'єкта MODX. Перший аргумент $modx->newQuery() — це ім'я класу об'єкта, значення якого потрібно отримати (modUser, modResource, modUserProfile і т.д.). Другий аргумент є асоціативним масивом і містить інформацію, яка вже відома про об'єкт. Потім у методі select вказується поле, значення якого потрібно отримати, у разі — pagetitle. Якщо щось піде негаразд (не знайдено об'єкт чи поле), то метод getValue поверне false.
Якщо відомий ідентифікатор користувача, все чудово.
Що робити, якщо відомий лише username користувача? Головне – не панікувати.
Поле username зберігається не в modUserProfile, а в modUser, тому доведеться вчинити додаткову дію.
Такі поля ресурсів, як createdby, editedby, publishedby і deletedby містять ідентифікатор користувача. Отримання імені користувача може виглядати так:
А як отримати значення поля профілю?
Пам'ятайте, що при отриманні вмісту таких об'єктів, як ресурс,чанк, шаблон, сніпет чи плагін, їх вміст не буде оброблено парсером.