Аватар как картинка для привлечения внимания

#1 29 августа 2018 в 11:21
Вроде когда то видел такую тему но могу ошибаться, сейчас не находится. Может кто подскажет как найти —

задача — когда автор поста не скидывает картинку для привлечения внимания, сделать этой картинкой аватар автора. Собственно где это прописывается и как в теории должно быть не сложно?
#2 29 августа 2018 в 11:37
Были темы про вывод "заглушки", но про аватар не было, хотя сути это не меняет.
Не пробовал, но из примера по ссылке надо заменить в условии "иначе": вместо "<img src="путь к заглушке">" этот код
  1. <?php echo html_avatar_image($item['user']['avatar'], 'normal');?>
где normal — нужный пресет аватара.
#3 29 августа 2018 в 13:28
У меня это работает больше года, но только в виджете.
Файл \templates\default\controllers\content\widgets\list\list_basic.tpl.php целиком:
  1. <?php if ($items){ ?>
  2.  
  3. <div class="widget_content_list">
  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] : '');
  10. if ($is_private) {
  11. if($image_field && !empty($item[$image_field])){
  12. $image = default_images('private', 'small');
  13. }
  14. $url = '';
  15. }
  16. ?>
  17.  
  18. <div class="item">
  19. <?php if ($image) { ?>
  20. <div class="image">
  21. <?php if ($url) { ?>
  22. <a href="<?php echo $url; ?>"><?php echo html_image($image, 'small', $item['title']); ?></a>
  23. <?php } else { ?>
  24. <?php echo html_image($image, 'small', $item['title']); ?>
  25. <?php } ?>
  26. </div>
  27. <?php } else { ?>
  28. <!-- Нет картинки - выводим аватар автора Ris 01.06.2017 --->
  29. <div class="image">
  30. <?php if ($url) { ?>
  31. <a href="<?php echo $url; ?>"><?php $us = cmsCore::getModel('users')->getUser($item['user']['id']);
  32. echo html_avatar_image($us['avatar'], 'small', $item['user']['nickname']); ?></a>
  33. <?php } else { ?>
  34. <?php html_avatar_image($us['avatar'], 'small', $item['user']['nickname']); ?>
  35. <?php } ?>
  36. </div>
  37. <?php } ?>
  38. <!------------------------------------------------------------>
  39.  
  40. <div class="info">
  41. <div class="title">
  42. <?php if ($url) { ?>
  43. <a href="<?php echo $url; ?>"><?php html($item['title']); ?></a>
  44. <?php } else { ?>
  45. <?php html($item['title']); ?>
  46. <?php } ?>
  47. <?php if ($item['is_private'] || $item['is_parent_hidden'] != NULL /*Изображение глаза Racoon 27.07.2017*/) { ?>
  48. <span class="is_private" title="<?php html(LANG_PRIVACY_HINT); ?>"></span>
  49. <?php } ?>
  50. </div>
  51. <?php if ($teaser_field && !empty($item[$teaser_field])) { ?>
  52. <div class="teaser">
  53. <?php if (!$is_private) { ?>
  54. <?php echo string_short($item[$teaser_field], $teaser_len); ?>
  55. <?php } else { ?>
  56. <!--noindex--><div class="private_field_hint"><?php echo LANG_PRIVACY_PRIVATE_HINT; ?></div><!--/noindex-->
  57. <?php } ?>
  58. </div>
  59. <?php } ?>
  60. <?php if ($is_show_details) { ?>
  61. <div class="details">
  62. <span class="author">
  63. <a href="<?php echo href_to('users', $item['user']['id']); ?>"><?php html($item['user']['nickname']); ?></a>
  64. <?php if ($item['parent_id']){ ?>
  65. <?php echo LANG_WROTE_IN_GROUP; ?>
  66. <a href="<?php echo rel_to_href($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  67. <?php } ?>
  68. </span>
  69. <span class="date">
  70. <?php html(string_date_age_max($item['date_pub'], true)); ?>
  71. </span>
  72. <?php if($ctype['is_comments']){ ?>
  73. <span class="comments">
  74. <?php if ($url) { ?>
  75. <a href="<?php echo $url . '#comments'; ?>" title="<?php echo LANG_COMMENTS; ?>">
  76. <?php echo intval($item['comments']); ?>
  77. </a>
  78. <?php } else { ?>
  79. <?php echo intval($item['comments']); ?>
  80. <?php } ?>
  81. </span>
  82. <?php } ?>
  83. </div>
  84. <?php } ?>
  85. </div>
  86. </div>
  87.  
  88. <?php } ?>
  89. </div>
  90.  
  91. <?php } ?>
#4 1 сентября 2018 в 09:52
Спасибо помогло разобраться. проблема решена :)
#5 1 сентября 2018 в 10:43
@demelkar,
Я тут разработал еще более извращенный способ замены картинки на аватар.
Делается такой хук:
  1. <?php
  2.  
  3. class onContentContentPostsBeforeList extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. list($ctype, $items) = $data;
  8.  
  9. foreach ($items as $item){
  10.  
  11. if(!$item['picture']){
  12. $item['picture'] = $item['user_avatar'];
  13. }
  14.  
  15. $newitems[] = $item;
  16. }
  17.  
  18. return array($ctype, $newitems);
  19.  
  20. }
  21.  
  22. }
И он при отсутствии картинки вставляет аватар. И не надо курочить файлы шаблона.
#6 15 октября 2018 в 14:00
А если просто поле картинки для привлечения внимания сделать обязательным?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.