Видеоурок №6: создаем простые инфоблоки и выводим на сайт

Просмотров: 32939

Создаем инфоблоки для новостей и услуг. Рассказываю как устроен шаблон компонента "новости". Наполняем данные разделы тестовыми материалами. В качестве пробного задания необходимо создать и вывести на сайт инфоблок "Акции" на основе приме

Все серии

A A 05.07.2016
Да, точно, я сама убедилась. Спасибо.
И за шаблон каталога спасибо, все отлично и понятно теперь выглядит, можно верстать.
Сергей Манник 12.11.2016
Добрый день.
вывел компонент новости на сайт но возникла проблема с выводом анонса так как иногда он не заполнялся,
попробовал такую конструкцию поставить в шаблон вывода новостей но результата  не дало...подскажите где я косячу?
<?
$arItem["PREVIEW_TEXT"] = (TruncateText($arResult["DETAIL_TEXT"], 250));
<?echo $arItem["PREVIEW_TEXT"];
?>
Михаил Базаров 12.11.2016
Цитата
Сергей Манник написал:
Добрый день.
вывел компонент новости на сайт но возникла проблема с выводом анонса так как иногда он не заполнялся,
попробовал такую конструкцию поставить в шаблон вывода новостей но результата  не дало...подскажите где я косячу?
<?
$arItem["PREVIEW_TEXT"] = (TruncateText($arResult["DETAIL_TEXT"], 250));
<?echo $arItem["PREVIEW_TEXT"];
?>
Вы что-то странное закрутили с синтаксисом. Проверьте написание
Сергей Манник 12.11.2016
Цитата
Михаил Базаров пишет:
Цитата
Сергей Манник написал:
Добрый день.
вывел компонент новости на сайт но возникла проблема с выводом анонса так как иногда он не заполнялся,
попробовал такую конструкцию поставить в шаблон вывода новостей но результата не дало...подскажите где я косячу?
<?
$arItem["PREVIEW_TEXT"] = (TruncateText($arResult["DETAIL_TEXT"], 250));
<?echo $arItem["PREVIEW_TEXT"];
?>
Вы что-то странное закрутили с синтаксисом. Проверьте написание
так самое смешное если я это делаю в коде где выводится подробный текст то он выводит а в списке всех новостей нет
Михаил Базаров 12.11.2016
Цитата
Сергей Манник написал:
Цитата
Михаил Базаров  пишет:
Цитата
Сергей Манник написал:
Добрый день.
вывел компонент новости на сайт но возникла проблема с выводом анонса так как иногда он не заполнялся,
попробовал такую конструкцию поставить в шаблон вывода новостей но результата не дало...подскажите где я косячу?
<?
$arItem["PREVIEW_TEXT"] = (TruncateText($arResult["DETAIL_TEXT"], 250));
<?echo $arItem["PREVIEW_TEXT"];
?>
Вы что-то странное закрутили с синтаксисом. Проверьте написание
так самое смешное если я это делаю в коде где выводится подробный текст то он выводит а в списке всех новостей нет
Я просто понять не могу что вы делаете)
Вы превратили PREVIEW_TEXT в DETAIL_TEXT обрезав его до 250 символов
Потом вывели этот PREVIEW_TEXT

