Book: Inhaltsverzeichnis als Standard- bzw. Pflichtangabe
am 15.09.2010 - 15:05 Uhr in
Hallo zusammen,
das Book-Modul ist ja sehr geeignet, um Dokumente etc. online zu verwalten.
Doch vermisse bislang eine kleine Einstellung:
Ist es möglich, die Angabe "Inhaltsverzeichnis" als Pflichtfeld zu deklarieren oder sogar dafür einen Standardfall anzugeben?
Wenn eine neue Buchseite erstellt wird, steht dieses Auswahlfeld "Buch" normalerweise auf "". Wenn aber eine Buchseite ohne Zuordnung zu einem Buch gespeichert wird, ist sie - logischerweise - in keinem der virtuellen Bücher auffindbar.
Darum möchte ich die Angabe von einem übergeordneten Buch zum Pflichtfeld machen.
Übrigens habe ich durch das Modul "nobookoutline" schon dafür gesorgt, dass die Auswahl vom Inhaltsverzeichnis nur bei Büchern angezeigt wird.
Weiß da jemand Rat?
- Anmelden oder Registrieren um Kommentare zu schreiben
Mit Rules könnte man das ggf.
am 27.09.2010 - 10:12 Uhr
Mit Rules könnte man das ggf. lösen, aber hier stellt sich das Problem, dass Rules gar nicht mit dem Book-Modul kommunizieren will.
Ich dachte, man könne einfach so etwas machen wie:
Wenn Inhalt gespeichert werden soll
? Inhalt hat Typ Book page
? Feld outline ist leer
--> setze outle zu XY
Das scheint aber leider nicht zu gehen, weil keine Aktionen für book in den Rules angezeigt werden.
In der Verwaltung der Inhaltstypen kann man die Angabe einer übergeordneten Seite im Inhaltsverzeichnis leider auch nicht als "erforderlich" definieren. :-(
Weiß wirklich niemand Rat?
am 27.09.2010 - 10:17 Uhr
Weiß wirklich niemand Rat? :-(
Oder wäre eine Möglichkeit, im Code selbst zu definieren, dass dieses Auswahlfeld "Inhaltsverzeichnis" nicht leer sein darf?
hook_form_alter
am 27.09.2010 - 10:40 Uhr
Hallo.
Nur ein kurzer schneller Hinweis: verwende ein eigenes kleines Modul mit einer Implementierung von [api:hook_form_alter].
Damit modifizierst Du dann das entsprechende Formularelement:
* ersten Eintrag des Schlüssels
#options
entfernen* Attribut
#required
aufTRUE
setzenInformationen dazu, wie die Struktur des Formulars aussieht, erhälst Du über das Modul [do:devel Devel] und die Funktion
dsm()
.hth,
Stefan
Hallo. Danke für den
am 28.09.2010 - 18:22 Uhr
Hallo.
Danke für den hilfreichen Hinweis! :-)
Ein eigenes Modul schreiben ist doch recht komplex, oder?
Ich habe - nur zum testen versteht sich - die Form mal im book.module geändert.
Dort steht nun ab Zeile 298:
if ($access) {
_book_add_form_elements($form, $node);
$form['book']['pick-book'] = array(
'#type' => 'submit',
<strong>'#collapsed' => FALSE,
'#required' => TRUE,</strong>
'#value' => t('Change book (update list of parents)'),
// Submit the node form so the parent select options get updated.
// This is typically only used when JS is disabled. Since the parent options
// won't be changed via AJAX, a button is provided in the node form to submit
// the form and generate options in the parent select corresponding to the
// selected book. This is similar to what happens during a node preview.
'#submit' => array('node_form_submit_build_node'),
'#weight' => 20,
);
Leider gibt's aber keinen sichtbaren Effekt von dieser Änderung. :-(
Ist das die falsche Stelle? Oder wo ist der Fehler? ^^