Drupal, отключить путь - PullRequest
       6

Drupal, отключить путь

3 голосов
/ 07 декабря 2010

У меня есть сайт друпалов, использующий таксономию. Теперь Google проиндексировал пути таксономии, такие как: http://mysite.com/term/5865.

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

У кого-нибудь есть идеи, как это сделать?

Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 21 января 2011

Создайте модуль с именем kill_taxonomy, а затем добавьте следующий код в файл kill_taxonomy.module

<?php 
/**
 * Implementation of hook_menu_alter.
 */
function kill_taxonomy_menu_alter(&$items) {
 unset($items['taxonomy/term/%']);
}
?>

Включите модуль.

1 голос
/ 04 марта 2011

Кажется, это единственная тема, которую я смог найти по этой проблеме. Наличие автоматически сгенерированных путей таксономии / терминов в Drupal для пользователей и Google для поиска и индексации не всегда желательно. Так как же скрыть или отключить эти пути?

В дополнение к добавлению таксономии / term / в robots.txt, я попробовал решение Брайана для сброса $ items ['taxonomy / term /%'], и оно работает.

ОДНАКО, есть большая GOTCHA, о которой нужно знать - если вы используете расширенные форумы, RSS-каналы для категорий форумов перестают работать. Это плохо.

Я предполагаю, что Форумы используют таксономические термины Vocab для категорий форумов, и кажется, что RSS-канал использует массив $ items ['taxonomy / term /%'] для генерации канала.

Мое альтернативное решение:

Я уже использую Модуль изменения URL , чтобы определить custom_url_rewrite_inbound (), поэтому я просто добавил это условие:

//If path is taxonomy/term/% we force 404
if (preg_match("/^taxonomy\/term\/([0-9]+)(\/.*)?$/i", $path)) {
    header("HTTP/1.0 404 Not Found");
    die();
}

Чтобы использовать стандартную обработку 404 в Drupal, я добавил:

require_once './includes/bootstrap.inc';

и заменил заголовок («HTTP / 1.0 404 Not Found») на:

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
drupal_not_found();

Теперь мой сайт успешно отправляет любой запрос на таксономию / термин /%, И RSS-каналы все еще работают. Надеюсь, это поможет кому-то другому, имеющему эту проблему.

1 голос
/ 07 декабря 2010

Вы можете отключить все, удалив пункт меню с помощью hook_menu_alter. Путь, который вы хотите отключить: taxonomy/term/%term.

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

Все это должно происходить в пользовательском модуле.

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

0 голосов
/ 12 апреля 2011

Если кому-то захочется использовать решение Qyx URL Alter , им также может потребоваться включить символы пробела (\s) в свой код соответствия URL, как показано ниже:

if (preg_match("/^taxonomy\/term\/([0-9\s]+)(\/.*)?$/i", $path))

Это предотвращает разрешение URL-адресов, вызывающих несколько словарей, например таксономия / термин / 1 2 3

...