Перейти к публикации
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.

Правые блоки в темах

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

Здравствуйте. Версия форума 3.4.9 + Content. Немного кастумизируем форум и появилась необходимость правый блок последних тем и дополнительный кастумный блок (некоторые запросы из БД) прикрепить по всему форуму. Темы, ответы и тп. То есть эти 2 блока должны быть везде, как футер к примеру. Подскажите пожалуйста, как это лучше сделать? Спасибо за любую информацию!

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

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

Эти блоки относятся только к шаблону boardIndexTemplate и в глобальном шаблоне они работать не будут.

Тема вроде обсуждалась, но единственный кто реализовал такие блоки, и не без костылей, это Lesovsky.

Опубликовано:
  • Автор

Хмм. Спасибо большое за оперативный ответ, хотя и не очень позитивный)

Опубликовано:
  • Автор

Эхх. Ссылка то мёртвая на зарубежный форум)

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

Наверное включение боковых блоках в темах довольно сильно сделает нагрузку на форум. Рискованно...

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

Сейчас ресурсы серверов и простых шаред хостингов сильно выросли. Пару тройку дополнительных запросов уже не так принципиально для простого форума.

Опубликовано:
  • Автор

Хостинг само собой не шаровый, поэтому данная проблема не волнует). Важнее была возможность реализации, но раз сложно - значит не судьба.

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

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

Я реализовывал это на одном достаточно крупном проекте, там была как раз такая задача, работало всё стабильно, единственный минус, полуручной режим.

 

Для этого нужно воспользоваться блоками IP.Content, идея такова, что 1 сайдбар = 1 блок IP.Content, если нужен один глобальный, то соответственно будет 1 блок.

 

1. Создаёте блок с типом Custom и ключом блока например customsidebar.

2. В созданных блок вставляете соответственно тоже блоки IP.Content Последних тем и т.д., через {parse block="КЛЮЧБЛОКА"}.

3. Определиться, а) вставить в глобальный шаблон, чтобы совершенно на всех вставить или, б) вставить на индексные страницы разделов (советую б)).

4. Созданный сайдбар вставляем на необходимую страницу, все шаблоны индексных страниц разделов имеют название nameIndexTemplate, например boardIndexTemplate.

5. Открываем boardIndexTemplate (это шаблон главной страницы), смотрим по разметке, к сожалению нет под рукой 3.4, ищете вывод блоков сайдбара, и вставляете {parse block="customsidebar"}.

 

Очень кратко указал, но думаю ясно, что вставляя в необходимое место в шаблоне {parse block="КЛЮЧБЛОКА"}, можно вывести почти всё что хочешь.

Опубликовано:
  • Автор

Хмм. Спасибо большое за "толчок", сегодня буду экспериментировать). А почему даёте совет "Б"? Подводные камни?

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

А приложение Global Sidebars не смотрели? Там вроде то, что вам нужно.

Правда не знаю если можно перенести блоки главной странице в глобальный сайдбар.

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

Хмм. Спасибо большое за "толчок", сегодня буду экспериментировать). А почему даёте совет "Б"? Подводные камни?

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

Опубликовано:
  • Автор

Ну собственно добился чего хотел, правда кажется где то что-то упустил. Тут скрин контента. Тут уже форума и хук последних тем, который был установлен ранее занимается ерундой))). Закрыв его - всё становится как и требовалось. Ладно. Думаю удалю его и всё станет нормально. Но не тут то было).

В globalTemplate я нашёл

<if test="mainpageContent:|:$html">{$html}</if>

и после чего сделал следующее:

<div class='ipsLayout ipsLayout_withright ipsLayout_largeright'>
   <div class='ipsLayout_right'>
       {parse block="customsidebar"}
   </div>
   <div class='ipsLayout_content'>
<if test="mainpageContent:|:$html">{$html}</if>
   </div>
</div>

Подозреваю что проблема в этом...

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

Пришлите код шаблона boardIndexTemplate, а то нет 3.4 под рукой.

Опубликовано:
  • Автор

Тут. И опять же, если кастум блоки прописать boardIndexTemplate, то в контенте и в темах эти блоки вроде фигурировать не будут. А они нужны там.

 

 

{parse js_module="board"}
{parse variable="sidebar_enabled" default="$show_side_blocks"}
<if test="boardIndexTop:|:true"></if>
<div id='board_index' class='ipsLayout <if test="sideBarEnabledL:|:$this->templateVars['sidebar_enabled']">ipsLayout_withright</if> ipsLayout_largeright clearfix <if test="sidebarclosed:|:IPSCookie::get('hide_sidebar') == '1'">no_sidebar</if>'>	
<div id='categories' class='ipsLayout_content clearfix'>
<!-- CATS AND FORUMS -->
	<if test="cats_forums:|:is_array( $cat_data ) AND count( $cat_data )">
		<foreach loop="categories:$cat_data as $_data">
			<if test="cat_has_forums:|:is_array( $_data['forum_data'] ) AND count( $_data['forum_data'] )">
				<div id='category_{$_data['cat_data']['id']}' class='category_block block_wrap'>
					<h3 class='maintitle'>
						<a class='toggle right' href='#' title="{parse expression="sprintf( $this->lang->words['toggle_cat'], IPSText::striptags( IPSText::htmlspecialchars($_data['cat_data']['name'] ) ) )"}">{parse expression="sprintf( $this->lang->words['toggle_cat'], $_data['cat_data']['name'] )"}</a> <a href="{parse url="showforum={$_data['cat_data']['id']}" seotitle="{$_data['cat_data']['name_seo']}" template="showforum" base="public"}" title='{parse expression="sprintf( $this->lang->words['view_cat'], IPSText::striptags( IPSText::htmlspecialchars($_data['cat_data']['name'] ) ) )"}'>{$_data['cat_data']['name']}</a>
					</h3>
					<div class='ipsBox table_wrap'>
						<div class='ipsBox_container'>
							<table class='ipb_table' summary="{$this->lang->words['forums_in_cat']} '{$_data['cat_data']['name']}'">
								<tr class='header hide'>
									<th scope='col' class='col_c_icon'> </th>
									<th scope='col' class='col_c_forum'>{$this->lang->words['cat_name']}</th>
									<th scope='col' class='col_c_stats stats'>{$this->lang->words['stats']}</th>
									<if test="canSeeLastInfoHeader:|:$this->memberData['gbw_view_last_info']"><th scope='col' class='col_c_post'>{$this->lang->words['last_post_info']}</th></if>
								</tr>
								<!-- / CAT HEADER -->
								<foreach loop="forums:$_data['forum_data'] as $forum_id => $forum_data">
									<if test="forumRedirect:|:$forum_data['redirect_on']">
										<tr class='redirect_forum' id='f_{$forum_data['id']}'>
											<td class='col_c_icon'>
												<img src='{$this->settings['img_url']}/f_redirect.png' />
											</td>
											<td <if test="canSeeLastInfoRedirect:|:$this->memberData['gbw_view_last_info']">colspan='2'</if> class='col_c_forum'>
												<h4><a href="{parse url="showforum={$forum_data['id']}" seotitle="{$forum_data['name_seo']}" template="showforum" base="public"}" title='{parse expression="IPSText::striptags( IPSText::htmlspecialchars( $forum_data['name'] ) )"}'>{$forum_data['name']}</a></h4>
												<p class='desc'>{$forum_data['description']}</p>
											</td>
											<td class='desc'>
												<ul class='last_post ipsType_small'>
													<li class='desc lighter'><em>{parse format_number="$forum_data['redirect_hits']"} {$this->lang->words['rd_hits']}</em></li>
												</ul>
											</td>
										</tr>
									<else />
										<tr class='<if test="hasUnreadClass:|:$forum_data['_has_unread']">unread</if>'>
											<td class='col_c_icon'>
												<if test="hasUnread:|:$forum_data['_has_unread']">
													<a id='forum_img_{$forum_data['id']}' href="{parse url="app=forums&module=forums&section=markasread&marktype=forum&forumid={$forum_data['id']}&returntoforumid={$this->request['f']}&i=1&k={$this->member->form_hash}" base="public"}" data-tooltip="{$this->lang->words['bi_markread']}" class='forum_marker'><img src='{$this->settings['img_url']}/f_icon.png' /></a>
												<else />
													<img src='{$this->settings['img_url']}/f_icon_read.png' />
												</if>
											</td>
											<td class='col_c_forum'>

												<h4>
													<if test="hasQueuedAndCanSeeIcon:|:!empty($forum_data['_has_queued_and_can_see_icon'])">
														<a href='{parse url="showforum={$forum_data['id']}&modfilter=unapproved" seotitle="{$forum_data['name_seo']}" template="showforum" base="public"}' title='{$this->lang->words['view_unapproved']}' class='ipsBadge ipsBadge_orange' data-tooltip="{parse expression="sprintf( $this->lang->words['f_queued'], $forum_data['queued_topics'], $forum_data['queued_posts'])"}" style='vertical-align: top'>{$this->lang->words['f_queued_badge']}</a>
													</if>
													<a href="{parse url="showforum={$forum_data['id']}" seotitle="{$forum_data['name_seo']}" template="showforum" base="public"}" title='{parse expression="IPSText::striptags( IPSText::htmlspecialchars( $forum_data['name'] ) )"}'>{$forum_data['name']}</a>
												</h4>

												<if test="showSubForums:|:$forum_data['show_subforums'] AND count( $forum_data['subforums'] ) AND $forum_data['show_subforums']">
													<br />
													<ol class='ipsList_inline ipsType_small subforums' id='subforums_{$forum_data['id']}'>
														<foreach loop="subforums:$forum_data['subforums'] as $__id => $__data">
															<if test="showSubForumsLit:|:$__data[3]"><li class='unread'><else /><li></if>
																<a href="{parse url="showforum={$__data[0]}" seotitle="{$__data[2]}" template="showforum" base="public"}" title='{parse expression="IPSText::striptags( IPSText::htmlspecialchars($__data[1]) )"}'>{$__data[1]}</a><if test="isNotLast:|: empty($__data[4] )">,</if>
															</li>
														</foreach>
													</ol>
												</if>

												<p class='desc __forum_desc ipsType_small'>{$forum_data['description']}</p>											
											</td>
											<td class='col_c_stats ipsType_small'>
												<ul>
													<li><strong>{$forum_data['topics']}</strong> {$this->lang->words['topics']}</li>
													<li><strong>{$forum_data['posts']}</strong> {$this->lang->words['replies']}</li>
												</ul>
											</td>
											<if test="canSeeLastInfo:|:$this->memberData['gbw_view_last_info']">
											<td class='col_c_post'>
												<if test="hideLastInfo:|:$forum_data['hide_last_info']">
													<ul class='last_post ipsType_small'>
														<li class='desc lighter'><em>{$this->lang->words['f_protected']}</em></li>
													</ul>
												<else />
													<if test="hideTopicInTitle:|:$forum_data['_hide_last_date']">
													{parse template="userSmallPhoto" group="global" params="array('member_id' => $forum_data['last_poster_id'], 'members_seo_name' => $forum_data['seo_last_name'], 'pp_small_photo' => $forum_data['pp_small_photo'], 'alt' => '' )"}
													<else />
													{parse template="userSmallPhoto" group="global" params="array('member_id' => $forum_data['last_poster_id'], 'members_seo_name' => $forum_data['seo_last_name'], 'pp_small_photo' => $forum_data['pp_small_photo'], 'alt' => sprintf( $this->lang->words['bindex_userphoto_alt'], $forum_data['last_title'], $forum_data['members_display_name'] ) )"}
													</if>
													<ul class='last_post ipsType_small'>
														<if test="!$forum_data['last_id']">
															<li class='desc lighter'><em>{$this->lang->words['f_none']}</em></li>
														<else />
															<li>
																{$forum_data['last_topic_title']}
															</li>
															<if test="lastPosterID:|:$forum_data['last_poster_id']">
																<li>{$this->lang->words['by']} {parse template="userHoverCard" group="global" params="$forum_data"}</li>
															</if>
															<if test="hideDateUrl:|:$forum_data['_hide_last_date']">
																<li class='desc lighter blend_links'>{parse date="$forum_data['last_post']" format="DATE"}</li>
															<else />
																<li class='desc lighter blend_links'><a href='{parse url="showtopic={$forum_data['last_id']}&view=getlastpost" base="public" template="showtopic" seotitle="{$forum_data['seo_last_title']}"}' title='{$this->lang->words['view_last_post']}'>{parse date="$forum_data['last_post']" format="DATE"}</a></li>
															</if>
														</if>
													</ul>
												</if>
											</td>
											</if>
										</tr>
									</if>
								</foreach>
							</table>
						</div>
					</div>
					<br />
				</div>
			</if>
		</foreach>
	</if>
</div>
<if test="sideBarEnabled2:|:$this->templateVars['sidebar_enabled']">
	<div id='index_stats' class='ipsLayout_right clearfix' <if test="sidebarclosed2:|:IPSCookie::get('hide_sidebar') == '1'">style='display: none'</if>>
		<foreach loop="side_blocks:$side_blocks as $block">
			{$block}
		</foreach>
	</div>
	<a href='#' id='toggle_sidebar' title='{$this->lang->words['toggle_sidebar']}' data-closed="{$this->lang->words['_laquo']}" data-open="×"> </a>
</if>
</div>
<script type='text/javascript'>
//<![CDATA[
var markerURL  = ipb.vars['base_url'] + "app=forums&module=ajax&section=markasread&i=1"; // Ajax URL so don't use &
var unreadIcon = "<img src='{$this->settings['img_url']}/f_icon_read.png' />";

<if test="markercatforums:|:is_array( $cat_data ) AND count( $cat_data )">
	<foreach loop="markercategories:$cat_data as $_data">
		<if test="markerhasforums:|:is_array( $_data['forum_data'] ) AND count( $_data['forum_data'] )">
			<foreach loop="markerforums:$_data['forum_data'] as $forum_id => $forum_data">
				<if test="markernotredirect:|:!$forum_data['redirect_on']">
					<if test="markerhasunread:|:$forum_data['_has_unread']">
