Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Fisana's Blog

  • записи
    22
  • комментариев
    140
  • просмотров
    216968

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

Fisana

464 просмотра

Опрос  

8 пользователей проголосовало

  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, в которой этот шаблон может поменяться.

 

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



6 комментариев


Рекомендованные комментарии

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

Поделиться комментарием


Ссылка на комментарий

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

Версия 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

Поделиться комментарием


Ссылка на комментарий

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

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

 

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

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

Поделиться комментарием


Ссылка на комментарий

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

Поделиться комментарием


Ссылка на комментарий

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

  • Upvote 1

Поделиться комментарием


Ссылка на комментарий

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...