Как вставить аватар автора в виджет?

#1 18 июля 2016 в 12:34
Всем привет.

Пытаюсь сделать шаблон. Но, как говорится, чем дальше в лес, тем веселее smile

В общем, сейчас столкнулся с новой проблемой. При попытке вставить аватар автора в виджет списка контента, отображается картинка дефолтного аватара:

Код такой:

  1. <span class="author">
  2. <a href="<?php echo href_to('users', $item['user']['id']); ?>" style="background:url('<?php echo html_avatar_image_src($autor['avatar'], 'small'); ?>')"></a>
  3. <?php if ($item['parent_id']){ ?>
  4. <?php echo LANG_WROTE_IN_GROUP; ?>
  5. <a href="<?php echo href_to($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  6. <?php } ?>
  7. </span>
Вопрос: как вывести в виджете нормальный аватар?

И, если знаете, подскажите, как вывести текстовый аватар, если не загружен свой?
Спасибо.
#2 21 июля 2016 в 11:03
а вы массив $autor['avatar'] проверили есть ли там что-нибудь?
#3 21 июля 2016 в 11:42

проверили?

AbdullaAlt
Я бы проверил, если бы знал, как это делать smileЯ не знаю php, в этом вся проблема.
#4 21 июля 2016 в 12:30
Дмитрий Кайдаш, ну самое простое напишите скажем после <span class="author"> <?php print_r($autor); ?> и посмотрите в выводе есть ли в нем что-нибудь или нет
#5 21 июля 2016 в 12:43
На примере виджета \system\controllers\content\widgets\list
Откройте файл:widget.php
Найдите строки:
  1.  
  2. $items = $model->
  3. limit($limit)->
  4. getContentItems($ctype['name']);
  5.  
Замените на:
  1.  
  2. $items = $model->
  3. select('u.avatar', 'user_avatar')->
  4. limit($limit)->
  5. getContentItems($ctype['name']);
  6.  
Выводим в шаблоне:
  1.  
  2. <span class="author">
  3. <a href="<?php echo href_to('users', $item['user']['id']); ?>" style="background:url('<?php echo html_avatar_image_src($item['user_avatar'], 'small'); ?>')"></a>
  4. <?php if ($item['parent_id']){ ?>
  5. <?php echo LANG_WROTE_IN_GROUP; ?>
  6. <a href="<?php echo href_to($item['parent_url']); ?>"><?php html($item['parent_title']); ?></a>
  7. <?php } ?>
  8. </span>
  9.  
Если нужно вывести изображением а не фоном:
  1. <?php echo html_avatar_image($item['user_avatar'], 'small'); ?>
#6 21 июля 2016 в 13:17
Денис Васильевич, спасибо, работает так. Не хотелось, правда, в системные файлы лезть, но раз без этого никак, то пусть так.

Может быть Вы знаете, как вместо дефолтного аватара в случае отсутствия своего вывести текстовый в этом месте?

Спасибо.
#7 21 июля 2016 в 15:17


Может быть Вы знаете, как вместо дефолтного аватара в случае отсутствия своего вывести текстовый в этом месте?

Дмитрий Кайдаш

Я даже не знаю что за этакое ;)

п.с.
Вы правите шаблон а это, в общем-то тоже системный файл и при обновлении он так же может быть заменён новым файлом.
Сделайте копию виджета и правьте его по своему усмотрение, запросы к базе всё равно придётся выполнять.
#8 21 июля 2016 в 17:08

не знаю что за

Денис Васильевич
В версии 2.5.1 такая опция появилась — если аватар пользователем не загружен, то выводится первая буква его ника на цветном фоне:


правите шаблон…
файл… при обновлении… может быть заменён

Денис Васильевич

Я не правлю шаблон, а делаю с нуля.
#9 21 июля 2016 в 19:50

В версии 2.5.1 такая опция появилась — если аватар пользователем не загружен, то выводится первая буква его ника на цветном фоне:


не понял. где такую функцию включить? у меня 2.5.1 аватары стандартные
#11 21 июля 2016 в 22:31


где такую функцию включить?

SE7EN
здесь — instantcms.ru/novosti/release250.html#comment_90345

Дмитрий Кайдаш

Ну так вроде бы там же и ответ имеется. Включаете и выводите через html_avatar_image.
#12 21 июля 2016 в 22:48

Включаете и выводите через html_avatar_image

Денис Васильевич
Да, как-то так)) У меня включена эта опция, в виджетах Онлайн, Пользователи, Аватар, в профиле выводится именно так. А Ваш способ выводит картинку noimage. Вот я и спросил поэтому.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.