Вывод автора страницы — различия между версиями
Материал из Umicms
Ver (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | + | [[Категория:Верстка в TPL]][[Категория: Верстка в XSLT]][[Категория: Написание кастомных макросов]] | |
− | ~classes/modules/custom.php | + | '''Актуально для версии 2.9.6'''<br/><br/> |
− | + | '''Задача:''' Вывести информацию об авторе страницы <br/><br/> | |
+ | '''Реализация:''' | ||
+ | |||
+ | |||
+ | В файл ~classes/modules/custom.php добавим определение макроса getPageAuthorInfo(): | ||
+ | |||
<source lang="php"> | <source lang="php"> | ||
− | + | /** | |
− | + | * Возвращает данные об авторе страницы | |
− | + | * @param integer $pageId id страницы | |
− | + | * @param string $template шаблон отображения результатов макроса | |
− | + | * @return Array данные автора | |
− | + | */ | |
− | + | public function getPageAuthorInfo($pageId = false, $template = 'author') { | |
− | + | if ( !$pageId ) { | |
− | + | $pageId = getRequest('param0'); | |
− | + | } | |
− | + | $umiHierarchy = umiHierarchy::getInstance(); | |
− | + | //Получаем экземпляр класса UmiHierarchyElement страницы с id = $pageId | |
− | + | $pageElement = $umiHierarchy->getElement( $pageId ); | |
− | + | ||
− | + | if ( !( $pageElement instanceof iUmiHierarchyElement ) ) { | |
+ | return ''; | ||
+ | } | ||
+ | //Получаем объект страницы (источник данных) | ||
+ | $pageSourceObject = $pageElement->getObject(); | ||
+ | //Получаем id владельца объекта | ||
+ | $authorId = $pageSourceObject->getOwnerId(); | ||
+ | $umiObjectsCollection = umiObjectsCollection::getInstance(); | ||
+ | $authorObject = $umiObjectsCollection->getObject( $authorId ); | ||
+ | |||
+ | if ( !( $authorObject instanceof iUmiObject ) ) { | ||
+ | return ''; | ||
+ | } | ||
+ | //Получаем необходимые данные автора страницы | ||
+ | $authorLogin = $authorObject->getName(); | ||
+ | $authorFname = $authorObject->getValue( "fname" ); | ||
+ | $authorLastName = $authorObject->getValue( "lname" ); | ||
+ | |||
+ | $authorInfo = array(); | ||
+ | $authorInfo['id'] = $authorId; | ||
+ | $authorInfo['login'] = $authorLogin; | ||
+ | $authorInfo['name'] = $authorFname; | ||
+ | $authorInfo['lastname'] = $authorLastName; | ||
+ | |||
+ | list( $authorDataBlock ) = def_module::loadTemplates('content/'.$template, 'author_data'); | ||
+ | return def_module::parseTemplate($authorDataBlock, $authorInfo); | ||
+ | } | ||
</source> | </source> | ||
− | Макрос принимает | + | Макрос принимает два параметра: |
− | + | <ul> | |
− | + | <li> | |
− | + | Первый параметр - id страницы, информацию об авторе которой нужно получить. | |
− | + | </li> | |
− | < | + | <li> |
− | + | Второй параметр - имя шаблона, по которому будут отображаться результаты. | |
− | </ | + | </li> |
− | + | </ul> | |
− | + | <h2>TPL-шаблонизатор</h2> | |
− | < | + | Пример вызова: |
− | % | + | <source lang="html4strict"> |
− | </ | + | %% |
+ | </source> | ||
− | + | <h2>XSLT-шаблонизатор</h2> |
Версия 11:25, 21 апреля 2014
Актуально для версии 2.9.6
Задача: Вывести информацию об авторе страницы
Реализация:
В файл ~classes/modules/custom.php добавим определение макроса getPageAuthorInfo():
/**
* Возвращает данные об авторе страницы
* @param integer $pageId id страницы
* @param string $template шаблон отображения результатов макроса
* @return Array данные автора
*/
public function getPageAuthorInfo($pageId = false, $template = 'author') {
if ( !$pageId ) {
$pageId = getRequest('param0');
}
$umiHierarchy = umiHierarchy::getInstance();
//Получаем экземпляр класса UmiHierarchyElement страницы с id = $pageId
$pageElement = $umiHierarchy->getElement( $pageId );
if ( !( $pageElement instanceof iUmiHierarchyElement ) ) {
return '';
}
//Получаем объект страницы (источник данных)
$pageSourceObject = $pageElement->getObject();
//Получаем id владельца объекта
$authorId = $pageSourceObject->getOwnerId();
$umiObjectsCollection = umiObjectsCollection::getInstance();
$authorObject = $umiObjectsCollection->getObject( $authorId );
if ( !( $authorObject instanceof iUmiObject ) ) {
return '';
}
//Получаем необходимые данные автора страницы
$authorLogin = $authorObject->getName();
$authorFname = $authorObject->getValue( "fname" );
$authorLastName = $authorObject->getValue( "lname" );
$authorInfo = array();
$authorInfo['id'] = $authorId;
$authorInfo['login'] = $authorLogin;
$authorInfo['name'] = $authorFname;
$authorInfo['lastname'] = $authorLastName;
list( $authorDataBlock ) = def_module::loadTemplates('content/'.$template, 'author_data');
return def_module::parseTemplate($authorDataBlock, $authorInfo);
}
Макрос принимает два параметра:
- Первый параметр - id страницы, информацию об авторе которой нужно получить.
- Второй параметр - имя шаблона, по которому будут отображаться результаты.
TPL-шаблонизатор
Пример вызова:
%%