Comment masquer la page / le nœud par défaut?

22

Drupal est livré avec une page (qui est la page d'accueil par défaut) qui est affectée au chemin du nœud .

Comment éviter que les utilisateurs ne l'atteignent et les rediriger vers la page d'accueil réelle du site?

wiifm
la source
J'ai utilisé la solution proposée par @kiamlaluno pour rediriger le nœud vers un chemin différent.

Réponses:

17

Il n'y a pas de moyen facile de masquer cette page. Si vous ne l'utilisez pas, vous pouvez implémenter hook_menu_alter () , et soit le supprimer complètement, soit définir son rappel d'accès sur FALSE.

Berdir
la source
1
Voici la bonne réponse de Clive avec l'exapmle de code drupal.stackexchange.com/a/24133/6309
milkovsky
8

Créez un alias de chemin qui redirige depuis / node vers la page que vous souhaitez utiliser comme première page.

kiamlaluno
la source
1
Cela ne fonctionne pas pour moi avec le module d'alias d'URL, l'aliasing / node vers <front> ou index.php. J'essaie de transmettre juste /
John
5
Bizarre, j'ai fait / node à <front> et cela fonctionne bien.
Sean Bannister
Comme vous @john, l'interface utilisateur de l'aliasing ne me permet pas de passer à la première page. J'ai dû utiliser le module de redirection à la place.
Postscripter
6

Je préfère modifier le rappel de page de / node pour qu'il affiche une page d'erreur 404.
Cela montre toujours votre page 404 personnalisée lors de l'accès à / node.

function yourmodule_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';      
}
Marc Bachmann
la source
4
<?php
function MY_MODULE_menu_alter(&$callbacks) {
unset($callbacks['node']);
}
?>

ou ajoutez ceci à settings.php (URL entrante)

<?php
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  if ($path == 'node') {
    $result = ''; 
  }
}
?>
AyeshK
la source
2

J'ai utilisé le module de redirection : je viens d'ajouter une nouvelle redirection 301 de nodeà <front>.

ACD
la source
1

Semblable à la réponse de berdirs, j'ai le code suivant inclus dans un module qui fait partie d'une distribution personnalisée à partir de laquelle nous construisons:

function HOOK_menu_alter(&$items) {
  $items['node']['page callback'] = '_HOOK_empty_home';
}

function _HOOK_empty_home() {
  drupal_set_title('');
  return '';
}

De cette façon, je peux garder le chemin du «nœud» comme première page et utiliser le contexte pour positionner les blocs pour créer la première page requise.

Déchiffrer
la source
1

Vous pouvez créer une page mappée sur / node qui n'est pas publiée. Ainsi, les utilisateurs qui appellent ce chemin auront une page d'accès interdit

pitop
la source
1

La solution la plus simple pour moi a été de créer une page que je voulais être la page d'accueil et de définir l'URL sur / node. Ensuite, sous / admin / config / system / site-information, définissez la page d'accueil par défaut sur / node. Vous ne voyez jamais "/ node" dans l'URL à moins que quelqu'un ne l'ait réellement saisi. C'est rapide, facile et propre, à condition que vous souhaitiez définir l'URL de votre page d'accueil sur / node.

Jack McKenzie
la source
1

Vous pouvez créer une nouvelle page avec l'URL du nœud et les gens peuvent voir un message les redirigeant vers la page d'accueil ou choisir une catégorie de quelque chose.

Mario
la source
1

J'ai essayé plusieurs choses. Ensuite, pour Drupal 7 et 8, j'ai trouvé que c'était plus facile, sans écrire de code:

téléchargez et activez les modules node_page_disable, globalredirect et redirect.

