[gelöst] Image Upload in der Node-Edit-Form manipulieren! Welche Funktion?
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 05.07.2014 - 15:18 Uhr in
Hallo Freunde,
da ich kein Coder bin, habe ich hier gerade Probleme.
In einem Node gibt es ein Image-Field ... bei diesem Image-Field ist der Alt-Text aktiviert sodass er in der Node-Add/Edit-Form angegeben werden kann. Ich möchte das Formelement des Alt-Textes aber nur anzeigen/ausgeben wenn der bearbeitende User der Admin ist (also ich), normale User die die Form bearbeiten, sollen dieses Alt-Text-Element nicht angezeigt bekommen (in der Edit-Form) und können es somit auch nicht ausfüllen/ändern. Per Permissions kann man dies leider nicht steuern.
Ich habe nun gerade mit hook_form_alter versucht das Alt-Text-Element mit unset auszublenden aber leider funktioniert das nicht. Das muss doch vorm rendern gemacht werden oder nicht? Ich weiß leider nicht wo ich da ansetzen muss.
Kann mir bitte jemand von euch auf die Sprünge helfen? Muss ich eventuell an der Function theme_image oder theme_image_widget rumhacken oder wo muss ich da ansetzen?
Danke schonmal im Voraus.
Gruß Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben
Kannst du hier raus
am 05.07.2014 - 16:41 Uhr
Kannst du hier raus vielleicht etwas basteln ohne zu Coden?
http://nextentity.com.au/blog/2013/apr/adding-alt-tag-title-tag-support-...
Wenn ich das richtig überflogen habe kannst du die Felder gesondert anlegen und mit field_permissions Module könntest du das Feld dann auf "admin" setzen.
Grüße Jenna
ergänzt: sorry, sehe gerade das sich der Link speziell auf das Media Modul bezieht, habe ich überlesen, das hilft dir dann vermutlich auch nicht weiter.
Hallo Jenna, danke für den
am 05.07.2014 - 17:21 Uhr
Hallo Jenna,
danke für den Hinweis.
Ich habe die Funktionen jetzt aber schon gefunden. Zum einen ist das image_field_widget_process (diese Function ist für die Alt-, Titletexte etc. verantwortlich) und zusätzlich hook_field_widget_form_alter - damit kann man steuern wann/wo das Widget geändert werden soll.
Ich code dazu gerade ein Mini-Modul zusammen und poste später noch den Code (falls das in Zukunft jemand brauchen sollte).
Gruß Matthias
So - fertig! Falls das in
am 05.07.2014 - 18:31 Uhr
So - fertig! Falls das in Zukunft mal jemand braucht - hier ist der Code meines Minimodules. Damit wird das Formelement des Alttextes im Node-Edit-Form nur ausgegeben wenn der bearbeitende User der Admin (uid: 1) ist. Das funzt auch für den Titletext und alle anderen Atribute ....
<?php
function MY_MODULE_field_widget_form_alter(&$element, &$form_state, $context) {
// If this is an image field type
if ($context['field']['type'] == 'image') {
// Loop through the element children (there will always be at least one).
foreach (element_children($element) as $key => $child) {
// Add the new process function to the element
$element[$key]['#process'][] = 'MY_MODULE_image_field_widget_process';
}
}
}
function MY_MODULE_image_field_widget_process($element, &$form_state, $form) {
// unset Alt-Text if user is not admin
global $user;
if ($user->uid != 1) {
unset($element['alt']);
}
// Return the altered element
return $element;
}
?>
Soweit ich das gelesen habe ist aber hook_field_widget_form_alter erst ab Drupal 7.28 verfügbar.