[Gelöst] Printer, e-mail and PDF - Pflichtfeld entfernen, aber wie?
am 26.01.2012 - 14:10 Uhr in
Hallo,
ich arbeite mit Printer, e-mail and PDF versions. Im Formual für das versenden einer Seite ist das Feld Messages als Pflichtfeld angegeben. Weiß jemand wie und on, wo ich das rausnehmen kann?
Danke vorab.
Manuela
PS: hab das Problem selber lösen können. Für alle die mal an der gleichen Stellen sind. Im Modul gibt es die Datei print_mail.inc. Dort einfach an der ensprechenden Stelle das " '#required' => TRUE, " rausnehmen. Dann geht es.
- Anmelden oder Registrieren um Kommentare zu schreiben

was machst du denn, wenn z.B.
am 27.01.2012 - 17:21 Uhr
was machst du denn, wenn z.B. das Modul in einem halben Jahr oder so aktualisiert wird.
Dann wird deine Änderung überschrieben und du fragst dich...
1. Wieso klappt das nicht mehr, warum ist das wieder ein Pfichtfeld ?
2. Wie habe ich seinerzeit das Problem gelöst ?
nun eine "richtige" Lösung:
nutze den form_alter - Hook um die Form (bei dir die print_mail_form) in der template.php zu überschreiben und setze dort das #required auf false.
und schon bist du davor gefeit, falls es mal ein Update des Moduls gibt.
nur so ein Tipp für dich
Nie also absolut nie die Modul-Dateien irgendwie verändern, sondern immer die Funktionen z.B. in der template.php überschreiben.
Das erspart dir eine Menge Ärger, denn wenn du das nicht tust, dann wird die Seite über kurz oder lang unwartbar (tolles Wort, nicht wahr)
lieben Gruß
Berthold Lausch
Das verstehe ich nicht
am 30.01.2012 - 10:23 Uhr
Das verstehe ich nicht ganz...ich habe nur eine template-Datei. print.tpl und da kann ich nur angeben, welcher Inhalt rausgeworfen werden soll??
Eine andere Frage dazu: Ich möchte wenn ich im Contentbereich bin eine anderen Inhalt sowohl für Print als auch Mail versenden haben. Als z.B. in einem View. Sprich aktuell ist für Print und mail senden eingestellt print Content. Ich möchte aber beim Mailversand nicht den gesamten Conten node-types versenden sondern nur einen Teil davon.
ist es möglich für Print und Mail verschiedene Templates zu definieren? Wenn ja, wo mache ich das? Ist es auch möglci für bestimmte Node-Typs und Views unterschiedlichen Contenr für print und Mail zu definieren?
Vielleicht sollte ich kurz erklären was ich machen möchte. Ich habe nen Contenttyp angelegt. Dort gebe ich verschiedene daten ein. rausgeworfen wird ein Datenblatt. Dieses möchte ich per Mail versenden und auch drucken können, jedoch nicht mit dem gleichen Inhalt der angezeigt wird, sondern nur mit einem Teil davon.
Zu den Contentyp habe ich dann einen View. Dort sind alle Datensätze in einer Tabellen. Diese möchte ich wiederrum ebenfalls versenden oder Drucken können. Allerdings sort mit dem gesamten Inhalt.
Vielleicht weiß jemand wie das gehen könnte. Oder es gibt sogar ein Modul dafür???
Noch mal zum Ausgangspunkt.
am 30.01.2012 - 10:55 Uhr
Noch mal zum Ausgangspunkt. In vom System oder Modulen gelieferten Formularen wird nie direkt geändert. Das macht man in einem eigenen (Mini-) Modul, indem man unter Benutzung des hook_form_alter den Form-Array vor der Ausgabe des Formulars ändert. Das ist der innerhalb von Drupal vorgesehene Weg.
Für die weiteren Fragen machst Du besser einen neuen Thread auf, den nach dem [gelöst] werden sich nicht mehr so viele hierher verirren.
Beste Grüße
Werner
das heißt ich müsste dazu ein
am 30.01.2012 - 11:07 Uhr
das heißt ich müsste dazu ein eigens Modul schreiben?
Und dann die nächste Frage.
am 30.01.2012 - 11:12 Uhr
Und dann die nächste Frage. Falls ja, wie komme ich dazu, dass dieses Modul dann aufgerufen wird und mir die entsprechende Ausgabe bringt?
Ja, Du mußt ein eigenes Modul
am 30.01.2012 - 11:20 Uhr
Ja, Du mußt ein eigenes Modul schreiben. Durch das Implementieren von hook_form_alter (das Wort hook wird dabei durch den Namen Deines Moduls ersetzt) registriert sich Dein Modul in Drupal. Vor der Ausgabe eines Formulars ruft Drupal jetzt alle Module auf, die hook_form_alter implementiert haben und übergibt die Form-ID und das Form-Array. Die Module prüfen dann, ob es sich um ein zu änderndes Formular handelt und liefern das geänderte Form-Array zurück. Erst danach wird das Formular gezeigt.
Beste Grüße
Werner
mmh...dann wird das wohl so
am 30.01.2012 - 12:12 Uhr
mmh...dann wird das wohl so nix, hab so was noch nie gemacht und seh da bisher nicht durch :-(
Hier mal ein Beispiel für
am 30.01.2012 - 12:32 Uhr
Hier mal ein Beispiel für Änderungen am Search-Block unter Benutzung der Funktion hook_form_FORM_ID_alter(). Das Modul heißt weitblick_formchanges und das ist die Datei weitblick_formchanges.module. Es wird der Submit-Button in ein Bild geändert.
<?php
/**
* Implementation of hook_form_FORM_ID_alter().
* Chages to the search block form
*/
// ID = search_block_form
function weitblick_formchanges_form_search_block_form_alter (&$form, &$form_state) {
$form['submit'] = array(
'#type' => 'image_button',
'#name' => 'go',
'#id' => 'go',
'#value' => t(' '),
'#src' => drupal_get_path('theme', 'weitblick') . '/images/btn_form_go.jpg',
);
}
Beste Grüße
Werner
wäre das dann so richtig ?
am 30.01.2012 - 14:09 Uhr
wäre das dann so richtig ? Und die Datei lege ich dann im entsprechnden´Ordner bei Prints ab oder muss ich einen neuen Ordner erstellen?
<?php
/**
* Implementation of hook_form_FORM_ID_alter().
* Changes to the message block form
*/
// ID = print_mail_form
function sending_form_search_block_form_alter (&$form, &$form_state) {
$form['txt_message'] = array(
'#type' => 'textarea',
'#title' => t('Your message'),
'#rows' => 6,
'#required' => False,
);
}
Du legst einen neuen Ordner
am 30.01.2012 - 14:43 Uhr
Du legst einen neuen Ordner an unter sites/all/modules. Ich nenne den jetzt mal meinmodul. In dieses Ordner kommen die Dateien meinmodul.info und meinmodul.module. Wenn die Form, die Du ändern willst jetzt die ID print_mail_form hat, dann muß die Funktion im .module-File meinmodul_form_print_mail_form_alter heißen. Wie das Textfeld heißt, habe ich jetzt nicht nachgesehen, aber gehen wird mal davon aus, daß deine Angabe "txt_message" richtig ist. Dann brauchst Du nur noch eine Zeile Code in der Funktion
<?phpfunction meinmodul_form_print_mail_form_alter (&$form, &$form_state) {
$form['txt_message']['#required'] = False;
}
Beste Grüße
Werner
oh Werner, da habe ich dir ja
am 30.01.2012 - 15:12 Uhr
oh Werner, da habe ich dir ja was angezettelt :-)
liebe Grüße
Berthold
So hab das jetzt mal
am 30.01.2012 - 15:39 Uhr
So hab das jetzt mal probiert.
1) ordner angelegt: sendingdogs
2) Info-Datei: sendingdogs.info
Mit Inhalt:
name = "Sending Dogs"
description = "Send the Doge-Page per E-Mail."
version = "6.x"
package = "Mini modules"
3) Modul-Datei: sendingdogs.module
Mit Inhalte:
<?php
function sendingdogs_form_print_mail_form_alter (&$form, &$form_state) {
$form['txt_message']['#required'] = False;
}
Aber leider finktioniert das nicht???
Hast Du denn Dein neues Modul
am 30.01.2012 - 15:51 Uhr
Hast Du denn Dein neues Modul auch aktiviert? Das muß wie jedes andere Modul auch behandelt werden.
Beste Grüße
Werner
Kann das Modul nicht aktiviere, da er mir anzeigt:
am 30.01.2012 - 16:00 Uhr
Kann das Modul nicht aktiviere, da er mir anzeigt: This version is incompatible with the 6.22 version of Drupal core.
Dann ist Dein .info-File
am 30.01.2012 - 16:12 Uhr
Dann ist Dein .info-File fehlerhaft. Das muß nicht version = "6.x" heißen sondern core = 6.x
Bei mir sieht der funktionierende .info-File so aus
; $Id$name = weitblick_formchanges
description = Change certain forms via hook_form_FORMID_alter
package = wla
core = 6.x
Beste Grüße
Werner
Wau, ich bin begeistert. Es
am 31.01.2012 - 09:23 Uhr
Wau, ich bin begeistert. Es hat tatsächlich geklapp und ich hab ne Menge dazu gelernt.
Nun noch die Frage:
Ich will ja nun, wenn das Formular abgeschickt wird einen speziellen Inhalt von mir definiert versenden. Aktuell greift das Modul ka auch die tpl zu, wo auch Druckfunktion, PDF betroffen sind. In der .tpl ist pint = content definiert. Für die Druckfunktion und Pdf soll das auch so bleiben. Allerdings möchte ich für einen bestimmten Content-Typ den Inhalt nicht als kompletten Conten sondern nur ein Teil des Contens versenden.
Das betrifft allerdings auch nicht alle Contentypeb. Sondern ich möchte das nur für einen bestimmten tun.
Gibt es dazu ein Modul oder müsste ich da was eigenes schreiben. Ist wahrscheinlich sehr schwer umzusetzen?
Ich habe im Modul
am 31.01.2012 - 12:13 Uhr
Ich habe im Modul nachgesehen, und Du kannst speziell für das Print-Modul ein Node-Template aufsetzen, das dann print_node.tpl.php heißen muß. Es geht sogar noch spezieller mit print_node_html.[node-type].tpl.php wobei Du [node-type] durch den speziellen Namen des Node-Types (Maschinen-Namen) ersetzen mußt. In jedem Fall handelt es sich um einen Node-Template, indem Du den kompletten Node vorliegen hast und damit selbst bestimmen kannst, was Du ausgeben willst. Du mußt Dich dazu aber in die Logik eines Node-Templates erst einarbeiten.
Ein Modul für Deine Wünsche durfte es kaum geben.
Beste Grüße
Werner
Danke Dir, dann schaue ich
am 31.01.2012 - 13:08 Uhr
Danke Dir, dann schaue ich mir mal die Logik dazu an und falls ich nicht weiterkomme muss ich eben fragen :-)
Grüße,
Manuela