2010-06-14 20 views
1

Je suis un débutant qui a besoin de l'aide de Drupal conseils ...Création d'une fonctionnalité « ON/OFF Nouvelles Liens » pour un bloc créé avec Vue sur le module

J'ai un bloc de la liste des nouvelles à la page d'accueil, créé avec Vue sur le module. Il liste tous les titres et le lien des nouvelles ajoutées. Tout est cool jusqu'à présent. Maintenant, j'ai besoin d'ajouter une option ON/OFF au côté admin pour le bloc de nouvelles de la page d'accueil. Lorsque le réglage est sur ON, il fonctionnera comme il est. Quand il est désactivé, seuls les titres seront listés sans lien vers la page de détails des actualités. Alors, où dois-je ajouter cette option ON/OFF? J'ai seulement ajouter/modifier/supprimer des pages pour chaque nouvelles, il n'y a pas de page de nouvelles commune pour ajouter une telle option. Dois-je créer une page d'administration avec une telle option ON/OFF? Aussi, je pense que je dois créer une table db pour garder ce statut ON/OFF. et le contrôle de cette valeur au niveau du bloc d'accueil, si elle est 1 ou 0, et afficher des liens selon la valeur db:/

il semble trop long chemin

  1. Créer table db
  2. Créer une page avec ON/OFF option
  3. codes php ajouter la mise à jour db pour le choix admin
  4. obtenir la valeur db dans le bloc page d'accueil pour afficher des liens, etc.

y a-t-il une façon plus courte et meilleure de faire ce dont j'ai besoin?

Apprécier aide tellement !!! Merci beaucoup!!

+0

on/off pour l'ensemble du site ou pour chaque noeud? –

+0

pour le bloc, que j'ai créé avec View Module, répertoriant tous les titres de nouvelles. –

Répondre

3

Vous n'avez certainement pas besoin de créer des tables de base de données pour quelque chose comme ça. Si vous voulez une page d'administration basique, vous devrez écrire un module simple. Suivez d'abord ce guide quick start pour configurer un module de base. (Remarque: vous n'avez pas besoin d'ajouter ces requêtes de base de données dans votre fichier .install)

Une fois que vous avez votre module activé ...

1) Dans votre fichier mynewmodule.module, ajoutez une entrée de menu dire Drupal où votre page d'administration est accessible:

 

function mynewmodule_menu() { 
    return array(
    'admin/settings/mynewmodule' => array(
     'title' => 'My New Module', 
     'description' => 'Change settings for news display.', 
     'page callback' => 'drupal_get_form', 
     'page arguments' => array('mynewmodule_admin_form'), 
     'acces callback' => 'user_access', 
     'access arguments' => array('administer site configuration'), 
    ), 
); 
} 

2) également dans votre fichier mynewmodule.module, ajoutez une fonction pour créer la forme que vous venez référencé dans l'entrée de menu:


function mynewmodule_admin_form() { 
    $form = array(); 
    $form['mynewmodule-on-off-switch'] = array(
    '#type' => 'checkbox', 
    '#title' => t('Enable news links'), 
    '#description' => t('Control whether news items are linked to stories'), 
    '#default_value' => variable_get('mynewmodule-on-off-switch', 1), 
); 
    return system_settings_form($form); 
} 

3) Videz votre cache pour que Drupal reconnaisse votre page d'administration (vous devez effacer chaque fois que vous apportez des modifications à mynewmodule_menu()). Vous pouvez le supprimer ici: admin/settings/performance

4) Consultez admin/settings/mynewmodule pour voir votre formulaire d'administration. La façon dont cela fonctionne est lorsque vous enregistrez la configuration, Drupal va enregistrer une variable appelée "mynewmodule-on-off-switch" (même nom que la clé de tableau dans le formulaire) à la table de variables dans la base de données. Vous pouvez obtenir cette valeur n'importe où en utilisant variable_get().

+0

wowowo! homme! tu viens de me sauver la vie !! ça fonctionne parfaitement! appréciez tellement pour votre poste clairement détaillé! J'adorerais t'acheter une bière froide, où es-tu? sérieusement :) –

+0

J'ai aussi utilisé le module http://drupal.org/project/views_customfield pour ajouter mes conditions php :) fonctionne maintenant très bien :) seulement 1 problème restant. Je ne peux pas voir les paramètres d'autorisation du module sur la page des autorisations:/Je dois donner l'accès à l'utilisateur admin pour le client:/comment puis-je contrôler les paramètres d'autorisation pour le module personnalisé? –

+0

Content de vous aider. Si vous vous trouvez en Thaïlande, je vais vous prendre sur l'offre. Pour configurer des autorisations personnalisées, vous devez utiliser hook_perm() en ajoutant une fonction mynewmodule_perm() à votre module et en définissant une nouvelle autorisation. Ensuite, dans mynewmodule_menu(), vous utiliserez cette permission comme callback d'accès. – wynz

1

créer un formulaire dans admin/settings/on-off-switch. sur la fonction de soumission de formulaire, variable_set ('on/off switch', $ value) (essayez d'utiliser des booléens pour la valeur). puis sur le thème de la vue, recherchez variable_get ('on/off switch', $ default_value) avant d'imprimer les liens.

+0

merci pour la réponse. Je voulais dire quand j'ai écrit que je suis un débutant :) Vous dites à propos de la création de formulaire à admin/settings/on-off-switch. créer cela avec n'importe quel module comme CCK, ou autre chose? Pouvez-vous s'il vous plaît être un peu plus dans les détails car voici un mannequin drupal:/appréciez votre temps en donnant cela !!! –

1

La faiblesse de Drupal, IMHO, est le nombre de paramètres d'administration à configurer pour obtenir un site, et vous ne voulez pas ajouter à cela.

Ce que je ferais, c'est que la vue expose deux blocs différents, l'un avec la vue complète, l'autre avec la vue abrégée. Ensuite, toute la configuration peut être réalisée via l'interface de bloc, qui sera beaucoup plus flexible à long terme. Par, par exemple: utiliser des caractères génériques ou du code php pour la visibilité des blocs; montrer des vues différentes aux utilisateurs avec des rôles différents; permettre aux visiteurs de contrôler quelle vue ils voient; exposer les deux vues au moteur de thème plus proprement; et l'intégration avec tout autre module fonctionnant avec des blocs.

+0

Je suis brouillé sur l'objectif d'artmania, mais cela pourrait être la meilleure option. Cela améliorerait également la mise en cache. Je serais plus intéressé à garder un autre élément de menu hors de la liste déroulante d'administration. – Grayside