Перейти к публикации
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: знать бы куда его вставлять в настройках. Когда регистрировался такого не запрашивалось.

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

Опубликовано:

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

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

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

Опубликовано:

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

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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

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.