MODX Revolution как бързо да получите стойност на полето

Много бърз и ефективен начин да получите стойността на поле в MODX Revolution от Джейсън Кауърд.

Да предположим, че трябва да получите стойността на поле на някакъв обект (ресурс, потребител и т.н.). Нека да разгледаме типичен пример за решаване на този прост проблем.

Дотук всичко е просто: ресурс се извлича с >

Но този метод е много ресурсоемък, тъй като полученият обект заема неприемливо голямо количество памет, ако трябва да получите само стойността на едно поле.

Но си струва да добавите малко магия и всичко ще работи малко по-бързо.

Конкретен пример

Нека подобрим последния пример.

Обяснение

Този метод работи за всеки MODX обект. Първият аргумент на $modx->newQuery() е името на класа на обекта, чиято стойност на полето трябва да бъде извлечена (modUser, modResource, modUserProfile и т.н.). Вторият аргумент е асоциативен масив и съдържа вече известната информация за обекта. След това методът select указва полето, чиято стойност искате да получите, в този случай pagetitle. Ако нещо се обърка (не е намерен обект или поле), методът getValue ще върне false.

Ако потребителският идентификатор е известен, тогава всичко е наред.

Ами ако е известно само потребителското име на потребителя? Основното нещо е да не се паникьосвате.

Полето за потребителско име се съхранява не в modUserProfile, а в modUser, така че трябва да направите допълнителна стъпка.

Ресурсни полета като createdby, editedby, publishedby и deletedby съдържат потребителския идентификатор. Получаването на потребителското име може да изглежда така:

Но как да получите стойността на полето на профила?

Имайте предвид, че когато извличате съдържанието на обекти като ресурс,парче, шаблон, фрагмент или плъгин, тяхното съдържание няма да бъде обработено от анализатора.