Як видалити певні метатеги?


18

Як я можу видалити ці теги зі своїх сторінок у Drupal 7?

<link rel="shortlink" href=" .... " />
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
<link rel="canonical" href="...." />

Оновлення : у мене є код для template.php, який видаляє генератор і канонічні теги.

function program_html_head_alter(&$head_elements) {
  unset($head_elements['system_meta_generator']);
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
      unset($head_elements[$key]); 
    }
  }
}

Чи може хтось додати щось, щоб видалити тег короткого посилання?


1
Все виглядає добре, але навіщо брати канонічне? Це насправді корисно.

Відповіді:


11

Це відображається у html.tpl.php у змінній $ head. $ head додається до змінних у template_process_html за допомогою drupal_get_html_head () . У цій функції ви бачите, що виклик___________________________________________terter () .

Ви можете їх видалити.

Однак зауважте, що ці посилання можуть бути важливими для SEO, щоб уникнути того, що пошукова система вважає, що у вас є дублікат вмісту на вашому сайті, якщо, наприклад, вузол доступний через node / nid та псевдонім.


хм, я знаходжу його, але все ще не можу його видалити :) Я думаю, що я повинен навчитися незабаром php :) Я знаходжу код, який можна додати до template.php (у шаблоні) та код видалити рядок "Генератор". функція program_html_head_alter (& $ head_elements) {unset ($ head_elements ['system_meta_generator']); }

але у мене все ще є проблема з 2 додатковими рядками, які мені потрібно видалити. Це не добре для seo, якщо у вас є власна домашня сторінка та канонічна, надайте URL не для основного домену, а лише для підсторінок ... те саме із короткою посиланням - чому хтось може бачити, що в цій статті є додаткова адреса з /node/...stupid ідеєю додати ці рядки до d7

Отже, якщо у мене є нова установка D7 з чистими URL-адресами та патаутом, канонічне посилання URL буде встановлено автоматично?
Енді

Має бути, так.
Бердір

5

У файлі template.php я використовую таку функцію:

/**
 * Used to remove certain elements from the $head output within html.tpl.php
 *
 * @see http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_html_head_alter/7
 * @param array $head_elements
 */
function YOUR_THEME_NAME_html_head_alter(&$head_elements) {
    $remove = array(
        'system_meta_generator',
        'metatag_canonical',
        'metatag_shortlink'
    );

    foreach ($remove as $key) {
        if (isset($head_elements[$key])) {
            unset($head_elements[$key]);
        }
    }

    // Use this loop to find out which keys are available.
    /* -- Delete this line to execute this loop
    echo '<pre>';
    foreach ($head_elements as $key => $element) {
        echo $key ."\n";
    }
    echo '</pre>';
    // */
}

Це не спрацювало для мене - 'metatag_canonicalі 'metatag_shortlinkне існує як індекси $head_elements(це в Drupal 7). Відповідь, яку дав @Levente, спрацювала чудово.

4

Я також вирішив коротке посилання, змінивши ваш код.

Хтось міг би правильно привести його в дію, тому що я не знаю, як правильно його поставити, а також не матиме побічних ефектів таким чином чи ні. Однак змушує небажані зв’язки зникати з голови.

function nameof_mytheme_html_head_alter(&$head_elements) {
  unset($head_elements['system_meta_generator']);
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
      unset($head_elements[$key]);
    }

    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'shortlink') {
      unset($head_elements[$key]);
    }
  }
}

Так, це ставлення м'ясника до канонічних зв’язків, але поки не з’явиться кращого вибачення, це все ще краще.

ТО ЧОМУ: вам потрібні канонічні посилання, що відображаються ТІЛЬКИ на дублюючих сторінках, ті, що не є бажаною версією. Оригінальні сторінки слід залишити в спокої: жодна канонічна не повинна відображатися там! Ось чому я все ще довкола.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.