2010-12-07 31 views
3

J'ai un site web drupal utilisant la taxonomie. Maintenant, google indexé les chemins de taxonomie comme: http://mysite.com/term/5865.Drupal, désactiver le chemin

Maintenant, la plupart des pages de taxonomie ne devraient pas être accessibles, et je veux supprimer le chemin, mais je ne trouve pas comment le faire n'importe où.

Est-ce que quelqu'un a une idée de comment faire cela?

Merci d'avance.

Répondre

3

Créer un module appelé kill_taxonomy puis ajoutez le code suivant au fichier kill_taxonomy.module

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

Activez le module.

+1

Juste une note - Si vous utilisez i8ntaxonomy, son poids dans la table système est supérieur à la valeur par défaut de 0, ce qui signifie qu'il va probablement écraser vos changements. Pour résoudre ce problème ... ajoutez un hook d'installation à kill_taxonomy.install qui exécute la requête ... db_query ("update system set poids = 10 où name = 'kill_taxonomy' et type = 'module'"); –

1

Vous pouvez tout désactiver en supprimant l'élément de menu avec hook_menu_alter. Le chemin que vous souhaitez désactiver est taxonomy/term/%term.

Une autre option consiste également à ajouter un rappel d'accès personnalisé à cet élément de menu. Ensuite, vous pouvez contrôler quels termes sont ouverts et lesquels sont restreints.

Tout cela devrait se produire dans un module personnalisé.

Une troisième option consiste à utiliser des vues ou des panneaux pour remplacer la page de taxonomie standard et ajouter des restrictions/restrictions d'accès pour filtrer les termes indésirables.

+0

Est-ce que .htacces et (robot.txt) ne sont pas une bonne alternative? – Nealv

+0

@Nealv, vous ne devriez pas être le plus accessible, ce qui signifie que certains devraient être accessibles. Le faire avec Drupal offre une flexibilité et un contexte qui n'est pas disponible dans 'robot.txt' ou' .htaccess'. – googletorp

1

Cela semble être le seul thread que j'ai pu trouver à propos de ce problème. Disposer des chemins de taxonomie/terme générés automatiquement par Drupal pour les utilisateurs et google pour trouver l'index & n'est pas toujours souhaitable. Alors, comment cacher ou désactiver ces chemins? En plus d'ajouter la taxonomie/term/à robots.txt, j'ai essayé la solution de Bryan pour supprimer $ items ['taxonomy/term /%'] et ça marche. Cependant, il y a un gros GOTCHA à connaître - Si vous utilisez des forums avancés, les flux RSS pour les catégories du forum cesseront de fonctionner. C'est mauvais. Je pense que parce que Forums utilise des termes de vocabulaire de taxonomie pour les catégories de forum, et il semble que le flux RSS utilise le tableau $ items ['taxonomy/term /%'] pour générer le flux.

Ma solution de rechange:

J'utilise déjà URL Alter Module pour définir custom_url_rewrite_inbound(), donc je simplement ajouté cette condition:

//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(); 
} 

Pour utiliser la gestion par défaut de Drupal 404, j'ai ajouté:

require_once './includes/bootstrap.inc'; 

et remplacé l'en-tête ("HTTP/1.0 404 Not Found") avec:

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); 
drupal_not_found(); 

Maintenant, mon site 404s toute demande de taxonomie/terme /%, ET les flux RSS fonctionnent encore. J'espère que cela aidera quelqu'un d'autre à avoir ce problème.

0

Si quelqu'un veut utiliser Qyx's URL Alter solution, ils pourraient aussi à inclure des espaces (\s) caractères dans leur code correspondant URL, comme indiqué ci-dessous:

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

Cela empêche urls qui appellent plusieurs vocabulaires de résoudre, comme taxonomy/term/1 2 3