Перейти к содержимому
Русский язык для Invision Community 5

Аватар пользователя рядом с названием темы

Обширный вопрос.

Сделал по гайду:

 

Шаблон, отвечающий за отображение списка тем называется forumIndexTemplate и находится в разделе Forum View. Открываем его и находим следующий участок кода:

<th scope='col' class='col_f_icon'> </th>

 

Ниже этого участка вставляем:

<th scope='col' class='col_f_avatar'> </th>

 

 

Это заголовок нашего будущего столбца с аватарами. Теперь нужно организовать сам вывод аватаров - находим:

<td class='short altrow'>{parse replacement="{$data['folder_img']}"}</td>

 

Ниже вставляем:

<!-- (CSN) Avatar TS -->
<php>
$csn_NoAvatar = "<img src='{$this->settings['img_url']}/profile/default_thumb.png' alt='avatar'/>";
$csn_MemberTS = IPSMember::load( $data['starter_id'], 'core,extendedProfile' );
if ( $csn_MemberTS['avatar_location'] == "" ) {
       $csn_MemberAvatar = $csn_NoAvatar;
} else {
       $csn_MemberAvatar = IPSMember::buildAvatar( $csn_MemberTS, 0, 1 );
}
</php>
<td class='short altrow'><div class='csn_TopicAvatar'>{$csn_MemberAvatar}</div></td>
<!-- / (CSN) Avatar TS -->


[codetext]$csn_NoAvatar[/codetext] - вывод аватара-шаблона на тот случай, если у пользователя отсутствует аватар. Поэтому путь можно поменять на свой.

Теперь пришло время добавить классы в ipb_styles.css. Открываем его и в самый низ добавляем:
th.col_f_avatar{ width: 3%; }
div.csn_TopicAvatar img{
       width: 36px; /* размер аватара в списке тем */
       height: auto;
       background: #fff; /* фон за аватаром */
       -moz-border-radius: 4px;
       -webkit-border-radius: 4px;
       border-radius: 4px;
       padding: 2px;
}

 

И такой вопрос:

1. Аватары отображаются левее иконок тем (прочтено, есть ответы, закрыта и проч) как сделать их в самом левом столбце? т.е. чтобы иконки тем были правее аватаров?

2. Тот же вопрос но с возможностью помещать аватары справа от автора темы.

3. Сложно ли сделать их кликабельными? (ведущими на профиль топикстартера?)

 

Благодарю.

 

upd: to_bot: знать бы куда его вставлять в настройках. Когда регистрировался такого не запрашивалось.

Рекомендованные сообщения

Кто автор инструкции?

Пробовали обратиться к нему? Потому что спрашивать тех, кто это не использует, бесполезно.

Я не использую и не планирую этого делать, так как считаю это лишним, поэтому Ваших проблем не понимаю.

Кто автор инструкции?

Tails

 

upd: to_bot: знать бы куда его вставлять в настройках

http://ipbskins.ru/forum/index.php?app=core&module=usercp&tab=members

 

Обширный вопрос.

Сделал по гайду:

У вас форум слишком быстро грузится?

Этот метод IPSMember::load даст столько запросов, сколько тем будет на странице. Лучше тогда оформить под хуком и обойтись одним запросом.

 

1. Хук

class sx_hook extends skin_форум(~id~)
{
function форумИндексТемплате( $var1, $var2, и тд )
{
	//хардкодим, получаем аватары пользователей с $var1

	//снова хардкодим, впихиваем обратно в $var1

	return parent::форумИндексТемплате( $var1, $var2, и тд );
}
}

2. Делаем правку шаблона

3. Профит!!!

  • Автор

Этот метод IPSMember::load даст столько запросов, сколько тем будет на странице. Лучше тогда оформить под хуком и обойтись одним запросом.

 

Слишком сложно для моего скила. Сам по себе форум локальный и не держит на себе сотни посещений, так что можно позволить лишние запросы к БД.

К слову, это чревато только скоростью загрузки страницы или чем-то более ужасным?

 

upd: Значит 'на глазок' не получиться определить как поменять иконку темы и аватар местами?

Этот метод IPSMember::load даст столько запросов, сколько тем будет на странице

Угу. Но решение тиражируют налево и направо.

 

Значит 'на глазок' не получиться определить как поменять иконку темы и аватар местами?

Этот кусок

<th scope='col' class='col_f_avatar'> </th>

Не пробовали вставить не под, а на :)

  • Автор
Не пробовали вставить не под, а над

Пробывал - совершенно ничего не изменилось. зато если вставлять еще ниже (после столбцов названия темы, даты) сам столбец расширяется.

 

К слову, визуально они будто считаются за один столбец (по крайней мере 'зебра' их красит одним цветом)

Хотя такой фон мне выгоден и не хотелось бы менять это отображение.

post-46113-0-70580600-1317045471_thumb.png

 

Та самая часть - столбцы списка тем.

