Wie Sie Code-Blöcke wiederverwenden und Argumente an sie in ExpressionEngine übergeben

7

Nehmen wir an, ich habe eine E-Commerce-Website und möchte die Art und Weise, wie ich ein Produktraster durch zahlreiche Vorlagen zeige, mittragen. Wie würden Sie nach dem DRY-Prinzip diesen Code wiederverwenden und möglicherweise Argumente für einige Anpassungen in verschiedenen Bereichen in den Block übertragen? Ist {embed} die beste Option? Ich könnte so etwas sehen, was unnötigen Overhead verursacht.

    
Aaron Bushnell 24.10.2012, 03:07
quelle

2 Antworten

13

Ich habe genau das auf einer Kundenseite gemacht. Ich habe das gleiche Produktraster über die gesamte Site wiederverwendet und es war 100% DRY. Ich benutzte den Dev-Zweig von Stash und nutzte die neue Embed-Funktion. Während regelmäßige Einbettungen immer eine Option sind, die funktioniert , sind Stash-Einbettungen effizienter und leistungsfähiger.

Der wirkliche Unterschied besteht darin, wie Sie Variablen übergeben und wann die Einbettung geparst wird. Mit Stash-Embeds kann innerhalb eines Looping-Tags verwendet werden und die Daten nur einmal analysiert werden. (Wo regelmäßige Einbettungen bei jeder Iteration der Schleife analysiert werden.)

Hier ist ein Gist, den ich vorhin für einen anderen Nutzer auf Twitter gepostet habe. Ссылка

Beachten Sie, das Beispiel stellt mehrere Dateien und Codeblöcke dar, oder ich würde einfach hier posten. IMO, es würde diesen Beitrag schwer machen, zu folgen und zu lesen, wenn ich es hier gepostet habe. Im Wesentlichen folgt ein modifizierter Templatenteil Ansatz.

Weitere Informationen zu Vorlagenpartials. Zypern

Aber um direkter die Frage zu beantworten: "Wie ersetzt man eingebettete Variablen durch Stash?". Die Lösung ist ziemlich einfach und basiert auf den Kernprogrammierungskonzepten von "Setzern" und "Gettern". Die Theorie ist, wenn man eine Variable setzt, kann sie zu jedem späteren Zeitpunkt in der Vorlage abgerufen werden. Der Trick besteht darin, die Variablen vor dem Parsen der Getter zu setzen.

%Vor%

Hier kommt der Parameter process ins Spiel. Auf diese Weise können Sie Ihre Vorlage einbetten, bevor die Einführungsschleife ausgeführt wird, und die Kopfzeile einbetten, die den Website-Wrapper enthalten und den Seiteninhalt ausgeben würde. Sobald Sie den Dreh raus haben, wird es sehr mächtig und macht Ihre Seiten so viel sauberer.

    
Justin Kimbrell 24.10.2012, 04:03
quelle
7

Sie können je nach dem, was Sie durchgehen möchten, entweder Einbettungen oder möglicherweise einen Vorrat verwenden.

Ссылка

    
David Dexter 24.10.2012 03:56
quelle

Tags und Links