Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как в компоненте iblock.vote поменять поля (vote_count, vote_sum, rating)

00 голосов
4
Добрый День знатоки программирования!Подскажите как мне в компоненте iblock.vote поменять создание информационных полей (vote_count, vote_sum, rating)?
Все перепробовал, уже все менял, никак не создает почему то :(
спросил 15 Янв, 14 от Chemikals (840 баллов)

4 Ответы

00 голосов
Вот код файла component.php , который создает эти свойства инфоблока, обрабатывает и считает количество голосов!
Код
<?
//Следуйте комментариям вида Число* для отслеживания пути исполнения.

//21*
//В случае AJAX запроса попадем сюда
if(!defined("B_PROLOG_INCLUDED") && isset($_REQUEST["AJAX_CALL"]) && $_REQUEST["AJAX_CALL"]=="Y")
{
   require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
   //22*
   //Проверям: ключ подошел?
   if(CModule::IncludeModule("iblock"))
   {
      $arCache = CIBlockRSS::GetCache($_REQUEST["SESSION_PARAMS"]);
      if($arCache && ($arCache["VALID"] == "Y"))
      {
         //23*
         //Да!
         //Забираем параметры "подключения"
         $arParams = unserialize($arCache["CACHE"]);
         //18*
         //Добиваем теми, которые доступны "снаружи"
         foreach($arParams["PAGE_PARAMS"] as $param_name)
         {
            if(!array_key_exists($param_name, $arParams))
               $arParams[$param_name] = $_REQUEST["PAGE_PARAMS"][$param_name];
         }
         //24*
         //Эта магия позволяет нам правильно определить
         //текущий шаблон компонента (с учетом темы)
         if(array_key_exists("PARENT_NAME", $arParams))
         {
            $component = new CBitrixComponent();
            $component->InitComponent($arParams["PARENT_NAME"], $arParams["PARENT_TEMPLATE_NAME"]);
            $component->InitComponentTemplate($arParams["PARENT_TEMPLATE_PAGE"]);
         }
         else
         {
            $component = null;
         }
         //25*
         //Подключаем компонент
         //Результат его работы (div) заменит тот, что сейчас у клиента в браузере
         $APPLICATION->IncludeComponent($arParams["COMPONENT_NAME"], $arParams["TEMPLATE_NAME"], $arParams, $component);
      }
   }

   require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_after.php");
   die();
}

if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();

if(!CModule::IncludeModule("iblock"))
{
   ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
   return;
}
/************************************************
   Processing of received parameters
*************************************************/
$arParams = array(
   "IBLOCK_ID" => intval($arParams["IBLOCK_ID"]),
   "ELEMENT_ID" => intval($arParams["ELEMENT_ID"]),
   "MAX_VOTE" => intval($arParams["MAX_VOTE"])<=0? 5: intval($arParams["MAX_VOTE"]),
   "VOTE_NAMES" => is_array($arParams["VOTE_NAMES"])? $arParams["VOTE_NAMES"]: array(),
   "CACHE_TYPE" => $arParams["CACHE_TYPE"],
   "CACHE_TIME" => $arParams["CACHE_TIME"],
   "DISPLAY_AS_RATING" => $arParams["DISPLAY_AS_RATING"]=="vote_avg"? "vote_avg": "rating",
   "READ_ONLY" => $arParams["READ_ONLY"],
);
/****************************************
   Any actions without cache
*****************************************/
//26*
//Сюда дошел в том числе и AJAX запрос
if(
   $_SERVER["REQUEST_METHOD"] == "POST"
   && !empty($_REQUEST["vote"])
   && ($_REQUEST["AJAX_CALL"]=="Y" || check_bitrix_sessid())
   && $arParams["READ_ONLY"]!=="Y"
)
{
   if(!is_array($_SESSION["IBLOCK_RATING"]))
      $_SESSION["IBLOCK_RATING"] = Array();
   $RATING = intval($_REQUEST["rating"])+1;
   if($RATING>0 && $RATING<=$arParams["MAX_VOTE"])
   {
      $ELEMENT_ID = intval($_REQUEST["vote_id"]);
      if($ELEMENT_ID>0 && !array_key_exists($ELEMENT_ID, $_SESSION["IBLOCK_RATING"]))
      {
         $_SESSION["IBLOCK_RATING"][$ELEMENT_ID]=true;
         $rsProperties = CIBlockElement::GetProperty($arParams["IBLOCK_ID"], $ELEMENT_ID, "value_id", "asc", array("ACTIVE"=>"Y"));
         $arProperties = array();
         while($arProperty = $rsProperties->Fetch())
         {
            if($arProperty["CODE"]=="vote_count")
               $arProperties["vote_count"] = $arProperty;
            elseif($arProperty["CODE"]=="vote_sum")
               $arProperties["vote_sum"] = $arProperty;
            elseif($arProperty["CODE"]=="rating")
     &nb
ответил 01 Май, 14 от Chemikals (840 баллов)
00 голосов
Цитата
поменять создание информационных полей

Если надо поменять коды этих полей, то поменяйте их все, которые в кавычках (не пробовал).
А зачем это вообще нужно, или имелось ввиду что-то другое.
ответил 26 Авг, 14 от NitroGeN (2,840 баллов)
00 голосов
Просто я хочу сделать 2 рейтинга голосования, один для пользователей, другой для модераторов. Просто для пользователей у меня в одном шаблоне создаются vote_count, vote_sum, rating, а для модераторов я хочу сделать другие поля, vote_moder_count, vote_moder_sum, rating_moder
У меня два разных шаблона и два разных файла component.php, один стандартный где создаются эти поля vote_count, vote_sum, rating, и другой мой точно с таким же содержанием, только я хочу чтобы создавались другие поля!
ответил 01 Янв, 15 от Chemikals (840 баллов)
00 голосов
Создайте папку к примеру my в папке components, туда скопируйте стандартный компонент, переназовите его, в нем поменяйте значения в файле components.php, в него еще допполнительно добавьте
Код
global $USER;
$arGroups = $USER->GetUserGroupArray();
if(in_array(ид группа модеров, $arGroups) 

чтоб могли только модеры голосовать и подключайте где вам нужно
ответил 20 Апр, 15 от Niferiys (220 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
9 ответов
спросил 05 Май, 13 от Mauka (320 баллов)
0 голосов
0 ответов
0 голосов
0 ответов
спросил 15 Фев, 14 от delajla (500 баллов)
0 голосов
4 ответов