|
Задача: в шаблоне элемента детально вывести самый позитивный отзыв.
Вывести надо отзыв с максимальной оценкой, последний по дате. Выводить только достоинства. Если достоинства не заполнены, то текст.
Компонент catalog.element, файл result_modifier.php
$arResult["REVIEW"] = array();
if(CModule::IncludeModule("askaron.reviews"))
{
$arParameters = array(
'order' => array(
"GRADE" => "DESC",
'DATE' => 'DESC'
),
"filter" => array(
"=ELEMENT_ID" => $arParams["ELEMENT_ID"],
"ACTIVE" => "Y",
),
'select' => array(
"*",
"AUTHOR_USER.NAME",
"AUTHOR_USER.LAST_NAME",
"AUTHOR_USER.LOGIN",
),
'limit' => 1,
);
$res = \Askaron\Reviews\ReviewTable::getList( $arParameters );
while ( $arFields = $res->fetch() )
{
$arDisplayText = $arFields["PRO"];
if ($arDisplayText == "")
{
$arDisplayText = $arFields["TEXT"];
}
$arFields["DISPLAY_TEXT"] = htmlspecialcharsbx($arDisplayText); $arFields["DISPLAY_TEXT"] = str_replace( "\n", "<br>", $arFields["DISPLAY_TEXT"] );
$display_name = trim( $arFields["AUTHOR_NAME"] );
if ($display_name == "")
{
$display_name = trim($arFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_NAME"]." ".$arFields["ASKARON_REVIEWS_REVIEW_AUTHOR_USER_LAST_NAME"] );
}
if ($display_name == "" && $arFields["AUTHOR_USER_ID"] > 0 )
{
$display_name = "Пользователь №".$arFields["AUTHOR_USER_ID"];
}
if ($display_name == "" )
{
$display_name = "Гость";
}
$arFields["~DISPLAY_NAME"] = $display_name;
$arFields["DISPLAY_NAME"] = htmlspecialcharsbx($display_name);
$arResult["REVIEW"] = $arFields;
}
// добавим к кешу шаблона еще один ключ.
// теперь кеш шаблона детальной страницы сбрасывается сразу, когда кто-то добавляет, изменяет или удаляет отзыв
if (defined('BX_COMP_MANAGED_CACHE') && is_object($GLOBALS['CACHE_MANAGER'] ) )
{
if ( $arParams["CACHE_TIME"] > 0 )
{
$GLOBALS['CACHE_MANAGER']->RegisterTag( 'askaron_reviews_for_element_'.$arResult["ID"] ); // cache by element
}
}
}
В файле template.php можно вывести
<?if ( $arResult["REVIEW"] ):?>
<table>
<tr>
<td>
<?=$arResult["REVIEW"]["DISPLAY_NAME"]?>
</td>
</tr>
<tr>
<td>
<?=$arResult["REVIEW"]["DISPLAY_TEXT"]?>
</td>
</tr>
</table>
<?endif?>
Примеры API |
Описание курса
| События ORM D7 модуля Отзывы о товаре
|