Korrigieren Sie den Bildpfad für Vorlagendateien mit benutzerdefinierten Themen

7

Ich erstelle ein benutzerdefiniertes Thema. Unter dem Ordner meines Themas befindet sich ein imagesOrdner, in den ich einige Bilder eingefügt habe. Ich möchte diese Bilder in meinen verschiedenen template ( .tpl.php) - Dateien mithilfe eines HTML- <img>Tags verwenden ... aber das Problem ist, wie ich den richtigen Pfad für diese Bilder (das srcAttribut) erhalte .

Ich habe eine Weile gesucht, aber keine Lösungen gefunden. Bitte helfen Sie.

BEARBEITEN: Ich verwende nette URLs (http://mydrupalsite.com/a/b/c/d) - URLs vom Typ. Wenn das Bild also srcmit /(oder einem relativen Pfad) beginnt , würde es brechen.

Shafiul
quelle

Antworten:

14

Ich denke, diese Funktionen könnten in Ihren Vorlagen nützlich sein:

print base_path() . path_to_theme();

path_to_theme () Gibt den Pfad zum aktuellen Themenelement zurück . base_path () Der Basispfad der Drupal-Installation.

Zum Beispiel habe ich ein Bild namens bg-bar.pnginside imagesdirectory in meinem Vorlagenverzeichnis namens garland. dann kann ich verwenden base_path()und path_to_theme()den Pfad zum Bild abrufen, zum Beispiel in node.tpl.php:

print '<img src="'.base_path() . path_to_theme() .'/images/bg-bar.png">';

Update: Wenn Sie die aktuelle Domain verwenden möchten, können Sie Folgendes verwenden global $base_root:

  $address = ''.base_path() . path_to_theme() .'/images/bg-bar.png';
  global $base_root;
  echo '<img src="' . $base_root . $address . '">';

Ich hoffe, dass Informationen nützlich sind.

cigotete
quelle
Ich habe all das versucht. Das Problem ist, dass base_path()'/' zurückgegeben wird - was nicht hilft, wenn ich nette URLs verwende (dh mysite.com/a/b/c ) - in diesem Fall wird die Bildquelle zu '/ path-to-theme / .... ./image.png '- was nicht funktioniert. Ich muss http://statt /in Bildquelle verwenden, denke ich.
Shafiul
Ich habe meine Antwort mit Informationen zu aktualisiert http://.
Cigotete
Wenn Sie "nette URLs" verwenden, werden diese URLs vermutlich durch einen Umschreibungsprozess gesteuert. Ich denke, Sie können Ausnahmen hinzufügen. Überprüfen Sie beispielsweise, ob .htaccessSie diesen Umschreibvorgang aus einer Datei steuern können, und fügen Sie die entsprechende Bedingung mit hinzu RewriteCond, um Bilder auszuschließen.
Cigotete
Vielen Dank! Ich habe überall nach einer Lösung für dieses Problem gesucht!
user1015214
0

Da sich mein Bild in einem bedingten Block befand, warf die obige Syntax einige Probleme auf, und das Folgende funktionierte für mich. Ich bin mir jedoch nicht sicher, ob dies aus Wartungssicht ratsam ist:

src='<?php print base_path().path_to_theme().'/images/iphone.png' ?>'
dd263
quelle