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

Fisana's Blog

  • entries
    22
  • comments
    140
  • views
    217,022

Обновления статусов на главной – угроза для SEO оптимизации IPB

Sign in to follow this  
Fisana

502 views

Опрос  

8 members have voted

  1. 1. ?????

    • ??????? ?? ???? ???????? 2.1 ?? ???????..
      2
    • ?????????? ? ????? ????????...
      4
    • ??????, ??? ??? ????? ??? 2.04
      2

Изучаю версию IPB 3.1 и прихожу в ужас. Какая уж там польза от Friendly url или Cannonical метатега, если все сводится на нет из-за массы индексируемого мусора.

 

Рассмотрим любымый многими хук Status Update на главной странице форума.

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

Например – Разблокировать · Заблокировать. Скрыть. Достигнуто максимальное количество комментариев статуса.

Эта строчка (или другая с другим переводом) на каждом форуме 3.1.x в индексе повторяется столько раз, сколько меняли статус + добавляется мусор из комментариев статусов. Если комментируют много, мусора просто вал...

И это ломает всю оптимизацию, создавая ненужную плотность ненужных ключей.

Но очень много мусора еще и в ссылках вроде "комментировать", "заблокировать", которые видны для ПС, но поисковики, переходя по ним с правами гостей (разумеется), попадают на страницу ошибки.

 

Пока единственное решение, это либо отключить любимый хук, либо срочно закрыть мусор в noindex и к служебным ссылкам по возможности добавлять атрибут rel='nofollow'.

Делается это в шаблоне statusUpdates из группы Profiles (Профили).

Могу выложить свое решение, но скоро выйдет 3.1.2, в которой этот шаблон может поменяться.

 

Источник: Мусор, который создает обновление статуса на главной

Sign in to follow this  


6 Comments


Recommended Comments

Фисана, будь добра, подскажи кужа надо писать ноффолов и нойиндекс, шаблон IBR, вещь то нужная.

Share this comment


Link to comment

Проще весь шаблон выложить.

Версия 3.1.1-3.1.2

Профили > statusUpdates

 

<script type="text/javascript">
ipb.status.maxReplies = {parse expression="intval($this->settings['su_max_replies'])"};
ipb.status.smallSpace = {parse expression="intval($smallSpace)"};
</script>
<foreach loop="outerLoop:$updates as $id => $status">
<if test="$this->memberData['member_id'] AND $latestOnly AND $status['member_id'] == $this->memberData['member_id']">
<script type="text/javascript">
	ipb.status.myLatest = {$status['status_id']};
