Вывод автора страницы — различия между версиями
Материал из Umicms
Stexe (обсуждение | вклад) |
Stexe (обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
* Возвращает данные об авторе страницы | * Возвращает данные об авторе страницы | ||
* @param integer $pageId id страницы | * @param integer $pageId id страницы | ||
− | * @param string $template шаблон отображения результатов макроса | + | * @param string $template шаблон отображения результатов макроса, по умолчанию 'author' |
* @return Array данные автора | * @return Array данные автора | ||
*/ | */ | ||
Строка 57: | Строка 57: | ||
</li> | </li> | ||
<li> | <li> | ||
− | Второй параметр - имя шаблона, по которому будут отображаться результаты. | + | Второй параметр - имя шаблона, по которому будут отображаться результаты, по умолчанию 'author'. |
</li> | </li> | ||
</ul> | </ul> | ||
<h2>TPL-шаблонизатор</h2> | <h2>TPL-шаблонизатор</h2> | ||
− | + | Примеры вызова: | |
<source lang="html4strict"> | <source lang="html4strict"> | ||
− | %% | + | %custom getPageAuthorInfo( '2' )% |
+ | </source> | ||
+ | <source lang="html4strict"> | ||
+ | %custom getPageAuthorInfo( %id% )% | ||
</source> | </source> | ||
+ | В директории tpls\content\ создадим файл author.tpl и добавим в него следующее содержимое: | ||
+ | <source lang="html4strict"> | ||
+ | <?php | ||
+ | $FORMS = array(); | ||
+ | $FORMS['author_data'] = <<<END | ||
+ | <div> | ||
+ | <h3>Автор</h3> | ||
+ | <span>%name% %lastname%</span> | ||
+ | </div> | ||
+ | END; | ||
+ | ?> | ||
+ | </source> | ||
<h2>XSLT-шаблонизатор</h2> | <h2>XSLT-шаблонизатор</h2> |
Версия 11:28, 21 апреля 2014
Актуально для версии 2.9.6
Задача: Вывести информацию об авторе страницы
Реализация:
В файл ~classes/modules/custom.php добавим определение макроса getPageAuthorInfo():
/**
* Возвращает данные об авторе страницы
* @param integer $pageId id страницы
* @param string $template шаблон отображения результатов макроса, по умолчанию 'author'
* @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 страницы, информацию об авторе которой нужно получить.
- Второй параметр - имя шаблона, по которому будут отображаться результаты, по умолчанию 'author'.
TPL-шаблонизатор
Примеры вызова:
%custom getPageAuthorInfo( '2' )%
%custom getPageAuthorInfo( %id% )%
В директории tpls\content\ создадим файл author.tpl и добавим в него следующее содержимое:
<?php
$FORMS = array();
$FORMS['author_data'] = <<<END
<div>
<h3>Автор</h3>
<span>%name% %lastname%</span>
</div>
END;
?>