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

Как сделать картинку в каталоге у товара, когда не добавлял товару изображение???

00 голосов
6
Т.е например чтобы везде вылазила картинка 150х150px с надписью нет фото
спросил 13 Март, 13 от MYP3uK (160 баллов)

6 Ответы

00 голосов
В шаблоне проверяйте, есть ли картинка у товара. Если нет, то выводите картинку "Нет товара". Посмотрите по форуму - уже не один раз такая тема проходила.
ответил 13 Март, 13 от sickmind (4,660 баллов)
00 голосов
ИМХО самый правильный способ будет использовать result_modifier.php, тогда можно не заморачиваться с изменением шаблона. Например добавление картинки-заглушки для компонента catalog.section выглядит:
Код
<?
 foreach($arResult["ITEMS"] as $key=>$arItem):
  if (!is_array($arItem["PREVIEW_PICTURE"])):
  $arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["SRC"]=SITE_TEMPLATE_PATH."/img/nofoto.png";
  $arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["HEIGHT"]=150;
  $arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["WIDTH"]=150;  
  endif;
 endforeach;
 
?>
ответил 17 Март, 13 от Oggi (520 баллов)
00 голосов
ответил 27 Май, 13 от EDKA (980 баллов)
00 голосов
Цитата
Николай Платонов пишет:
ИМХО самый правильный способ будет использовать result_modifier.php, тогда можно не заморачиваться с изменением шаблона. Например добавление картинки-заглушки для компонента catalog.section выглядит:
Код
<?
 foreach($arResult["ITEMS"] as $key=>$arItem):
&nbsp;&nbsp;if (!is_array($arItem["PREVIEW_PICTURE"])):
&nbsp;&nbsp;$arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["SRC"]=SITE_TEMPLATE_PATH."/img/nofoto.png";
&nbsp;&nbsp;$arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["HEIGHT"]=150;
&nbsp;&nbsp;$arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["WIDTH"]=150;&nbsp;&nbsp;
&nbsp;&nbsp;endif;
 endforeach;
 
?>


А можно поподробней куда именно вставить???
Я скопировал компонент каталога, захожу в шаблон в этот компонент catalog\catalog_cto\bitrix\catalog.section\list\result_modifire.php, только по этому пути нашел файл result_modifire.php

Он содержит код:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
//Make all properties present in order
//to prevent html table corruption
foreach($arResult["ITEMS"] as $key => $arElement)
{
   $arRes = array();
   foreach($arParams["PROPERTY_CODE"] as $pid)
   {
      $arRes[$pid] = CIBlockFormatProperties::GetDisplayValue($arElement, $arElement["PROPERTIES"][$pid], "catalog_out");
   }
   $arResult["ITEMS"][$key]["DISPLAY_PROPERTIES"] = $arRes;
}
?>


я его модифицирую и он выглядит так:

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
//Make all properties present in order
//to prevent html table corruption
foreach($arResult["ITEMS"] as $key => $arElement)
{
   $arRes = array();
   foreach($arParams["PROPERTY_CODE"] as $pid)
   {
      $arRes[$pid] = CIBlockFormatProperties::GetDisplayValue($arElement, $arElement["PROPERTIES"][$pid], "catalog_out");
   }
   $arResult["ITEMS"][$key]["DISPLAY_PROPERTIES"] = $arRes;
}
?>

<? 
 foreach($arResult["ITEMS"] as $key=>$arItem): 
  if (!is_array($arItem["PREVIEW_PICTURE"])): 
  $arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["SRC"]=SITE_TEMPLATE_PATH."/images/nofoto.png"; 
  $arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["HEIGHT"]=150; 
  $arResult["ITEMS"][$key]["PREVIEW_PICTURE"]["WIDTH"]=150;   
  endif; 
 endforeach; 

?>


Но все равно не выводится картинка nofoto.png
ответил 23 Авг, 13 от MYP3uK (160 баллов)
00 голосов
Цитата
Николай Платонов пишет:
ИМХО самый правильный способ будет использовать result_modifier.php, тогда можно не заморачиваться с изменением шаблона


А я не заморачивалась с результ-модиферами всякими, а прямо в шаблоне и написала небольшую проверку:
Код
<?if ($arElement["PREVIEW_PICTURE"]["SRC"]==''):?>
                       <a href="<?=$arElement["DETAIL_PAGE_URL"]?>"><img border="0" src="<?=SITE_TEMPLATE_PATH?>/images/defaul-small.jpg" width="200px" height="150px" alt="<?=$arElement["PREVIEW_TEXT"]?>" title="<?=$arElement["PREVIEW_TEXT"]?>" /></a>
                       <?endif?>


здесь шаблон компонента - элементы раздела, для детального просмотра немножко другая проверка должна быть - т.е. проверка та же, только переменные другие.

НО так делать - это не очень правильно! Когда я писала эту проверку, я абсолютно не знала, что есть более простой и человекопонятный способ (указан выше, мерси Николай Платонов)


P.s. И вообще, ну сколько можно для этой и других мелочей подобного рода использовать напильник? почему в админке, в настройках модуля каталога, например, нету возможности указать дефолтную картинку? такая очевидная вещь и непредусмотренна... Вообще чем дальше в лес, тем больше чисто философских вопросов.
ответил 22 Ноя, 13 от Texnik (1,860 баллов)
00 голосов
Кто нибудь все таки может дать внятный ответ какой код и где разместить?
ответил 03 Март, 14 от FeRaLaS (100 баллов)

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

0 голосов
6 ответов
спросил 27 Сен, 13 от Homer (220 баллов)
0 голосов
8 ответов
0 голосов
9 ответов
0 голосов
3 ответов