Produktdarstellung - Templates

Hallo oxid-Kollegen :wink:

ich kam mit den unterschiedlichen Produktdarstellungen (Übersichten) mit nur einem Template ein bissl in Schwierigkeiten. Das betreffende Template ist nun kaum mehr nachvollziehbar. Besser gesagt ein pures Chaos!

Mir wÀre es lieber, wenn jede Darstellung sein eignes Template hat. Geht wohl nicht, oder?

[B]Legende:[/B]

  • Folgende Produktansichten werden benötigt
    > folgendes Template soll dafĂŒr verwendet werden

[B]Vorhaben:[/B]

  • 3 Spalter “lang” fĂŒr Produkte auf der Übersichtsseite (Sofortkauf möglich)
    > 4 Spalter

  • 3 Spalter “kurz” fĂŒr Zubehör/wir Empfehlen/was andere gekauft haben usw. in der Detailansicht (Sofort kauf nicht möglich). Design unterscheidet sich stark vom anderen 3 Splater
    > 4 Spalter

  • 2 Spalter fĂŒr Teaser-Artikel (Startseite)
    > Ist ja so bereits vorhanden

Wie kann ich nun den 4 Spalter so abÀndern, dass ich 2 versionen habe.
Mir ist es unendlich oft passiert, dass es mir die andere Version mit verÀndert hat.

Hat hier jmd einen guten Tipp, wie ich die Sache einfacher angehen kann??!?!
Möchte das ganze wieder angehen - hab aber noch keinen brauchbaren Plan fĂŒr die Umsetzung.

Freu mich auf gute Ideen bzw. Umsetzungsmöglichkeiten.

Danke & Gruss
Daniel

Hallo Daniel,

um ganz ehrlich zu sein, kann ich mit Deinem Ansinnen nicht viel anfangen. Kannst Du vielleicht nochmal von einer anderen Seite rangehen?

Gruß

ich kann s:-)

er meint anstelle alle produktlisten in der list.tpl (zusammen mit der product.tpl) zu realisieren
diese templates zu trennen

also kein verschachteltes template das gleich mal 3 oder 4 arten der darstellung bedient aber unwartbar ist :slight_smile:

ich versteh ja das man doppelten code vermeiden will aber mit verschatelten html macht das die wartung zur hölle.
ihr habt ja eh schon so manche funtionen ausgelagert da muss man unbedingt weiter machen.

zb der anrede selector hat schon ein form bekommen. das wĂ€re mal fĂŒr anfang nicht so ĂŒbel
anstelle teilweise seitenlange funktionen in den jeweiligen tpls selbst zu machen

zb lieferstatus gibts gleich mehrfach was aber wunderbar eine selbstÀndige funktion sein könnte.
nur eines von vielen beispielen.

bin selbst gerade dabei umzuschachteln - im endeffekt gibts dann zwar mehr zeilen html code aber weniger zeilen smarty code bzw funktionsaufrufe und jede menge includes :slight_smile:

racoon: du kannst mal zur not es selbst machen. mach iond er product list jeweils nur die abfragen welche liste gebraucht wird und binde dir deine eigenen product.tpls ein in denen dann nur das steht was du brauchst

Hi bofh,

danke fĂŒr das aufklĂ€ren :wink:

deine idee ist jedoch auch sehr tricky. hast du es schon hinbekommen?
bin noch am ĂŒberlegen, wie ich das am besten machen soll


du könntest die product.tpl umorganisieren, von


gemeinsamer code...
if size == big: mach dies
elseif size==thinnest: mach das
...gemeinsamer code

in so etwas:


if size==big: kompletter code fĂŒr big
elseif size==thinnest: kompletter code fĂŒr thinnest

und dann noch die gemeinsamen css-Klassen aufdröseln.

ja, das mit dem gemeinsamen css ist so ne sache - das wird tierisch ungemĂŒtlich mit der zeit.
man muss stĂ€ndig prĂŒfen, an welcher stelle das auswirkungen hat.

der aufruf des product.tpl ist eh bissl tricky. bin noch nicht ganz dahinter gestiegen.
auch der erste abschnitt im product.tpl find ich echt verwirrend:

[{if $test_Cntr}]id="test_cntr_[{$test_Cntr}]_[{$product->oxarticles__oxartnum->value}]"[{/if}] class="product [{if $head}] head[{/if}] [{$size|default:''}] [{$class|default:''}]">
    [{if $showMainLink}]
        [{assign var='_productLink' value=$product->getMainLink()}]
    [{else}]
        [{assign var='_productLink' value=$product->getLink()}]
    [{/if}]

is mir glaub zu zeitaufwendig, wenn es keine schöner lösung gibt.
aber wenn ich mal zeit haben sollte :wink: nehm ich das in angriff.

danke fĂŒr dein idee!!

naja also es ist ja ein unterschied ob du es fĂŒr dich selbst brauchst oder eine lösung suchst fĂŒr ein standard template fĂŒr alle user.

im grunde sollte das aber so aussehen:
im jeweiligen file (zb details.tpl) mal ein include auf ein selector tpl ->
dort machst du die selection if size = blabla (eventuell eigene optinen kann man ja recht leicht hinzufĂŒgen)
dort dann das include auf details_thin.tpl

dort ist jetzt der erste html code
zb mach mir ein dib 2 spaltig. mach bild dorthin bla bla
jetzt ein include auf die einzelnen funktionen
zb show__price.tpl
show_status.tpl
variant_select.tpl (das wÀre bei mir ein eigenes um multimdim var. in den details als selector zu haben)

auf diese weise hast du 2 vorteile:
1: wenn du zb den lieferstatus Ànderst hast du ihn in allen ansichten so (dort wo er nochmal andrs sein soll kannst ja immernoch ein 2tes custom lieferstatus machen)
2: du trennst design (2 mal einmal bei den hauptseiten getrennt zu den einzelnen elementen) und du trennst wirklichen code der etwas bewirkt
zb arrays reinholen und sie in xxx ausgeben

dadurch werden dann updates leichter weil nur die wirklichen funktions tpls (meist nur einmal) geÀndert werden andstelle 5 mal in diversen ansichten

dadurch vervielfacht sich zwar der html code der einzelnen container und es gibt viel mehr files aber es ist um einiges wartbarer.
in der performance ist es auf keinen fall langsamer.
zwar muss auf mehr files zugegriffen werden (was sich durch cache und php optimizier wieder egalisiert aber anstelle in einem baum 40 if abfragen zu haben gibt es nur eine
dafĂŒr eben 2 oder 3 bĂ€ume

arbeit isses ja. aber je nachdem wie weit der shop angepasst wird kanns sogar so schneller sein zumindest auf mehrere jahre gesehen.

PS: dein Beispiel braucht man da jetzt gar nicht trennen.
hier wird nur abgefragt ob der link gezeigt wird oder nicht und entsprechend umgesetzt
das teil kann so eigentlich komplett stheen bleiben

dann zb nÀchster aufruf if size = thin include product_thin.tpl
und den zugehörigen code dort auslagern


im grunde braucht man dazu wirklich nicht viel kenntnisse von php oder smarty. das meiste ist einfach nur umschachteln und genau lesen :slight_smile: