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

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Edited by That

Share this post


Link to post
Share on other sites

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

 

Для этого нужно воспользоваться блоками 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="КЛЮЧБЛОКА"}, можно вывести почти всё что хочешь.

  • Upvote 2

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Тут. И опять же, если кастум блоки прописать 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>

 

 

Edited by That

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