[gelöst] Bild in Drupal Form einfügen (Form Api)
Eingetragen von 1000 (764)
am 23.02.2015 - 00:33 Uhr in
am 23.02.2015 - 00:33 Uhr in
Normallerweise kann man ein Bild einfach per
<IMG SRC="image.png" ALT="Alt Text" WIDTH=42 HEIGHT=62>
einfügen. Aber wie füge ich das Bild im Drupal Code ein?
$form['markup-link'] = array(
'#markup' => l(t('Reisen'), 'http://www.xxxx.de/vergleichsrechner3'),
Diese Funktion dient der automatischen Übersetzungsmöglichkeit. Nur wie kann ich direkt über den Link ein Bild anzeigen?
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn ein img-Tag über die
am 23.02.2015 - 12:26 Uhr
Wenn ein img-Tag über die l-funktion eingebaut werden soll, mußt man das Attribut "html" => true setzen.
Leider verstehe ich diese
am 24.02.2015 - 00:48 Uhr
Leider verstehe ich diese Ausführung nicht. Wie genau sieht der Code dann aus bzw. wo genau soll ich das einfügen?
etwa
$form['markup-link'] = array(
'html' => true l(t('Reisen'), 'http://www.xxxx.de/vergleichsrechner3'),
Bild
am 24.02.2015 - 07:46 Uhr
Moin.
Was genau möchtest Du denn machen? Einen verlinktes Bild ausgeben?
In diesem Fall ersetzt Du den ersten Parameter der [api:l:7]-Funktion mit einem entsprechenden Aufruf zu [api:theme_image:7] und setzt in den Optionen den Wert für "html" auf
TRUE
:<?php
$image = theme('image', array(
'path' => drupal_get_path('theme', 'meintheme') . '/images/image.png',
'alt' => t('my fancy image'),
));
$form['markup-link'] = l($image, 'http://www.example.com', array('html' => TRUE));
?>
Bitte lies Dir auch die entsprechenden API-Seiten zu den Funktionen durch und schau Dir auch mal die Forms API Referenz an.
hth,
Stefan
Ich glaube das ist schon so
am 25.02.2015 - 02:22 Uhr
Ich glaube das ist schon so in etwa was ich suche. Allerdings genau genommen möchte ich ein verlinktes Bild überhalb eines Textlinks anzeigen. Also im Prizip beides. Link und Bild übereinander.
Der Designer pass jetzt
am 25.02.2015 - 21:06 Uhr
Der Designer pass jetzt einfach das Bild an, so dass es aussieht als sei ein Link unterhalb des Bildes platziert. Dann sollte es klappen. Vielen Dank!
Ihr redet da über die Form
am 26.02.2015 - 09:43 Uhr
Ihr redet da über die Form API.. willst du ein Formular machen, oder das Bild in einem Node anzeigen?
In der Node machst du die Änderungen in der node--*******.tpl.php - und der Code sieht da anders aus.
LG, Marc
Das Bild soll mittles Form
am 26.02.2015 - 16:56 Uhr
Das Bild soll mittles Form Api eingebunden werden.
Ich habe den Code jetzt
am 26.02.2015 - 19:04 Uhr
<?php
$image = theme('image', array(
'path' => drupal_get_path('theme', 'meintheme') . '/images/image.png',
'alt' => t('my fancy image'),
));
$form['markup-link'] = l($image, 'http://www.example.com', array('html' => TRUE));
?>
Ich habe den Code ausprobiert. Leider funktioniert der Code so nicht. Es erscheinen nur Fehlermeldungen. "Fatal error"
Fatal error: Unsupported operand types in /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/form.inc on line 1808 Call Stack: 0.0001 654984 1. {main}() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/index.php:0 0.1468 8714024 2. menu_execute_active_handler() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/index.php:25 0.2014 12864176 3. drupal_deliver_page() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/menu.inc:532 0.2014 12864792 4. drupal_deliver_html_page() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/common.inc:2589 0.2014 12866208 5. drupal_render_page() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/common.inc:2701 0.2023 13130168 6. block_page_build() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/common.inc:5784 0.2665 25682600 7. block_get_blocks_by_region() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/modules/block/block.module:268 0.2665 25682912 8. block_list() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/modules/block/block.module:318 0.2665 25682912 9. _block_render_blocks() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/modules/block/block.module:686 0.2665 25684808 10. module_invoke() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/modules/block/block.module:902 0.2665 25685632 11. call_user_func_array:{/var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/module.inc:866}() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/module.inc:866 0.2665 25686120 12. custom_xxxxxxxxxxxxxxxx_block_view() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/module.inc:866 0.2665 25686840 13. drupal_get_form() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/sites/all/modules/custom_xxxxxxxxxxxxxxxx/custom_xxxxxxxxxxxxxxxx.module:725 0.2665 25688040 14. drupal_build_form() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/form.inc:130 0.2697 25721160 15. drupal_process_form() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/form.inc:385 0.2697 25725008 16. form_builder() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/form.inc:885 0.2706 25757192 17. form_builder() /var/www/vhosts/xxxxxxxxxxxxxxxx.de/httpdocs/includes/form.inc:1906
Außerdem habe ich festgestellt, dass es keinen Image Type in der Form Api gibt.
Und wo hast du diesen code
am 27.02.2015 - 07:36 Uhr
Und wo hast du diesen code eingefügt?
FormsAPI
am 27.02.2015 - 10:20 Uhr
Moin.
Mein Beispiel war auch nur als Start für den korrekten Code gedacht. Ich ging eigentlich davon aus, dass Du Dir zumindest mal die Forms API (speziell #markup) anschaust :(
Du musst das form-item natürlich auch richtig aufbauen, damit das funktioniert.
Das habe ich mir angeschaut.
am 27.02.2015 - 17:37 Uhr
Das habe ich mir angeschaut. Leider werde ich daraus weder schlau noch kann ich mir einen fehlerfreien Code daraus zusammenbasteln. Versucht habe ich es schon. Außerdem glaube ich dass die Verlinkung zu "Markup" nicht zur gewünschten Position führt. Weiter unten ist ein Abschnitt mit dem Titel #Markup. Das dort beschriebene gibt schon eher Sinn. Ich werde noch einmal ein wenig in der Grütze rühren :-) Vielen Dank!
$image = theme('image', array(
'path' => drupal_get_path('theme', 'xxxxxx') . '/images/pic.png',
'alt' => t('Tanzmaus'),
));
$form['markup-link'] = array(
'#type' => 'item',
'#html' => TRUE,
'#markup' => check_plain($image));
So wird das img Tag schon mal als Text ausgegeben. Aber html klappt irgendwie nicht.
Ich habe mal was ähnliches gemacht
am 27.02.2015 - 17:38 Uhr
in Kombi was Stefan schrieb hilft Dir das vielleicht:
http://leaner-drupal.tumblr.com/post/112230858936/programmatically-add-i...
Da programmiere ich lieber
am 27.02.2015 - 18:23 Uhr
Ich kriege es einfach nicht hin. Noch eine Idee wie es tatsächlich aussehnen kann?
1000 schrieb Ich kriege es
am 28.02.2015 - 20:51 Uhr
Ich kriege es einfach nicht hin. Noch eine Idee wie es tatsächlich aussehnen kann?
Gibt es denn einen Grund, wieso du dein Bild per check_plain ausgeben lassen möchtest?
Dies sorgt nur dafür, dass dir dein Markup direkt mit gefiltert wird - sprich erzeugt den Output, den du gerade erhälst.
Wenn du das check_plain entfernst, wird dir auch das Bild korrekt ausgegeben.
Außerdem ist '#html' => TRUE an dieser Stelle falsch / nicht nötig - dieses Attribut wird auch vom type item nicht unterstützt.
https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#item
SteffenR
Ich dachte es wäre eine
am 01.03.2015 - 03:05 Uhr
Ich dachte es wäre eine Sicherheitsfunktion von Drupal, um einen Schutz vor Hackern zu ermöglichen. Tatsächlich funktioniert es so. Das Bild lässt sich nun an der gewünschten Position anzeigen.
Leider ist das Bild noch nicht exakt in der richtigen Position. Gibt es eine Möglichkeit dort css Befehle zu verwenden? Ich habe es so einmal versucht. Leider tut sich da gar nichts. Das Bild bewegt sich keinen Millimeter vom Fleck! Wie in Stein gemeißelt!
$image = theme('image', array(
'path' => drupal_get_path('theme', 'xxxxxxxx') . '/images/pig.png',
'alt' => t('Tanzmaus'),
));
$form['#attached']['css'] = array(
drupal_get_path('theme', 'meintheme') . '/css/custom.css',
);
$form['markup-link'] = array(
'#type' => 'item',
'#attributes' => array('class' => array(t('pig_bu'))),
'#markup' => $image);
.pig_bu{margin:20px !important; }
Auch hier die Frage - wieso
am 01.03.2015 - 08:47 Uhr
Auch hier die Frage - wieso setzt du die Klasse in eine t-Funktion?
Die t Funktion wird in Drupal nur verwendet, wenn du den darin enthaltenen String übersetzbar machen möchtest. Dies sollte bei CSS Klassen nicht der Fall sein.
Prüf doch bitte mal in den Chrome Developer Tools oder in Firefox, ob dein CSS überhaupt eingebunden wird und der Pfad hier auch korrekt ist.
Wenn dies der Fall ist, kannst du dann schauen wo es hier hängt.
SteffenR
Die Css-Datei wird nicht
am 01.03.2015 - 15:11 Uhr
Hab es jetzt anders gemacht und es hat geklappt. Vielen Dank noch einmal für eure Hilfe!
So klappt es:
$image = theme('image', array(
'path' => drupal_get_path('theme', 'xxxxxxxxxx') . '/images/pig.jpg',
'alt' => t('Tanzmaus'),
));
$form['#attached']['css'] = array(
drupal_get_path('theme', 'xxxxxxxxxx') . '/css/custom.css',
);
$form['markup-link'] = array(
'#type' => 'item',
'#markup' => '<span class="pig_bu"><a href="http://www.xxxxxxxxxx.de/vergleichsrechner3">'.$image.'</a></span>');
Wie schaut denn deine Form
am 01.03.2015 - 14:58 Uhr
Wie schaut denn deine Form aus bzw. dein #attached Teil im Form Array?
Wenn du dich an die Doku hälst, funktioniert das Ganze wie folgt:
Einbindung von CSS aus Modul
$form['#attached']['css'] = array(
drupal_get_path('module', 'my_module') . '/css/my_module.css',
);
Einbindung von CSS aus Theme
$form['#attached']['css'] = array(
drupal_get_path('theme', 'my_theme') . '/css/my_theme.css',
);
SteffenR
Deine Antwort war schneller.
am 01.03.2015 - 15:15 Uhr
Deine Antwort war schneller. Ich hab schon eine Lösung gefunden und im letzen Post eingefügt. Viele Dank noch einmal!