<tr class='header'>
			<th scope='col' class='col_f_icon'> </th>
			<th scope='col' class='col_f_avatar'> </th>
			<th scope='col' class='col_f_topic'>{$this->lang->words['forum_topic']}</th>
			<th scope='col' class='col_f_starter short'>{$this->lang->words['forum_started_by']}</th>
			<th scope='col' class='col_f_views stats'>{$this->lang->words['forum_stats']}</th>
			<th scope='col' class='col_f_post'>{$this->lang->words['forum_last_post_info']}</th>
			<if test="topicsismod:|:$this->memberData['is_mod'] == 1">
				<th scope='col' class='col_f_mod short'><input type='checkbox' id='tmod_all' class='input_check' title='{$this->lang->words['topic_select_all']}' value='1' /></th>
			</if>
		</tr>	

Изменено пользователем евгеш

К слову, визуально они будто считаются за один столбец

Как одна строка. А у строки бывают и столбцы. Но не важно

 

1. Я тормоз. И не читаю текст до конца

 

2.

<!-- (CSN) Avatar TS -->
Код
<!-- / (CSN) Avatar TS -->

Естественно тоже выше.

  • Автор

Сильно тугой в этих делах, уточню:

Кроме кода:

<th scope='col' class='col_f_avatar'> </th>

Который стоит попробывать вставить выше:

<th scope='col' class='col_f_icon'> </th>

а не ниже.

 

Нужно еще и:

<!-- (CSN) Avatar TS -->
код
<!-- / (CSN) Avatar TS -->

вставить выше:

<td class='short altrow'>{parse replacement="{$data['folder_img']}"}</td>

А не ниже?

  • Автор

upd: Огромное спасибо, слегка подрихтовал и очередность размещения помогла!

Этот метод IPSMember::load даст столько запросов, сколько тем будет на странице. Лучше тогда оформить под хуком и обойтись одним запросом.

А можно поподробней написать как это сделать?

Если у кого-то есть какие-то пожелания/замечания, идеи как оптимизировать код, пусть оставит тут. Потом соберу полную инструкцию и добавлю в файловый архив.

 

Хук.

av_hook.xml

 

Остальное по старой инструкции, только это

<!-- (CSN) Avatar TS -->
<php>
$csn_NoAvatar = "<img src='{$this->settings['img_url']}/profile/default_thumb.png' alt='avatar'/>";
$csn_MemberTS = IPSMember::load( $data['starter_id'], 'core,extendedProfile' );
if ( $csn_MemberTS['avatar_location'] == "" ) {
       $csn_MemberAvatar = $csn_NoAvatar;
} else {
       $csn_MemberAvatar = IPSMember::buildAvatar( $csn_MemberTS, 0, 1 );
}
</php>
<td class='short altrow'><div class='csn_TopicAvatar'>{$csn_MemberAvatar}</div></td>
<!-- / (CSN) Avatar TS -->

 

заменить этим

<td class='short altrow'><div class='csn_TopicAvatar'>{$data['avatar_location']}</div></td>

Хук.

Спасибо Большое Человеческое, всё получилось :)

 

 

идеи как оптимизировать код, пусть оставит тут

Да и так всё работает, правда у меня немного другое дополнение (мини-аватары затенёные, если нет новых сообщений) :

 

Шаблон forumIndexTemplate:

<td class='short altrow'><div class='t_avatar <if test="$data['go_new_post'] === false">no-new</if>'><span>{$data['avatar_location']}</span></div></td>

 

Стиль ipb_styles.css:

.t_avatar {width: 24px;height: 24px;overflow: hidden;position: relative;background: url(/grafik/t_noavatar.png) no-repeat 1px 0px;box-shadow: rgba(0, 0, 0, 0.18) 0px 1px 1px;border-width: 1px;border-style: solid;border-radius: 4px;-moz-border-radius: 4px}
.t_avatar.no-new {opacity: 0.3;filter: alpha(opacity=20);}
.t_avatar img.frame {position: absolute;top: 0;left: 0;z-index: 100;}
.t_avatar span {display: block;width: 24px;height: 24px;position: absolute;top: 0px;left: 1px;overflow: hidden;z-index: 99;}
.t_avatar span img {width: 24px;height: 24px;}

  • 10 месяцев спустя...

Спасибо !!!

Все работает...

Подскажите, а как сделать что бы аватары выводились и в результатах поиска новых сообщений за день....

Выводится только имя файла...и все...

  • 2 года спустя...

Аватары пользователей на главной страницы форума (IPB 3.1x)

 

1. Установить хук

Аватары на главной.xml

 

2. Внешний вид -> %нужный шаблон% -> Список форумов -> boardIndexTemplate

Найти

 

<ul class='last_post'>

Добавить перед (или в другом нужно вам месте)

 

<span class="boardAvatar">
    {$forum_data['avatar_location']}
</span>

В css задать нужные стили для контейнера .boardAvatar

Чёто не срабатывает - пустое место там где должны быть аватары.

      <hook_data><![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:10:"skin_boards";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]></hook_data>

s:10:"skin_boards";

должно быть s:11:"skin_boards";

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.