Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
евгеш

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

Recommended Posts

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

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

 

Шаблон, отвечающий за отображение списка тем называется 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: знать бы куда его вставлять в настройках. Когда регистрировался такого не запрашивалось.

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Tails

 

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

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

 

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

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

 

1. Хук

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

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

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

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

3. Профит!!!

  • Upvote 2

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

 

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

Этот кусок

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites
Не пробовали вставить не под, а над

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

 

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

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

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>	

Edited by евгеш

Share this post


Link to post
Share on other sites

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

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

 

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

 

2.

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Кроме кода:

<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>

А не ниже?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

Хук.

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>

  • Upvote 3

Share this post


Link to post
Share on other sites

Хук.

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

 

 

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

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

 

Шаблон 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;}

  • Upvote 1

Share this post


Link to post
Share on other sites

Спасибо !!!

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

Найти

 

<ul class='last_post'>

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

 

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...