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

Прогонка кода в элементе инфоблока

00 голосов
6
Добрый день!

Подскажите, пожалуйста, при записи в элемент инфоблока программного кода, почему то код игнорируется в Публичном разделе.
Для чего так сделали? Как сделать так, чтобы код прорабатывался.
спросил 18 Окт, 13 от Patek (320 баллов)

6 Ответы

00 голосов
Фсе, нашел решение!!!! :idea:

Для того, чтобы вставить компонент (или просто прогнать ПХП'шный код)в содержание элемента инфоблока нужно:

1. На странице сайта вставляем компонент news.list и настраиваем его на вывод элементов какого-нибудь инфоблока;
2. В папке шаблона этого компонента(news.list) создаем файл result_modifier.php с вот таким содержанием

Код
<?
  $file = fopen('progon.php','w');
  if(!file){
   echo("Ошибка открытия файла");
  }else{
   fwrite ($file, $arResult["ITEMS"][0]["PREVIEW_TEXT"]);
  }
  fclose ($file);
?>


3. Дальше в этой же папке шаблона лежит файл template.php - шаблон компонента. В коде этого шаблона надо исправить вот это

Код
<?foreach($arResult["ITEMS"] as $arItem):?>

   ...

   <?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
      <p><?echo $arItem["PREVIEW_TEXT"];?></p>
   <?endif;?>

   ...

<?endforeach;?>


на вот такой участок кода

Код
<?foreach($arResult["ITEMS"] as $arItem):?>

   ...

   <?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
      <?include "progon.php";?>
   <?endif;?>

   ...

<?endforeach;?>


4. Теперь в "Анонс" или "Подробнее" элемента инфоблока пишем любой код в режиме HTML не ставя галочку "Текстовый редактор"

5. Сохраняем и радуемся. Теперь любой код (даже компонента битрикс) проработает.

Есть 2 минуса в реализации такого образа:

1. Если пользователь при редактировании этого элемента перейдет в режим редактирования в HTML-редактора битрикса, то весь ПХП код полетит к чертям
2. Нельзя изменять параметры компонентов в публичной части сацта.
ответил 10 Ноя, 13 от Patek (320 баллов)
00 голосов
А зачем, простите, такое вообще потребовалось????
ответил 16 Фев, 14 от Pomnep (13,960 баллов)
00 голосов
Здравствуйте Евгений.
Я сделал одну страницу сайта и инфоблок с большим количеством разделов. Вывел все новости из этого инфоблока с помощью стандартного компонента новостей, но в некоторых страницах потребовался еще функционал некоторых компонентов Битрикса в то время, как в остальных разделах этого функционала не требовалось. Куча папок и страниц на сервере заказчику не нужна, так что пришлось обойтись инфоблоком.

Вроде запутано, но работает как надо. Страница одна, а различных компонентов много. Очень удобно(по крайней мере для меня).

Если честно, то я пока не очень понимаю, по какой причине разработчики этой системы не позволяют прогонять код в инфоблоках. :(
ответил 07 Июнь, 14 от Patek (320 баллов)
00 голосов
Потому что неправильно это. Потенциальная дыра офигительного размера. Достаточно получить права на запись в этот инфоблок - и с вашими сайтами можно делать все, что угодно. Вам нужно было шаблон инфоблока кастомизировать.
ответил 05 Окт, 14 от Pomnep (13,960 баллов)
00 голосов
А есть альтернативный вариант решения данной проблемы? Если знаете как, то поделитесь опытом. Можно хотябы самый банальный примерчик, очень бы помогло.
Заранее спасибо. :)
ответил 06 Фев, 15 от Patek (320 баллов)
00 голосов
А можно вообще зациклить:
В шаблоне компоненты A вставляем
Код
   <?if($arParams["DISPLAY_PREVIEW_TEXT"]!="N" && $arItem["PREVIEW_TEXT"]):?>
      <?include "progon.php";?>
   <?endif;?> 

а внутри progon.php код этой же компоненты.. :o
ответил 19 Май, 15 от BronXX (100 баллов)

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

0 голосов
10 ответов
спросил 13 Март, 13 от yye (220 баллов)
0 голосов
1 ответ
0 голосов
1 ответ
спросил 01 Апр, 14 от LoLiTKa (620 баллов)