2011-05-02 2 views
3

Je construis un système d'administration sur 7. Je drupal ne pas permettre aux utilisateurs anonymes de visualiser le contenu publié (pour des raisons évidentes), mais je voudrais leur permettre de Voir juste une seule page, la page d'accueil, qui a un message de bienvenue et le formulaire de connexion. Comment puis je faire ça?Drupal 7: autoriser uniquement la page d'accueil aux visiteurs anonymes

Répondre

3

Je construis généralement un petit module pour les sites qui nécessitent des fonctionnalités personnalisées non fournies par des modules que j'utilise, dans ce cas, vous pouvez simplement construire un module avec ce qui suit dans le fichier du module.

mymodule_menu(){ 
    $items['homepage']=array(
    'title' => 'Home' 
    'page callback' => 'mymodule_homepage', 
    'access callback' => true, 
    'type' => MENU CALLBACK, 
); 
    $items['homepage/edit']=array(
    'title' => 'Edit Homepage' 
    'page callback' => 'drupal_get_form', 
    'page arguments' => array('mymodule_homepage_edit'), 
    'access arguments' => array('administer site configuration'), 
    'type' => MENU CALLBACK, 
); 
} 
function mymodule_homepage(){ 
    return variable_get('homepage_content',''); 
} 
function mymodule_homepage_edit(){ 
    $form['body']=array(
    '#type' => 'textfield', 
    '#title' => 'Body', 
); 
    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Submit 
); 
} 
function mymodule_homepage_edit_submit($form, $form_state=array()){ 
    variable_set('homepage_content',$form_state['values']['body']); 
} 

vous avez besoin d'un fichier pour le module .info avec l'aide de Drupal, sans fioritures, assez explicite si vous ouvrez juste un de plus un autre module pour voir comment ils regardent.

L'avantage pour la manipulation de cette façon est la flexibilité d'ajouter d'autres fonctionnalités personnalisées à ce même module sur la ligne.

+0

Je ne sais pas comment faire un module, mais je vais essayer. Merci beaucoup! – Janoma

+1

il est assez facile vraiment, il suffit de créer un dossier avec le nom que vous souhaitez donner votre module ... dire « MySiteMod », puis créez un fichier dans ce dossier appelé « MySiteMod.module », puis copiez le code ci-dessus INTHE ce fichier entre une balise '', en remplaçant toutes les instances de" mymodule "par" MySiteMod "puis en créant un autre fichier appelé" MySiteMod.info ", et comme je l'ai dit, regardez un autre fichier info modules pour voir comment ils sont écrits, besoin des premières lignes qui définissent le nom et le numéro de version, etc. – Trey

2

J'aime la réponse de Trey, mais vous pouvez le faire encore plus simplement.

function mymodule_menu(){ 
    $items['homepage']=array(
    'title' => 'Home', 
    'page callback' => 'mymodule_homepage', 
    'access callback' => TRUE, 
); 
} 
function mymodule_homepage(){ 
    drupal_set_title(t('Some welcoming title')); 
    return array(); 
} 

Cela vous donne une page blanche pour tous les utilisateurs. Créez ensuite un bloc affiché uniquement pour les utilisateurs anonymes et uniquement sur la page d'accueil (""). Créez d'autres blocs pour d'autres rôles si nécessaire. De cette façon, vous n'avez besoin d'aucune commande spéciale pour l'éditer.

Merci Trey pour confirmer qu'il n'y a aucun moyen de le faire de base. (Vous pouvez utiliser l'accès au nœud ou les modules de première page, mais je ne les ai pas essayés car ils sont si légers.)

0

Je pense que this module peut fournir ce dont vous avez besoin. Avec elle, vous pouvez activer les paramètres d'accès par contenu, de sorte que vous pouvez personnaliser l'accès pour chaque nœud de contenu.

Questions connexes