(Remarque: le module node_page_disable redirige / node vers la page d'erreur 404 introuvable.)

puis ajoutez une redirection pour / node -> première page

Veuillez noter que la redirection redirige à la fois / node et / node / vers la page d'accueil.

et un article utile à lire: https://www.drupalaid.com/blog/3-things-you-should-hide

Kasım Burak Özdemir
la source
Il s'agit d'une vue en D8, elle drush @example.com views-disable frontpagesera donc désactivée. Obtiendra toujours un 404 jusqu'à ce que les autres choses soient faites.
colan
0

Créez un nœud, puis accédez à la configuration du site -> informations sur le site et définissez la page d'accueil sur le chemin du nœud. Donc, si c'est votre premier nœud, ce serait le nœud / 1.

Modifier: Par défaut, juste en créant un nœud, cette page disparaîtra si vous cochez 'promouvoir en première page'. L'étape d'information sur le site fera de ce nœud votre première page réelle.

Mike L.
la source
1
Vrai, mais /nodepeut toujours être atteint, il ne sera tout simplement pas visible par défaut
Laxman13
J'ai mal lu ce qu'il demandait. Qu'en est-il du module de redirection de chemin http://drupal.org/project/path_redirect ?
Mike L.
1
Malheureusement, la redirection de chemin ne vous permet pas de rediriger à partir de chemins existants. Il vérifie si le chemin à partir duquel vous essayez de rediriger est un chemin valide et si c'est le cas, la redirection n'est pas créée et un avertissement s'affiche.
Laxman13
Cool. Je ne l'ai pas utilisé depuis un moment, donc ce n'était pas positif. Merci!
Mike L.
0

Vous pouvez utiliser le module Règles pour vérifier l'URL avant d'afficher une page et rediriger les utilisateurs vers une autre page si vous le souhaitez.

  • Ajouter une règle avec un événement: le contenu sera affiché
  • Ajouter une condition: exécuter du code PHP personnalisé et vérifier le chemin
  • Ajouter une action: Rediriger la page et choisir le chemin vers lequel vous souhaitez rediriger
Laxman13
la source
Cela n'introduit pas seulement de graves pénalités de performances, il doit être considéré comme très dangereux. "Exécuter un PHP personnalisé" ne devrait jamais être suggéré à moins que tous les effets secondaires et inconvénients soient très bien connus. -1 pour ça.
berkes
@berkes Je suppose que c'est parce que les règles effectueront une vérification à chaque chargement de page et donc ralentiront le site? Pourquoi est-ce que "Exécuter un php personnalisé" est toujours mal vu? Évidemment, ce n'est pas bon pour l'utilisateur final, mais y a-t-il également des inconvénients pour les développeurs? Désolé si longtemps, j'ai travaillé très dur pour être le meilleur possible avec Drupal et apprendre les "tenants et aboutissants". (Pourrait ajouter la deuxième partie en tant que propre question si nécessaire)
Laxman13
veuillez considérer un nouveau Q "Quels sont les inconvénients de l'utilisation de PHP" personnalisé "" avec quelques exemples de zones (blocs, arguments de vues, filtre php, etc.) où cela peut être discuté?
berkes
0

Question populaire d'il y a quelques années, avec déjà quelques réponses intéressantes. Cependant, devinez quoi: "Ces jours-ci, il y a un module pour cela ... en fait même deux!" (non mentionné dans aucune des réponses précédentes).

Lisez la suite pour plus de détails ... (les citations proviennent de leurs pages de projet) ...

Administrateur de la page du nœud (D6 ou D7):

Ce module ajoute un panneau de paramètres d'administration pour gérer l' accès aux pages / nœuds . Une fois activé, il existe trois configurations possibles:

  • Core - Drupal core gèrera l'accès aux pages de nœuds comme d'habitude: tous les utilisateurs avec l'autorisation 'access content'
  • Désactivé - Personne ne pourra accéder à / node. Il renverra «Page non trouvée» (404).
  • Par autorisation - L'accès sera géré par une nouvelle autorisation: «accéder à la page du nœud»

Désactivation de la page du nœud (D6 ou D7, mais uniquement pour les versions rc2):

Permet un accès facile à l'interface utilisateur et la désactivation du chemin / nœud lorsqu'il n'est pas utilisé. Cela a été inspiré par une considération de sécurité dans le module de contrôle de production .

Pierre.Vriens
la source
-1

la meilleure façon est de cacher les nœuds de la fonction template_preprocess_page

function template_preprocess_page(&$variables) {
    if ($variables['is_front'] == 1) {
        if (isset($variables['page']['content']['system_main'])) {
            unset($variables['page']['content']['system_main']);
        }
    }
}
Serg Kushch
la source