</script>
</if>
<div class='status_main_wrap rounded' id='statusWrap-{$status['status_id']}'>
	<div class="status_main_photo">
		<if test="$smallSpace">
			<a href='{parse url="showuser={$status['member_id']}" seotitle="{$status['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}'><img src='{$status['pp_mini_photo']}' width='{$status['pp_mini_width']}' height='{$status['pp_mini_height']}' alt="{$status['members_display_name']}{$this->lang->words['users_photo']}" class='photo' /></a>	
		<else />
			<a href='{parse url="showuser={$status['member_id']}" seotitle="{$status['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}'><img src='{$status['pp_thumb_photo']}' width='{$status['pp_thumb_width']}' height='{$status['pp_thumb_height']}' alt="{$status['members_display_name']}{$this->lang->words['users_photo']}" class='photo' /></a>	
		</if>
	</div>
	<div class="status_main_content">
		<div id="statusContent-{$status['status_id']}">
			<h4><a href='{parse url="showuser={$status['member_id']}" seotitle="{$status['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}'>{$status['members_display_name']}</a>{parse template="user_popup" group="global" params="$status['member_id'],$status['members_seo_name']"} {$status['status_content']}</h4>
			<noindex><p class='desc'>
				<img src="{$this->settings['img_url']}/<if test="isLockedImgAdmin:|:$status['_isLocked'] == 2">lock_small_orange.png"<else />lock_small_gold.gif"</if> id='statusLockImg-{$status['status_id']}'<if test="isLockedImg:|:!$status['_isLocked']"> style='display:none'</if> alt="{$this->lang->words['status__locked']}" />
				<if test="cImg:|:! $smallSpace AND $status['_creatorImg']"><img src="{$status['_creatorImg']}" alt='' /></if>
				{$status['status_date_formatted_short']}<if test="creatorText:|:$smallSpace AND $status['_creatorText'] AND $status['status_creator'] AND $status['status_creator'] != 'ipb'"> {$this->lang->words['su_via']} {$status['_creatorText']}</if>
				<if test="canDelete:|:$status['_canDelete']"> · <a rel='nofollow' href="{$this->settings['base_url']}app=members&module=profile&section=status&do=deleteStatus&status_id={$status['status_id']}&k={$this->member->form_hash}" id="statusDelete-{$status['status_id']}" class="__sD __d{$status['status_id']}">{$this->lang->words['status_delete_link']}</a></if>
				<span id='statusUnlock-{$status['status_id']}' <if test="isLocked:|:$status['_isLocked'] AND $status['_canUnlock']">style='display:inline'<else />style='display:none'</if>> · <a rel='nofollow' href="{$this->settings['base_url']}app=members&module=profile&section=status&do=unlockStatus&status_id={$status['status_id']}&k={$this->member->form_hash}" id="statusUnlockLink-{$status['status_id']}" class="__sU __u{$status['status_id']}">{$this->lang->words['status_unlock_link']}</a></span>
				<span id='statusLock-{$status['status_id']}' <if test="canLock:|:$status['_canLock'] AND ! $status['_isLocked']">style='display:inline'<else />style='display:none'</if>> · <a  rel='nofollow' href="{$this->settings['base_url']}app=members&module=profile&section=status&do=lockStatus&status_id={$status['status_id']}&k={$this->member->form_hash}" id="statusLockLink-{$status['status_id']}" class="__sL __l{$status['status_id']}">{$this->lang->words['status_lock_link']}</a></span>
			</p></noindex>
			<if test="$smallSpace">
				<p class='desc' id='statusToggle-{$status['status_id']}'>
					<if test="$status['_userCanReply']">
						<if test="$status['status_replies']">
							<noindex><a rel='nofollow' href="#" class="__sT __t{$status['status_id']}">{parse expression="sprintf( $this->lang->words['view_comments_and_add'], $status['status_replies'])"}</a></noindex>
						<else />
							<noindex><a rel='nofollow' href="#" class="__sT __t{$status['status_id']}">{$this->lang->words['add_comments_only']}</a></noindex>
						</if>
					<else />
						<if test="$status['status_replies']">
							<noindex><a rel='nofollow' href="#" class="__sT __t{$status['status_id']}">{parse expression="sprintf( $this->lang->words['view_comments_only'], $status['status_replies'])"}</a></noindex>
						</if>
					</if>
				</p>
				<p class='desc' id='statusToggleOff-{$status['status_id']}' style='display:none'>
					<noindex><a rel='nofollow' href="#" class="__sTO __to{$status['status_id']}">{$this->lang->words['view_comments_collapse']}</a></noindex>
				</p>
			</if>
		</div>
		<div id="statusFeedback-{$status['status_id']}" class='status_feedback' style='display:<if test="$smallSpace">none<else />inline</if>'>
			<if test="$status['status_replies'] AND count( $status['replies'] )">
				<if test="hasMore:|:$status['status_replies'] > 3">
					<div class='status_mini_wrap row2 altrow' id='statusMoreWrap-{$status['status_id']}'>
						<img src="{$this->settings['img_url']}/comments.png" alt="" />  <a href="#" id="statusMore-{$status['status_id']}" class='__showAll __x{$status['status_id']}'>{parse expression="sprintf( $this->lang->words['status_show_all_x'], $status['status_replies'] )"}</a>
					</div>
				</if>
				<div id='statusReplies-{$status['status_id']}'>
					{parse template="statusReplies" group="profile" params="$status['replies']"}
				</div>
			</if>
			<div id='statusReplyBlank-{$status['status_id']}'></div>
			<div id='statusReply-{$status['status_id']}'>
			<if test="$status['_userCanReply']">
				<div class='status_mini_wrap reply row1 rounded'>
					<form id='statusReplyForm-{$status['status_id']}' action='{$this->settings['base_url']}app=members&module=profile&section=status&do=reply&status_id={$status['status_id']}&k={$this->member->form_hash}&id={$this->memberData['member_id']}' method='post'>
						<div class="status_mini_photo">
							<a href='{parse url="showuser={$this->memberData['member_id']}" seotitle="{$this->memberData['members_seo_name']}" template="showuser" base="public"}' title='{$this->lang->words['view_profile']}'><img src='{$this->memberData['pp_mini_photo']}' width='{$this->memberData['pp_mini_width']}' height='{$this->memberData['pp_mini_height']}' alt="{$this->memberData['members_display_name']}{$this->lang->words['users_photo']}" class='photo' /></a>	
						</div>
						<div class="status_mini_content">
							<textarea class='status_textarea' rows='3' cols='50' name='comment-{$status['status_id']}' id='statusText-{$status['status_id']}'></textarea>
							<div class="status_submit"><input type='submit' class='__submit input_submit' id='statusSubmit-{$status['status_id']}' value='{$this->lang->words['status__dfcomment']}' /></div>
						</div>
					</form>
					<a href='#' class='__showform' id='statusReplyFormShow-{$status['status_id']}' style='display: none'>{$this->lang->words['status__addcomment']}</a>
				</div>
				<script type='text/javascript'>
					if( $('statusReplyForm-{$status['status_id']}') )
					{
						$('statusReplyForm-{$status['status_id']}').hide();
					}

					if( $('statusReplyFormShow-{$status['status_id']}') )
					{
						$('statusReplyFormShow-{$status['status_id']}').show();
					}
				</script>
			</if>
			</div>
			<noindex><div class='status_mini_wrap row2 altrow' id='statusMaxWrap-{$status['status_id']}' <if test="maxReplies:|:$status['status_replies'] < $this->settings['su_max_replies']">style='display:none'</if>>
				<img src="{$this->settings['img_url']}/locked_replies.png" title="{$this->lang->words['status_too_many_replies']}" /> {$this->lang->words['status_too_many_replies']}
			</div></noindex>
		</div>
	</div>
</div>
</foreach>

 

  • Upvote 2

Share this comment


Link to comment

Кстати, в переводе рекомендую убрать альт 'иконка' (в английском варианте – icon)

Частично альт уничтожен путем изживания переменной из шаблонов, но все равно его пока много и проще в переводе заменить хотя бы на »

 

В трекере на IPS читала возмущения, что народ не желает чрезмерной плотности слова 'icon', так как у них форумы совсем не об иконках :)

В общем, как со статусами...

Share this comment


Link to comment

А я думал что об иконках в верси 311 эту проблему решат. Читал же где то уних в блоге разрабоачиков, правда через переводчик. Спасибо за скин со статусами. =)

Share this comment


Link to comment

Они частично решили, но не везде альты убрали.

Share this comment


Link to comment

Для 3.1.2 шаблон такой же. Но поставила еще один noindex. Код заменила в комментарии...

  • Upvote 1

Share this comment


Link to comment

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
×
×
  • Create New...