Перейти к содержимому


Мета-теги для страниц с обсуждением товаров


  • Вы не можете ответить в тему
Сообщений в теме: 4

#1 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 16 October 2015 - 01:35 PM

Столкнулся с тем, что Google ругается на повторяющиеся мета-теги (title и description) для страницы подробного описания товара и страницы с его обсуждением (отзывами).
Видел, что в страницах с новостями эту проблему устраняли, а вот для product_discussion что-то было?
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 October 2015 - 04:30 PM

Я такого решения не припоминаю. Но вообще оно легко должно делаться. На уровне шаблона.
Что-то типа "если текущий шаблон это дискуссия, то добавим к title строку "(обсуждение)""
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 19 October 2015 - 04:12 PM

badisoft, спасибо за наводку.

С title разобрался, в head.tpl.html, там где
<title>{$page_title}</title>

Оборачиваем {$page_title} условием:
<title>{if $main_content_template == "product_discussion.tpl.html"}Отзывы о {$page_title}{else}{$page_title}{/if}</title>

А вот с description и keywords сложнее. В head.tpl.html они выводятся через одну переменную $page_meta_tags, соответственно такой финт как с title не проходит.
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 October 2015 - 07:47 PM

А вот с description и keywords сложнее.

Да ладно. То же самое (по сути), только в head.php.
if ( isset($_GET["discuss"]) ) и так далее.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 21 October 2015 - 06:31 PM

А вот с description и keywords сложнее.

Да ладно. То же самое (по сути), только в head.php. if ( isset($_GET["discuss"]) ) и так далее.


Опять же спасибо за наводку! :) Долго думал, но кое до чего догадался. Вроде бы работает такой вариант:

1. В product_functions.php, чуть изменив имеющуюся функцию prdGetMetaTags, добавил новую функцию discGetMetaTags, отвечающую за формирование переменной $page_meta_tags для страницы с обсуждениями товаров:
function discGetMetaTags( $productID ) //gets META keywords and description - an HTML code to insert into <head> section
{
		$q = db_query( "select meta_description, meta_keywords from ".
				PRODUCTS_TABLE." where productID=".(int)$productID );
		$row = db_fetch_row($q);
		$meta_description  = $row["meta_description"];
		$meta_keywords	 = $row["meta_keywords"];
		$res = "";
		if  ( $meta_description != "" )
				$res .= "<meta name=\"Description\" content=\"".META_DESC_DISC."".$meta_description."\">\n";
		if  ( $meta_keywords != "" )
				$res .= "<meta name=\"KeyWords\" content=\"".$meta_keywords."".META_KEYW_DISC."\" >\n";
		return $res;
}

2. В russian.php добавил описания для META_DESC_DISC и META_KEYW_DISC (некий текст, добавляемый к мета-тегам товара для страницы с его обсуждением (можно использовать любой)).
define('META_DESC_DISC', 'Отзывы о ');
define('META_KEYW_DISC', ' отзывы');
Этот текст используется в указанной выше функции discGetMetaTags

3. В head.php перед строкой
elseif (isset($_GET["fullnews"]))  //  fullnews => get title

добавил формирование мета-тегов для страницы обсуждений, по аналогии с формированием мета-тегов для страницы описания товара, всего лишь заменив используемую функцию с prdGetMetaTags на ранее добавленную discGetMetaTags:
  elseif (isset($_GET["discuss"]))  //  discuss => get title
				  {
								$q = db_query("select name, title FROM ".PRODUCTS_TABLE." WHERE productID=".(int)$productID);
								$r = db_fetch_row($q);
								if($r[1]) $page_title = $r[1];
								elseif($r[0]) $page_title = $r[0];
								else $page_title =  CONF_SHOP_NAME.": ".CONF_DEFAULT_TITLE;
								$meta_tags = discGetMetaTags($productID);
						}

Не знаю насколько это все правильно, но работает! :)
  • 0