Submitted by ced_sdml on
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
<div id="select-page-enfant"> </div>
<?php
if($selected_child) :
?>
<?php
print $selected_child;
?><?php
endif;
?>
Voila vous avez un select des types autorisés.
Merci de me donner votre avis sur cette modif.
J’ai essayé de comprendre :)
Permalien Soumis par benfarhat le 24 Avril, 2011 - 14:12
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
Permalien Soumis par mdupont@drupal.org le 26 Avril, 2011 - 09:22
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 :
merci pour ces remarques,
Permalien Soumis par ced_sdml le 26 Avril, 2011 - 15:48
merci pour ces remarques, j'ai fait ça un peu à la truelle.
C'était un premier jet, je vais voir soit pour faire un patch soit du coté de BookMadeSimple que je n'avais pas vu.
++++