Message d'avertissement

The subscription service is currently unavailable. Please try again later.

[Résolu] amelioration page enfant de book

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

J ai eu besoin de pouvoir sélectionner dans mon book le type de la page enfant a insérer.

j ai effectuer les modif suivante:

  • dans le fichier book.module :
    -Dans la fonction template_preprocess_book_navigation :
    ajout de -> $variables['selected_child'] = select_enfant_form();

    • création des fonctions suivante :

function select_enfant(&$form_state) {
$options = variable_get('book_allowed_types', '');

foreach ($options as $key =>$value){
$req = db_fetch_object(db_query("SELECT name FROM {node_type} WHERE type='%s'",$value));
$val[$key] = $req->name;
}

$form = array();

$form['select'] = array(
'#type' => 'fieldset',
'#title' => t('Ajouter un contenu à un dossier '),
'#collapsed' => FALSE,
'#collapsible' => TRUE,
);

$form['select']['listes-pages'] = array(
'#type' => 'select',
'#default_value'=> '',
'#options'=>$val,
);

$form['select']['recup-mlid'] = array(
'#type' => 'hidden',
'#value' => $_GET['q'],
);

$form['select']['enfant-submit'] = array(
'#type' => submit,
'#value' => t('Ajouter'),
);

return $form;

}

function select_enfant_form(){
return drupal_get_form('select_enfant');
}

function select_enfant_submit($form,&$form_state) {
$node_id = explode("/", $form_state['values']['recup-mlid']);
$req = db_fetch_object(db_query("SELECT * FROM {book} WHERE nid='%d'",$node_id[1]));

$parent=$req->mlid;

$ops = variable_get('book_allowed_types', '');
$type = $form_state['values']['listes-pages'];
$test = str_replace("_", "-", $ops[$type]);

drupal_goto("node/add/".$test,"parent=".$parent);

}

Appel de ma variable dans book-navigation.tpl.php


<?php
 
if($selected_child) :
?>

<div id="select-page-enfant">

<?php
 
print $selected_child;
?>

</div>

<?php
 
endif;
?>

Voila vous avez un select des types autorisés.

Merci de me donner votre avis sur cette modif.

Forum : 
Version de Drupal : 
Tags : 

J'ai essayé de comprendre :) et c'est difficile quand on est que simple lecteur!
donc à ce que j'ai compris tu veux changer/améliorer un module core?
donc mon avis serait qu'il est préférable de plutot faire un patch (dans lequel tu inscris les modifications entre le module d'origine et le tiens)et éviter de toucher au core (pense à quand tu mettras à jour drupal tu risqueras d'effacer tes modifications vu que la nouvelle version du module/core book remplacera la tienne et ca fera très mal a ton site).

Plus d'info ici: http://drupal.org/patch/create

Ce que tu fais est hautement déconseillé. Une des règles de base du développement sous Drupal est de ne pas toucher aux modules Core : il faudra refaire le patch à chaque mise à jour, tu peux dérégler le fonctionnement d'autres modules qui s'appuient sur les modules Core, etc.

Tu as donc 2 possibilités pour modifier ce comportement :

  • Tout d'abord regarder s'il existe un module existant qui correspond à tes besoins, par exemple http://drupal.org/project/BookMadeSimple
  • Sinon, créer ton propre module, à part, qui va pouvoir modifier la fonction de template en implémentant le hook qui va bien.