[gelöst] Inline Bilder in HTML wrappen
Eingetragen von intervisual (88)
am 17.09.2010 - 16:20 Uhr in
am 17.09.2010 - 16:20 Uhr in
Hallo,
wie kann ich Bilder die sich im Node (Artikel) befinden mit zusätzlichen HTML anreichern? Ich stelle mir da ein zusätzliches Inline-Element (<span>|<b>|<i>
) vor welches mir so zusätzliches Styling ermöglicht. Rauskommen sollte ewtas in der Art: <p><span><img src="pfad/zum/bild" alt="alttext"/></span></p>
Die Bilder werden ja von Drupal automatisch in das <p>
-Tag gepackt. Das würde theoretisch reichen aber das Problem ist, dass die Position des <p>
-Tags natürlich varieren kann. Je nachdem wo der User es eben einfügt... Klar könnte ich das auch mit Javascript machen aber das will ich vermeiden.
Was kann ich also tun?
- Anmelden oder Registrieren um Kommentare zu schreiben
Wie sind die Bilder in den
am 18.09.2010 - 10:56 Uhr
Wie sind die Bilder in den Node gekommen? Via CCK, Anhang oder WYSIWYG?
WYSIWYG. Ich habe mit dem
am 18.09.2010 - 13:36 Uhr
WYSIWYG. Ich habe mit dem Modul wysiwyg_imageupload ein Modul gefunden was schon Html um die Bilder baut. Das habe ich mir so angepasst wie ich es benötige.
Dann kannst Du einfach den
am 18.09.2010 - 19:54 Uhr
Dann kannst Du den WYSIWYG-Editor deaktivieren, bzw. Dir den Quellcode anzeigen lassen (je nach Modul heißt die Option unterschiedlich), und dort direkt das gewünschte HTML um das entsprechende Element ergänzen.
Nun ja... theoretisch ist das
am 18.09.2010 - 20:17 Uhr
Nun ja... theoretisch ist das natürlich möglich aber findest du das nicht ein wenig unpraktisch? ;)
Ich kann von einem Redakteur nicht erwarten das er jedes Bild was er einpflegt noch um bestimmte HTML-Elemente ergänzt. Das ist unpraktisch und die Gefahr das der da was falsch macht ist mir zu groß ;) Aber das spielt ja nun auch keine Rolle mehr da es ja wie gewünscht funktioniert. Aber vielen Dank für deine Mühe :)
Oder suchst du eine
am 18.09.2010 - 20:17 Uhr
Oder suchst du eine "programmatic solution?", also eine Möglichkeit, den Code pauschal einzufügen, ohne zusätzliche Bearbeitungsschritte im Backend?
Aha. Von einem Redakteur war
am 18.09.2010 - 20:19 Uhr
Aha. Von einem Redakteur war bisher keine Rede …
Wenn du sagst, es funktioniert jetzt: was war die Lösung?
idle schrieb Oder suchst du
am 18.09.2010 - 20:36 Uhr
Stimmt... einen Redakteur habe ich bisher nicht erwähnt aber mir wäre das auch zu unpraktisch :)
Zur Lösung:
…wysiwyg_imageupload ein Modul gefunden was schon Html um die Bilder baut. Das habe ich mir so angepasst wie ich es benötige.
Ich habe mir hier die Funktion die das HTML für das Bild generiert um meine Tags erweitert. Aber ich muss gestehen das ich mit der Lösung nicht zufrieden bin. Sie löst zwar mein Problem aber bei einem Update des Modules ist meine Änderung für die Katz. Besser wäre es natürlich eine, wie du oben angemerkt hast, programmatische Lösung zu finden. Hast du eine Idee?
Hast Du schon versucht, oder
am 18.09.2010 - 20:57 Uhr
Hast Du schon versucht, oder daran gedacht, in der template.php einen Override zu machen?
Wenn ich raten müsste, würde ich sagen, dass Du deine Anpassungen in der Funktion
theme_wysiwyg_imageupload_render_container
vorgenommen hast?Meine Idee ist, unabhängig davon: Du kopierst die Funktion mit Deinen gewünschten Änderungen in die template.php in deinem Theme-Verzeichnis, und änderst lediglich den Namen von
theme_xy
inname_von_deinem_theme_xy
. Dann solltest Du die Modul-Dateien in ihren Originalzustand zurückversetzen können, und trotzdem einen geänderten Output haben.PS: In der template.php kein
?>
am Ende, also PHP-Tag nicht schließen ...Ich vestehe folgendes: du
am 18.09.2010 - 21:28 Uhr
Ich vestehe folgendes:
du möchtest die inline-Bilder mittels CSS stylen
Kannst du die Bilder denn nicht mit
.content img
per CSS ansprechen ?Das hast du falsch verstanden
am 18.09.2010 - 22:18 Uhr
Das hast du falsch verstanden :) Bilder einfach mit CSS zu Style ist nicht das Problem. Ich benötige ein zusätzliches HTML Tag um diesem ein Hintergrund-Bild (gefadeter Schatten) zu geben. Mit CSS 2.1 ist es leider nicht möglich einem Element mehrere Hintergrundbilder zuzuweisen, das geht erst ab CSS3. Und das wird zur Zeit nur von aktuellen Browsern unterstützt... alternative könnte ich mit den Pseudo-Klassen :before und :after arbeiten aber auch hier ist die Unterstützung nicht so das ich es mit guten gewissen im Produktivsystem einsetzten könnte.
Daher benötige ich zusätzliches Markup.
@idle
Das habe ich schon versucht. Aber es hat nicht funktioniert. Kein Plan warum... Template-Cache habe ich gelöscht.
node-type-tpl.php
am 19.09.2010 - 08:30 Uhr
Du könntest eine node-type-tpl.php erstellen, wobei -type dein Inhaltstyp ist.
Hier hast ja normalerweise
<?php
print $content
?>
Du könntest davor deine img-Tags suchen und mit deinem wrapper-Tag anreichern
intervisual schrieb @idle Das
am 19.09.2010 - 09:59 Uhr
@idle
Das habe ich schon versucht. Aber es hat nicht funktioniert. Kein Plan warum... Template-Cache habe ich gelöscht.
Ich habe das Szenario nachgebaut, und bei mir funktioniert es! Hier meine template.php:
<?php /**
* Renders the meta container of an image.
*/
function my_theme_wysiwyg_imageupload_render_container($image,$meta,$img_obj,$arguments) {
return "<div class='wysiwyg_imageupload_wooohoo image {$img_obj->alignment} {$img_obj->style}'>$image <div class'image_meta'>$meta</div></div>";
}
Im Quellcode wird anschließend die Klasse
wysiwyg_imageupload_wooohoo
ausgegeben.Das Problem dürften die Caches sein. Die Theme-Registry zu leeren bringt nichts, du musst die Cache-Tables leeren. Am einfachsten im Admin-Menü (wenn Du das Modul installiert hast).
idle, danke für deine
am 20.09.2010 - 09:53 Uhr
idle, danke für deine Hinweise!
Ich habe über das Admin-Menü alle Caches gelöscht aber es aus welchen Gründen auch immer funktionierte es nicht. Ich habe das Module nun deinstalliert, erneut installiert sowie konfiguriert und die Funktion in meinen
template.php
gepackt und die caches gelöscht. Warum auch immer... es geht nun o_OVielleicht hat sich Drupal verschluckt oder ich habe irgendwo irgendwas falsch gemacht... :)
Vielleicht ist etwas beim
am 20.09.2010 - 18:23 Uhr
Vielleicht ist etwas beim Manipulieren der Quelldatei schief gegangen ... Egal, schön, wenn es jetzt funktioniert. :)