Не понимаю зачем?
Просто выводите DETAIL_TEXT  если надо обрежте его, типа того
Код
<?
$mytext = $arItem["DETAIL_TEXT";
echo TruncateText($mytext, 250);
?>
или
Код
<?
echo TruncateText($arItem["DETAIL_TEXT"], 250);
?>
Александр Спиридонов 23.12.2016
Здравствуйте.
Огромное спасибо Вам за Ваши уроки!
У меня в оформлении свойств Акций возникли проблемы.
Добавил в акции 2 свойства: "действует с" и "действует по". Тип обоих свойств - ДАТА.

В template взял отображение названия свойства и значение свойства в <div class="propreties">

в style.css , чтобы оба свойства были в одну строку установил display: inline-block;
и задумал, что свойства будут на зеленом фоне.
НО! между свойствами пробел и фон видно что не единый.
Как это исправить?  

Создавал родительский div над свойствами и устанавливал там white-space: nowrap;

Но это не помогло.

Код
<div class="1">
      <?foreach($arResult["FIELDS"] as $code=>$value):
      if ('PREVIEW_PICTURE' == $code || 'DETAIL_PICTURE' == $code)
      {
         ?><?=GetMessage("IBLOCK_FIELD_".$code)?>:&nbsp;<?
         if (!empty($value) && is_array($value))
         {
            ?><img border="0" src="<?=$value["SRC"]?>" width="<?=$value["WIDTH"]?>" height="<?=$value["HEIGHT"]?>"><?
         }
      }
      else
      {
         ?><?=GetMessage("IBLOCK_FIELD_".$code)?>:&nbsp;<?=$value;?><?
      }
      ?><br />
   <?endforeach;

   foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>

      <div class="propreties"><?=$arProperty["NAME"]?>
      <b><?if(is_array($arProperty["DISPLAY_VALUE"])):?>
         <?=implode("&nbsp;/&nbsp;", $arProperty["DISPLAY_VALUE"]);?>
      <?else:?>
         <?=$arProperty["DISPLAY_VALUE"];?>
      <?endif?></b></div>
   <?endforeach;

   if(array_key_exists("USE_SHARE", $arParams) && $arParams["USE_SHARE"] == "Y")
   {
      ?>
      <div class="news-detail-share">
         <noindex>
         <?
         $APPLICATION->IncludeComponent("bitrix:main.share", "", array(
               "HANDLERS" => $arParams["SHARE_HANDLERS"],
               "PAGE_URL" => $arResult["~DETAIL_PAGE_URL"],
               "PAGE_TITLE" => $arResult["~NAME"],
               "SHORTEN_URL_LOGIN" => $arParams["SHARE_SHORTEN_URL_LOGIN"],
               "SHORTEN_URL_KEY" => $arParams["SHARE_SHORTEN_URL_KEY"],
               "HIDE" => $arParams["SHARE_HIDE"],
            ),
            $component,
            array("HIDE_ICONS" => "Y")
         );
         ?>
         </noindex>
      </div>
      <?
   }
   ?>
</div>
 
Код
div.propreties {
   background-color: #628208;
   white-space: nowrap;
   display: inline-block;
   padding: 5px;
   margin: 0px;
   color: #fff;
}

div.1 {
   white-space: nowrap;
}
 
[img]Z:\!Ксюша\bitrix[/img]
Михаил Базаров 24.12.2016
Цитата
Александр Спиридонов написал:
Здравствуйте.
Огромное спасибо Вам за Ваши уроки!
У меня в оформлении свойств Акций возникли проблемы.
Добавил в акции 2 свойства: "действует с" и "действует по". Тип обоих свойств - ДАТА.

В template взял отображение названия свойства и значение свойства в <div class="propreties">

в style.css , чтобы оба свойства были в одну строку установил display: inline-block;
и задумал, что свойства будут на зеленом фоне.
НО! между свойствами пробел и фон видно что не единый.
Как это исправить?  

Создавал родительский div над свойствами и устанавливал там white-space: nowrap;

Но это не помогло.
Код
 <div class="1">
      <?foreach($arResult["FIELDS"] as $code=>$value):
      if ('PREVIEW_PICTURE' == $code || 'DETAIL_PICTURE' == $code)
      {
         ?><?=GetMessage("IBLOCK_FIELD_".$code)?>: <?
         if (!empty($value) && is_array($value))
         {
            ?><img border="0" src="<?=$value["SRC"]?>" width="<?=$value["WIDTH"]?>" height="<?=$value["HEIGHT"]?>"><?
         }
      }
      else
      {
         ?><?=GetMessage("IBLOCK_FIELD_".$code)?>: <?=$value;?><?
      }
      ?><br />
   <?endforeach;

   foreach($arResult["DISPLAY_PROPERTIES"] as $pid=>$arProperty):?>

      <div class="propreties"><?=$arProperty["NAME"]?>
      <b><?if(is_array($arProperty["DISPLAY_VALUE"])):?>
         <?=implode(" / ", $arProperty["DISPLAY_VALUE"]);?>
      <?else:?>
         <?=$arProperty["DISPLAY_VALUE"];?>
      <?endif?></b></div>
   <?endforeach;

   if(array_key_exists("USE_SHARE", $arParams) && $arParams["USE_SHARE"] == "Y")
   {
      ?>
      <div class="news-detail-share">
         <noindex>
         <?
         $APPLICATION->IncludeComponent("bitrix:main.share", "", array(
               "HANDLERS" => $arParams["SHARE_HANDLERS"],
               "PAGE_URL" => $arResult["~DETAIL_PAGE_URL"],
               "PAGE_TITLE" => $arResult["~NAME"],
               "SHORTEN_URL_LOGIN" => $arParams["SHARE_SHORTEN_URL_LOGIN"],
               "SHORTEN_URL_KEY" => $arParams["SHARE_SHORTEN_URL_KEY"],
               "HIDE" => $arParams["SHARE_HIDE"],
            ),
            $component,
            array("HIDE_ICONS" => "Y")
         );
         ?>
         </noindex>
      </div>
      <?
   }
   ?>
</div>
  
Код
 div.propreties {
   background-color: #628208;
   white-space: nowrap;
   display: inline-block;
   padding: 5px;
   margin: 0px;
   color: #fff;
}

div.1 {
   white-space: nowrap;
}
  
[img]file:///Z:/!%D0%9A%D1%81%D1%8E%D1%88%D0%B0/bitrix[/img]
Это нормальное поведение для inline-block; между элементами небольшой отстпуп (ведут себя как элементы с текстом)
Нужно либо задать font-size:0px; а внутри еще один блок с нормальным размером шрифта
Либо использовать float:left; что более просто и точки зрения HTML и в принципе поправильнее
Александр Спиридонов 24.12.2016
Цитата
Михаил Базаров пишет:
Это нормальное поведение для inline-block; между элементами небольшой отступ (ведут себя как элементы с текстом)
Нужно либо задать font-size:0px; а внутри еще один блок с нормальным размером шрифта
Либо использовать float:left; что более просто и точки зрения HTML и в принципе правильнее
Все гениальное просто! Спасибо!
Блин... реально так просто....! Класс!
Nart Basariya 26.03.2018
Создал инфоблок. У меня не указаны две главные строки
1. Начало-Пред-След-Конеч-Всё
2. Услуги 1-20 из 0
Что делать ? Спасибо !
valia9889@gmail.com 17.09.2019
Спасибо за полезную инфу