Часто бывает важно собрать отзывы посетителей о публикации. Для каких целей? Например, для уточнения спроса, корректировки цен, да и для будущих публикаций полезно. Стандартными средствами этого не сделать, нужны доработки. Как же нам организовать опрос в детальном выводе новости на «Битрикс»? Читайте далее.
1. Присвоим маркер замены текущего опроса
Назовем его #VOTE_ID_YY#, где YY обозначает ID нужного опроса.
2. Настроим компонент опроса
Кастомизируем компонент bitrix:voting.current на отдельной странице, предварительно отключив AJAX-компонента.
3. Создаем файлы обработки голосования
Файл result_modifier.php с кодом:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?$this->__component->SetResultCacheKeys(array("CACHED_TPL"));?>
Файл component_epilog.php с кодом:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
echo preg_replace_callback(
"/#VOTE_ID_([\d]+)#/is".BX_UTF_PCRE_MODIFIER,
create_function('$matches', 'ob_start();
/*component here*/
$retrunStr = @ob_get_contents();
ob_get_clean();
return $retrunStr;'),
$arResult["CACHED_TPL"]);
?>
4. Редактируем шаблон новости
Делаем копию шаблона новости и редактируем. Вместо /*component here*/ вызываем наш компонент:
$GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:voting.current",
"main_page",
Array(
"CHANNEL_SID" => "ANKETA",
"VOTE_ID" => $matches[1],
"CACHE_TYPE" => "A",
"CACHE_TIME" => "3600",
"AJAX_MODE" => "N",
"AJAX_OPTION_SHADOW" => "Y",
"AJAX_OPTION_JUMP" => "Y",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
)
);
5. Доработаем template.php
На второй строке добавим код:
<?ob_start();?>
И в конце файла
<?
$this->__component->arResult["CACHED_TPL"] = @ob_get_contents();
ob_get_clean();
?>
Готово!
-------------------------------
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» http://www.acrit-studio.ru/pantry-programmer/solutions-to-bugs-and-errors-1c_bitrix/the-experience-of-developing-a-_trade-management_-in-_bitrix/ каждый день!
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Нет комментариев