Parameter "editable" im Warenkorb per Modul ausschalten


#1

Bei meinen ersten Gehversuchen als Modul-Newbie bin ich anscheinend gerade an eine technische Grenze gestoßen - ich will eine Stelle ändern, an der sich kein Block befindet. Aber vielleicht gehe ich das konkrete Problem mangels Erfahrung ja auch nur falsch an.

Was ich erreichen will: Im Warenkorb sollen die Checkboxen am Anfang jeder Zeile sowie die zugehörigen Buttons unter der Liste (“Alle” “Entfernen” “Aktualisieren”) ausgeblendet werden (die Mengenänderung löse ich dann auf andere Weise). Ob diese Elemente angezeigt werden, regelt im Template eine Variable names “editable”, die aber in der basket.tpl fest vergeben wird:

<div class="lineBox">
    [{include file="page/checkout/inc/basketcontents.tpl" editable=true}]
</div>

Die basketcontents.tpl gibt diesen Wert wiederum direkt an die basketcontents_table.tpl weiter. In keiner der drei Dateien befindet sich ein Block, den ich nutzen könnte, um die Variable vor der ersten Verwendung modulseitig auf false zu setzen.

Wenn also nicht per Block, wie löst man so etwas dann? Kann ich notfalls die komplette basket.tpl mit einer eigenen Version ersetzen? Falls ja: Wie? Und: Ist das eine gute Idee? :slightly_smiling_face:


Kein Block da - was tun?
#2

Ja diese Stelle ist ein wenig Stiefmütterlich behandelt was das Thema Blocks angeht. Und wie @leofonic schon geschrieben hatte wäre ein Pull-Reuqest hier auch aus meiner Sicht hilfreich.

Was du hier unbedingt noch beachten solltest ist, das es nicht nur um die basketcontents_table.tpl geht sondern auch die basketcontents_list.tpl beachtet werden muss, die für die Mobil Darstellung herangezogen wird.

Ich sehe hier für dich aktuell nur drei Möglichkeiten:

  1. Setze eine Klasse im Template und blende die Elemente via CSS aus.
  2. Ich gehe davon aus, dass du ein Child-Theme von Flow angelegt hast. Hier kannst du die Funktionalität direkt so umsetzen wie du es möchtest
  3. Die schlechteste aller Möglichkeiten: Den Block checkout_basket_main aus der Basket.tpl überschreiben und ganz viel redundanten TPL kram direkt im Modul definieren bis zur Stelle an der du die Änderung durchführen möchtest. Was dann allerdings natürlich Auswirkung haben kann wenn andere Module hier auch auf einen der Blöcke zugreifen.

Ich wäre stark ein Fan hier noch weitere Blöcke hinzuzufügen!

Grüße

Andi


#3

OK, danke. CSS und Template gehen natürlich, so hab ich das beim Templaten bisher immer gemacht. Die Idee, den Mega-Block ins Modul zu übernehmen, hatte ich auch, habe sie aber aus den offensichtlichen Gründen verworfen. Dann hake ich das Thema erstmal ab, bis da ein Block zur Verfügung steht.


#4

Wenn du die Elemente per CSS im Modul ausblendest könntest du das auch ohne Templateänderungen und Änderungen am Template-CSS machen. Ist halt die Frage ob es stört wenn die Elemente im Quellcode noch vorhanden sind.


#5

Ganz einfach: Pull Request für den fehlenden Block einreichen. Dann kannst Du bei Dir direkt den Block schon benutzen und mit etwas Glück ist er schon im nächsten Patch Release mit dabei :wink: