Zur Verständnis: Ich erstelle einen neunen Block in einer neuen Datei. Aber wo muss diese dann liegen?
In der Beschreibung heißt auch, dass es einen Pfad gibt:
Zur Verständnis: Ich erstelle einen neunen Block in einer neuen Datei. Aber wo muss diese dann liegen?
In der Beschreibung heißt auch, dass es einen Pfad gibt:
Ist das der Pfad, wo ich meine Datei ablegen muss?
Und wie rufe ich das smarty dann auf?
Hallo,
der Pfad der Datei, dessen Block du anpassen möchtest, richtet sich natürlich danach, welchen Block du anpassen möchtest. Es kommt hier also drauf an, wo oder was du anpassen möchtest, um dir evtl. einen Pfad sagen zu können. Meist kann man den Pfad auch anhand von CSS-Klassen ungefähr ableiten.
Den Pfad für die Smart-Datei muss folgendermaßen sein: themes/Frontend/DEIN_THEME/_private/smarty/deine_smarty_datei.php .
Wenn deine Smarty-Funktion bspw. smarty_function_selection heisst, rufst du diese dann über {selection} in deiner Template-Datei auf.
ich möchte eine eigene smarty_function erstellen. Ausgeben möchte ich ein array aus einer SQL-Abfrage.
Siehe anderen thread: Neue SQL-Abfrage in array - Programmierung - Shopware Community Forum
Diese möchte ich dann in einer landingpage oder EW aufrufen, falls das möglich ist.
da dieses Array wahrscheinlich bei den Einkaufswelten oder den Landingpages gar nicht standardmäßig verfügbar sein wird, musst du da sicherlich erstmal eher ran und mit dem entsprechenden Event das Array mit ausgeben lassen. In Smarty-Funktionen selbst ist soweit ich weiss glaub ich ein Datenbankzugriff eher schwer umsetzbar.
Vielleicht bin ich auch auf dem Holzweg. Wäre es dann nicht einfacher, das per php zu lösen?
$sql = ’
SELECT
FROM
Nur: Kann man z.B. $this->s_statistics_search auch includen?
Hallo,
Template-Dateien und php vertragen sich aber nicht.
Wie erwähnt - einfach das entsprechende Event suchen, dort die Abfrage machen und das Ergebnis der Abfrage wie gewünscht als Array an die Template-Datei (mit assign) übergeben lassen.
Tja das ist jetzt lustig, dass die ursprüngliche Frage gar nicht beantwortet wurde: Wo müssen eigentlich die eigenen Smarty-Plugins (functions/modifier) abgelegt werden?
nach einigem Probieren - ihr habt natürlich recht, das Verzeichnis ist grundsätzlich richtig. Also, die Modifier werden in den ‘normalen’ Frontend-Templates richtig angezogen,
Kann gut sein. Ich hatte auch folgendes Problem, das ich hier einmal posten möchte:
Die Datei …\plugins\index\delivery_informations.tpl wird von
…\checkout\items\product.tpl und von
…\detail\data.tpl
eingebunden. Wenn man nun in delivery_informations.tpl einen privaten modifier verwendet, funktioniert dieser im ersten Fall (…product.tpl) einwandfrei. Beim Aufruf durch …product.tpl gibt es einen bösen Error.
Sind die privaten modifier im checkout nicht bekannt ?
'onFrontendPostDispatch'
];
}
public function onFrontendPostDispatch(\Enlight_Controller_ActionEventArgs $args)
{
$this->template->smarty->registerPlugin('modifier', 'yeah', [&$this, 'myModifier']);
$this->template->smarty->registerPlugin('modifier', 'woop', [&$this, 'myModifier2']);
}
public function myModifier($string)
{
// do your stuff with string
return $string;
}
public function myModifier2($string, $param1, $param2)
{
// do your stuff with string
// param1 = hello
// param2 = world
return $string;
}
?>
ich hatte das Problem, dass mein Smarty-Modifier nicht in der Bestellbestätigung funktionierte.
Mir hat letztendlich eine Lösung durch einen » CompilerPass « geholfen um einen Smarty-Modiefier in allen Bereichen verwenden zu können.
Ich habe ein Smarty-Plugin geschrieben, um die Kundenbewertungen abzurufen, und ich möchte diese Funktion im Artikelexport-Backend-Modul verwenden.
Nach dem Verständnis dieses Threads kann „CompilerPass“ meinen Zweck lösen.
Soll ich also ein benutzerdefiniertes Shopware-Plugin schreiben, um CompilerPass für mein Smarty-Plugin zu implementieren? oder wo es umgesetzt werden soll.