Drupal → Как удалить shortlink из страничек

19.07.2011

Drupal 7 на каждой странице материала выводит shortlink, даже если у ноды есть синоним:

<link rel="shortlink" href="/node/..." />

Избавиться от него можно так:

/**
 * Implements hook_html_head_alter().
 */
function THEMENAME_html_head_alter(&$head_elements) {
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'shortlink') {
      unset($head_elements[$key]);
    }
  }
}

Код добавляется в template.php. По аналогии можно удалить любой другой элемент из head.

Написанное актуально для
Drupal 7
Похожие записи

Комментарии

Петров Николай
19.07.2011, 14:48

Зачем от него избавляться?
Для экономии объема страницы?

у меня с ним вылезали дубли в поисковиках, хотя ссылок вида node/nid нигде не было. да и вообще неоднозначный тег какой-то, мне он не нравится :)

Гость
20.07.2011, 08:32

Только наткнувшись на эту статью понял откуда дубли в поисковиках.
зачем он вообще его втыкает ?

Евгений
24.07.2011, 14:18

Скажите а для чего нужен этот shortlink ?

Оставлю памятку как добавлять в заголовок информацию. Например, у меня есть представление новостей и рсс иконка для нее выводится только на странице этого представления. Для исправления этого недочета (нужен вывод иконки и на главной) я написал такую функцию. Пусть и топорно, но не знал как лучше получить рсс:

function templatename_preprocess_html(&$variables) {
  global $base_url;
  if ($variables['is_front']) {
    $element = array(
      '#tag' => 'link', // The #tag is the html tag - <link />
      '#attributes' => array( // Set up an array of attributes inside the tag
        'href' => $base_url . '/news.xml',
        'rel' => 'alternate',
        'type' => 'application/rss+xml',
        'title' => t('Новости'),
      ),
    );
    drupal_add_html_head($element, 'rssnews');
  }
}

А если shortlink будет выдавать тот же урл, что и canonical? Имею виду, в модуле Meta tags есть настройка где можно прописать [current-page:url], и не редактировать template.php. Как воспримут поисковики?

Петров Николай
10.11.2011, 16:32

А как ты сделал абсолютный путь для canonical?

<link rel="canonical" href="http://xandeadx.ru/blog/drupal/411" />

Ведь по дефолту в друпале относительный путь, ну, всмысле от корня сайта:

<link rel="canonical" href="/blog/drupal/411" />

Что-то не могу найти решения. На орге даже issue есть http://drupal.org/node/1104828
На д.ру тоже спрашивают и никто не знает.

Обновление ядра до последней версии не помогло, видать так и не пофиксили.

у меня же шестёрка, каноникал вывожу ручками

Петров Николай, в конфиге basePath какой?

А как избавиться от лишней строки каноникал?

Я как то что-то добавил, чтобы ко всем страницам прибавлялась строка каноникал (каждый документ считался каноническим, т.к. страницы дальше первой в галереи формируемой Media Gallery, не индексировались яндексом по причине не канонической страницы).

В итоге в коде страниц сейчас присутствуют 2 каноникал строчки, первая правильная и вторая от друпала по умолчанию.

Вопрос - как избавиться от второй строчки???

Валентин Будкин
27.02.2012, 00:24

А я наоборот его добавлял.

Global Redirect решает проблему дублей.

Петров Николай
10.08.2012, 14:57

Дополнение. Как убрать неправильный каноникал друпала:

	// убиваем каноникал друпала (с путем без домена), но оставляем каноникал модуля Page Title
	if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical' && isset($element['#attached'])) {
			unset($head_elements[$key]);
	}

этот кусок кода нужно вставить в форыч который написан в данной статье

to PVasili:
> в конфиге basePath какой?

settings.php:
$base_url = 'http://bestmaps.ru';

- это не помогает, с этим параметром каноникал все равно без домена:
/place/ostrov-palma-dzhumeira

а должен быть такой
http://bestmaps.ru/place/ostrov-palma-dzhumeira

Антон
16.12.2012, 13:32

А я сейчас поставил модуль Meta Tag (Drupal 7), не настраивал его, и у меня canonical полностью с протоколом доменом и алиасом.

И shortlink тоже полностью с протоколом, доменом и node/nid

Не знаю, может и до установки Meta Tag так было, я не заглядывал в head. Только обновляю сайт до D7.

Антон
16.12.2012, 13:39

В Global Meta Tag стоит
Canonical URL: [current-page:url:absolute]

Антон
16.12.2012, 15:46

Указанный код для удаления shortlink сработал на отлично, спасибо.

Добавить комментарий