ipb.global.registerMarker( "forum_img_{$forum_data['id']}", "{$forum_data['img_new_post']}", markerURL + "&forumid={$forum_data['id']}" );
					</if>
				</if>
			</foreach>
		</if>
	</foreach>
</if>
//]]>
</script>
<if test="showTotals:|:$this->settings['show_totals']">
<div id='board_stats'>		
	<ul class='ipsType_small ipsList_inline'>
		<li class='clear'>
			<span class='value'>{$stats['info']['total_posts']}</span>
			{$this->lang->words['total_posts']}
		</li>
		<li class='clear'>
			<span class='value'>{$stats['info']['mem_count']}</span>
			{$this->lang->words['total_members']}
		</li>
		<li class='clear'>
			{IPSMember::makeProfileLink( $stats['info']['last_mem_name'], $stats['info']['last_mem_id'], $stats['info']['last_mem_seo'], 'value' )}
			{$this->lang->words['newest_member']}
		</li>
		<li class='clear' data-tooltip="{$stats['info']['most_time']}">
			<span class='value'>{$stats['info']['most_online']}</span>
			{$this->lang->words['online_at_once']}
		</li>
	</ul>
</div>
</if>
<div id='board_statistics' class='statistics clearfix'>
<ul id='stat_links' class='ipsList_inline right ipsType_small'>
	<if test="statsLinks:|:1==1"> <!-- Hook point -->
		<li><a href="{parse url="app=forums&module=extras&section=stats&do=leaders" base="public"}" title="{$this->lang->words['sm_forum_leaders_title']}">{$this->lang->words['sm_forum_leaders']}</a></li>
		<li><a href="{parse url="app=forums&module=extras&section=stats" base="public"}" title="{$this->lang->words['sm_all_posters_title']}">{$this->lang->words['sm_today_posters']}</a></li>
		<li><a href="{parse url="app=members&module=list&max_results=20&sort_key=posts&sort_order=desc&filter=ALL" base="public" seotitle="false"}" title="{$this->lang->words['sm_overall_posters_title']}">{$this->lang->words['sm_overall_posters']}</a></li>
		<if test="reputationEnabled:|:$this->settings['reputation_enabled']">
			<li>
				<a href="{parse url="app=members&module=reputation&section=most" base="public" template="most_liked" seotitle="most_liked"}" title="<if test="reputationTypeTitle:|:$this->settings['reputation_point_types'] == 'like'">{$this->lang->words['most_rep_likes']}<else />{$this->lang->words['most_rep_rep']}</if>">
					<if test="reputationType:|:$this->settings['reputation_point_types'] == 'like'">
						{$this->lang->words['most_rep_likes']}
					<else />
						{$this->lang->words['most_rep_rep']}
					</if>
				</a>
			</li>
		</if>
	</if>
</ul>

<if test="showActive:|:$this->settings['show_active'] && $this->memberData['gbw_view_online_lists']">
	<h4 class='statistics_head'>{parse expression="sprintf( $this->lang->words['online_right_now'], $stats['TOTAL'] )"} {$this->lang->words['active_users']}</h4>
	<p class='statistics_brief desc'>
		{parse expression="sprintf( $this->lang->words['active_users_detail'], $stats['MEMBERS'], $stats['GUESTS'], $stats['ANON'] )"}
		<if test="onlineListEnabled:|:$this->settings['allow_online_list']">  <a href='{parse url="app=members&module=online&sort_order=desc" base="public"}' title='{$this->lang->words['online_link']}'>({$this->lang->words['online_link']})</a></if>
	</p>
</if>
<if test="activeNames:|:count($stats['NAMES']) && $this->settings['show_active']">
	<br />
	<p>
		<span class='name'>{parse expression="implode( ",</span> <span class='name'>", $stats['NAMES'] )"}</span>
	</p>
</if>
</div>

 

 

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

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

У Вас на главной странице уже есть сайдбар. Поэтому второй там не нужен.

Используйте условия.

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

Сейчас на странице 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.