Jump to content
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

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

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

 

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

Featured Replies

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

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

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

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

 

1. Хук

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

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

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

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

3. Профит!!!

  • Author

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

 

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

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

 

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

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

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

 

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

Этот кусок

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

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

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

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

 

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

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

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 евгеш

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

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

 

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

 

2.

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

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

  • Author

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

Кроме кода:

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

А не ниже?

  • Author

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 months later...

Спасибо !!!

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

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

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

  • 2 years later...

Аватары пользователей на главной страницы форума (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";

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.