Изображения заглушки для каждой категории

#1 9 июля 2016 в 23:36
Инстант 2.5.1.
Как организовать автоматический вывод изображения-заглушки для каждой категории при сохранении статьи если отсутствует основное изображение?
Наверно многие сталкивались с ситуацией когда есть статья, но нет к ней изображения. та же ситуация при парсинге статей без изображений!
В результате список получает дырку вместо изображения, что достаточно не красиво.
Вот для таких случаев необходимо вставлять какую то картинку-заглушку и лучше всего, чтобы для каждой категории была своя заглушка.
#2 10 июля 2016 в 16:07
Если я вас правильно понял, в необходимые файлы списка контента ..\templates\default\content\default_list.tpl.php (default_list_featured.tpl.php, default_list_tiles.tpl.php и др.)
добавьте перед кодом
  1. <?php if (isset($fields['photo']) && $fields['photo']['is_in_list'] && !empty($item['photo'])){ ?>
  2. <div class="photo">
  3. <?php if ($is_private) { ?>
  4. <?php echo html_image(default_images('private', $size), $size, $item['title']); ?>
  5. <?php } else { ?>
  6. <a href="<?php echo href_to($ctype['name'], $item['slug'].'.html'); ?>">
  7. <?php echo html_image($item['photo'], $size, $item['title']); ?>
  8. </a>
  9. <?php } ?>
  10. <?php unset($item['photo']); ?>
  11. </div>
  12. <?php } ?>
строки:
  1. <?php if (empty($item['photo'])){
  2. $item['photo'] = array(
  3. 'micro' => 'path/to/micro-picture.jpg',
  4. 'small' => 'path/to/small-picture.jpg',
  5. 'normal' => 'path/to/normal-picture.jpg',
  6. 'big' => 'path/to/big-picture.jpg'
  7. );
  8. } ?>
Укажите вместо 'path/to/picture.jpg' путь к изображениям в папке upload.

В результате список получает дырку вместо изображения, что достаточно не красиво.

vikont
А так список получает "мусорную" картинку, что достаточно не информативно! Если изображение не несет в себе полезную информацию (как например с заглушкой) то его не должно быть! А красота настраивается через CSS. И да, красота это когда нет ничего лишнего 😉
#3 10 июля 2016 в 17:33

Если изображение не несет в себе полезную информацию (как например с заглушкой) то его не должно быть!

Val
Категорически с вами согласен! Поэтому изображение-заглушка должны быть достаточно информативны, а не блеклая картинка и быть достаточно редкими.

В вашем примере не понял как изображения-заглушки распределяются по категориям! Судя по коду это просто заглушка для всего Типа контента. Или я ошибаюсь?
#4 10 июля 2016 в 21:06

В вашем примере не понял как изображения-заглушки распределяются по категориям! Судя по коду это просто заглушка для всего Типа контента.

vikont
Да для всего типа контента. Для разделения по категориям можно добавить доп.условие:
  1. <?php if (empty($item['photo'])){
  2. if ($item['category_id']==1) {
  3. $item['photo'] = array(
  4. 'micro' => 'path/to/micro-picture-4-category_1.jpg',
  5. 'small' => 'path/to/small-picture-4-category_1.jpg',
  6. 'normal' => 'path/to/normal-picture-4-category_1.jpg',
  7. 'big' => 'path/to/big-picture-4-category_1.jpg'
  8. );
  9. }
  10. elseif ($item['category_id']==2) {
  11. $item['photo'] = array(
  12. 'micro' => 'path/to/micro-picture-4-category_2.jpg',
  13. 'small' => 'path/to/small-picture-4-category_2.jpg',
  14. 'normal' => 'path/to/normal-picture-4-category_2.jpg',
  15. 'big' => 'path/to/big-picture-4-category_2.jpg'
  16. );
  17. }
  18. elseif ($item['category_id']==3) {
  19. // ...
  20. }
  21. else {
  22. $item['photo'] = array(
  23. 'micro' => 'path/to/micro-picture.jpg',
  24. 'small' => 'path/to/small-picture.jpg',
  25. 'normal' => 'path/to/normal-picture.jpg',
  26. 'big' => 'path/to/big-picture.jpg'
  27. );
  28. }
  29. } ?>
Но если у вас 100500 категорий, то код будет выглядеть страшно laughМожно, как вариант id категории засунуть в название картинки и уже так ее выбирать:
  1.  
  2. $item['photo'] = array(
  3. 'micro' => 'path/to/micro-picture-' . $item['category_id'] . '.jpg',
  4. 'small' => 'path/to/small-picture-' . $item['category_id'] . '.jpg',
  5. 'normal' => 'path/to/normal-picture-' . $item['category_id'] . '.jpg',
  6. 'big' => "path/to/big-picture-{$item['category_id']}.jpg" // другой вариант записи =)
  7. );
  8.  

Поэтому изображение-заглушка должны быть достаточно информативны

vikont
Интересно как вы это представляете?!
#5 10 июля 2016 в 21:17
ИМХО: полями проще и удобнее
#6 10 июля 2016 в 21:30
либо сделать некое доп.поле в админке в категориях, где и задавать эти данные
#7 10 июля 2016 в 21:54

Но если у вас 100500 категорий, то код будет выглядеть страшно Можно, как вариант id категории засунуть в название картинки и уже так ее выбирать:

Val
Ну что вы! Я же не суперкомпьютер laughТолько с десяток категорий.
Код действительно становится все страшнее… Но все равно Спасибо!
#8 10 июля 2016 в 21:55

ИМХО: полями проще и удобнее

Олег Васильевич я
Если поделитесь как это сделать, с удовольствием воспользуюсь более простым и гениальным вариантом.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.