[решено] Canonical tag - как реализовать?

Главные вкладки

Аватар пользователя anton_ua anton_ua 9 марта 2009 в 0:42

В общем первая информация http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonica...
о вводе нового тега rel="canonical" суть которого исключать дублированный контент у себя на станице и говорить поисковику где находится первоисточник...

т.е. надо уметь размещать на каждой станице уникальную запись в HEAD,.. как это делать??? На одном из блогов есть пропатченый модуль "redirect module" но как им пользоваться я так и не понял...

Добрый люди подскажите!! очень полезная фича

http://imagexmedia.com/blog/2009/2/what-canonical-url-module-drupal-help...
http://yoast.com/canonical-url-links/

Комментарии

Аватар пользователя anton_ua anton_ua 9 марта 2009 в 1:23

Насколько я понимаю "доделаный" модуль NodeWords, сможет вставлять еще одну строку в область head страниц.

В общем не могу я понять, как в NodeWords сделать еще один тип данных, чтобы в нодах появилось поле в которое надо вписать адрес страницы с первоисточником, а модуль уже сам вставлял в эту ноду в облать head строку типа

Аватар пользователя WiseMan WiseMan 9 марта 2009 в 2:13

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

Хотя зачем этот модуль друпалу я как-то не совсем понимаю. Ведь есть http://drupal.org/project/globalredirect который решает проблему с дублированным контентом.

Аватар пользователя anton_ua anton_ua 10 марта 2009 в 14:13

объясняю ситуацию: допустим я продаю трубы, продаю разных производителей...
т.е. к меня есть 5 видов труб от одного производителя с 10 диаметрами (50 нод с описанием), естестевенно для каждого диаметра создается отдельная нода... при том что на каждый тип создается порядка 10 клонов (которые незначительно друг от друга отличаются- но все же отличаются).

Вот и хочу сделать "материнское описание" а все копии для разных диаметров просто указывали на нее... и не вводили в заблуждение поисковик...

т.е. это разные страницы... они не должны клеется 301 редиректом или еще что--то... мне просто надо указать поисковику, какая страница из похожих друг на друга должна быть главной

Разве такое делает? http://drupal.org/project/globalredirect - крутил вертел но про canonical там ничего не нашел, за исключением выбора варианта редиректа... или 301 или canonical... но это немного не то что мне надо...

http://drupal.org/node/374049 именно оттуда и я пришел Smile
или я как всегда чего-то не понимаю??

Аватар пользователя WiseMan WiseMan 11 марта 2009 в 11:38

Андрей, тот модуль что предлагают скачать это просто модифицированный globalredirect, а человеку надо чтобы к каждому материалу можно было прописать свой canonical tag, вручную буквально.

Для этих целей см. мой первый пост в данной теме

Аватар пользователя anton_ua anton_ua 11 марта 2009 в 15:04

Спасибо WiseMan, вы меня правильно поняли!! буду пробывать через ССK.

andypost@drupal.org указынный Вами модуль я скачал и установил еще до написания моего вопроса... он не дает того функционала... Вы хоть сами его пробывали??? или просто почитали...??? Smile

Аватар пользователя andypost@drupal.org andypost@drupal.org 16 марта 2009 в 23:45

Не скачивал, но достаточно описания, лично я бы лучше сделал довесок для node_words - он практически на все сайты ставится... тем более что эта тема там в issues поднималась.

Аватар пользователя fairwind fairwind 17 марта 2009 в 8:43

Есть модуль int_meta - он умеет пользовать для метатегов поля сск. Причем можно создавать теги - просто прописывая соответствие тега и поля. Я пользую его вместо node_words.

Аватар пользователя anton_ua anton_ua 21 марта 2009 в 14:36

Спасибо всем за ответы.. Решил все таки сделать как довесок для node_words (по совету andypost) на мой взгляд это наиболее элегантное решение. но из-за того что с программированием не очень ... остановился на одной непонятной для меня вещи...
Я посмотрел как работает сам node_words, после в папке modules\nodewords\metatags создал новый файл canonical.inc следующего содержания:

<?php
// $Id: canonical.inc,v 1.1.4.2 2008/01/22 09:14:20 robrechtj Exp $

/**
 * file
 * Support file for canonical meta tag.
 */

function nodewords_canonical_form($type, $value, $settings) {
  return array(
    '#type' => 'textfield',
    '#title' => t('canonical'),
    '#default_value' => $value,
    '#size' => 60,
    '#maxlength' => $settings['max_size'],
    '#description' => t('Enter a short canonical for this page.'),
  );
}

в самом модуле nodewords.module проблема меня настигла в строке 85
 drupal_set_html_head('<meta name="'. $name .'" content="'. $content .'" />');

я немогу понять как сделать так, чтобы для только что созданного типа canonical создавалась отдельная запись формата
<link rel="canonical" ..... />
а не как для остальных мета тэгов
<meta name="canonical" ......./>

я так понимаю строка должна иметь примерно такой вид :
drupal_set_html_head('<link rel="canonical" '. $content .' />');

но как ее правильно вписать в общей код, я незнаю Sad

function nodewords_init() {
  $tags = nodewords_get();
  foreach ($tags as $name => $content) {
    if (!empty($content)) {
      drupal_set_html_head('<meta name="'. $name .'" content="'. $content .'" />');
    }
  }  
}
Аватар пользователя valov-web valov-web 28 декабря 2012 в 10:48

тема актуальна для drupal 7. На всех страницах прописан тег rel canonical а это лишнее.

Он необходим только при наличия разных материалов с одинаковым содержимым.

Для обычного сайта это решает модуль глобал редирект,перенаправляя со страниц типа node/1 на старницу с синонимом. Т.е тег canonical вообще нужно убрать на всех старницах.
Вопрос как это сделать не залезая в код?