Как вывести заглушку в виджете «список контента»?

#1 1 августа 2016 в 11:30
Есть типа контента «board» и там если не вставлено фото, то выводится по умолчанию вот такая заглушка «nophoto.png».


Есть виджет «список контента», который выводит последние опубликованные объявления из типа контента «board». Если к объявлению не загружено фото, то он ничего не выводит, т.е. заглушки нет. Если в виджете выводить по 10 объявлений, где в одних есть фото, а в других нет, то выглядит оно криво. Единственный выход поставить заглушку.

ВОПРОС: Как вывести заглушку в виджете «список контента»?
#2 1 августа 2016 в 13:03

Вроде нигде не ошибся...

Дмитрий Кайдаш
Это где нужно вставить, в каком документе и в каком месте?
#3 1 августа 2016 в 19:23
Вот так работает, только поменяйте в строках 9 и 25 путь к файлу картинки-заглушки. Это полный код файла templates/default/controllers/content/widgets/list/list_compact.tpl.php

  1. <?php if ($items){ ?>
  2.  
  3. <div class="widget_content_list compact">
  4. <?php foreach($items as $item) { ?>
  5.  
  6. <?php
  7. $url = href_to($ctype['name'], $item['slug']) . '.html';
  8. $is_private = $item['is_private'] && $hide_except_title && !$item['user']['is_friend'];
  9. $image = (($image_field && !empty($item[$image_field]))) ? $item[$image_field] : "background-image:url('/upload/default/avatar_micro.png')";
  10. if ($is_private) {
  11. if($image_field && !empty($item[$image_field])){
  12. $image = default_images('private', 'micro');
  13. }
  14. $url = '';
  15. }
  16. ?>
  17.  
  18. <div class="item">
  19. <?php if ($image) { ?>
  20. <div class="image">
  21. <?php if ($url) { ?>
  22. <?php if (!empty($item[$image_field])) { ?>
  23. <a style="background-image:url('<?php echo html_image_src($item[$image_field], 'micro', true); ?>')" href="<?php echo $url; ?>"></a>
  24. <?php } else { ?>
  25. <a style="background-image:url('/upload/default/avatar_micro.png')" href="<?php echo $url; ?>"></a>
  26. <?php } ?>
  27.  
  28.  
  29. <?php } else { ?>
  30. <div class="imgc" style="background-image:url('upload/<?php echo html_image_src($image, 'micro'); ?>')"></div>
  31. <?php } ?>
  32. </div>
  33. <?php } ?>
  34. <div class="info">
  35. <div class="title">
  36. <?php if ($url) { ?>
  37. <a href="<?php echo $url; ?>"><?php html($item['title']); ?></a>
  38. <?php } else { ?>
  39. <?php html($item['title']); ?>
  40. <?php } ?>
  41. <?php if ($item['is_private']) { ?>
  42. <span class="is_private" title="<?php html(LANG_PRIVACY_PRIVATE_HINT); ?>"></span>
  43. <?php } ?>
  44. </div>
  45. </div>
  46. </div>
  47.  
  48. <?php } ?>
  49. </div>
  50.  
  51. <?php } ?>
Возможно, можно было как-то проще это сделать, но у меня не получилось, потому что я не знаю php.

Нужно будет еще в css дописать несколько строк, чтобы выводилось нормально:

  1. .compact .image a, .compact .imgc{
  2. display:block;
  3. width:32px;
  4. height:32px;
  5. float:left;
  6. }
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.