Neu Konfigurator - Einzelpreise anzeigen/verstecken

TechNik

Aktives Mitglied
16. März 2018
11
0
Hallo zusammen,

ich bräuchte mal ein HowTo für die folgende Aufgabenstellung. Ich hoffe ihr könnte mir paar Tipps geben!!! :)

Wir nutzen den Konfigurator bei zwei Arten von Produkten.
  1. Zum konfigurieren - der Kunde kann sich was zusammenstellen.
  2. Als Stückliste. Das heißt, der Artikel ist quasi schon zusammengestellt, sieht aber letztlicher schöner aus als bei der "richtigen" Stückliste. (Ja, wir verwenden absichtlich nicht die richtige Stückliste, weil die Ansicht für uns sehr unglücklich ist.)
Das "Problem" für uns, sind die Einzelpreise. Im 1. Fall (zum konfigurieren), wollen wir alles lassen wie es ist. Beim 2. Fall (als Stückliste) allerdings, wollen wir die Einzelpreise ausblenden.

Wie kann ich es also schaffen, dass man bei der Produktseite für Produkt a, b und c die Einzelpreise anzeigt ... und bei der Produktseite für Produkt x, y und z die Einzelpreise ausblendet.

Geht das im CSS? So a la "Wenn Produkt ID = x ist, blende die Preise aus" ...?

Vielen lieben Dank! :)
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Hallo,
Geht das im CSS? So a la "Wenn Produkt ID = x ist, blende die Preise aus" ...?
"Im CSS" geht das nur, wenn du im Template dafür spezielle CSS-Klassen vergibst. Dann kannst du anhand dieser Klassen optisch ausblenden. Wenn du jedoch eh Hand ans (Child-) Template anlegst, dann kannst du die Preise auch dort direkt ausblenden. Das Ganze am Besten anhand eines Funktionsattributes (und nicht nach Produkt-ID), dann kannst du die Anzeige über die Wawi für jeden Artikel steuern.
 

TechNik

Aktives Mitglied
16. März 2018
11
0
"Im CSS" geht das nur, wenn du im Template dafür spezielle CSS-Klassen vergibst. Dann kannst du anhand dieser Klassen optisch ausblenden. Wenn du jedoch eh Hand ans (Child-) Template anlegst, dann kannst du die Preise auch dort direkt ausblenden. Das Ganze am Besten anhand eines Funktionsattributes (und nicht nach Produkt-ID), dann kannst du die Anzeige über die Wawi für jeden Artikel steuern.

Wow, perfekt! Vielen Dank für die Hilfe! :)
Dann werde ich ein Funktionsattribut anlegen ... nur eine Frage. Wie frage ich das Attribut im CSS an?
Mein Attribut heißt konf_einzelpreis (und ist ne checkbox). Wenn die aktiviert ist, soll der Preis versteckt werden.

Damit könnte ich dass dann lösen! Danke schonmal!
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Hallo,
wie schon gesagt, direkt im CSS geht das nicht. Du kannst aber anhand des Attributs die Preise im Template ausblenden. Das Template für den Konfigurator wäre /productdetails/config.tpl.
Beispielhaft:
PHP:
{if !$Artikel->FunktionsAttribute.konf_einzelpreis}{$oItem->getPreisLocalized()}{/if}
 
  • Gefällt mir
Reaktionen: StaniM

StaniM

Mitglied
24. Mai 2018
41
2
Hallo,

wie schon gesagt, direkt im CSS geht das nicht. Du kannst aber anhand des Attributs die Preise im Template ausblenden. Das Template für den Konfigurator wäre /productdetails/config.tpl.
Beispielhaft:
PHP:
{if !$Artikel->FunktionsAttribute.konf_einzelpreis}{$oItem->getPreisLocalized()}{/if}
Guten Tag !
Ich hoffe, ist nicht schlimm, wenn ich dich hier frage?:) Bei mir handelt es sich auch um den config.tpl und es sollte der ganze block unsichtbar sein. Dies habe ich durch
Code:
.col-lg-8 {
    visibility:hidden;
}
in css Datei erfolgreich hinbekommen (falls jemand danach sucht...).
Die Frage ist - wie kann ich den preis von Konfigurator woanders abfragen? Wenn ich <span> {$oItem->getPreisLocalized()} </span> paste, lädt die Seite genau bis diese stelle und hört auf weiter zuladen :(
Danke für die Aufmerksamkeit ! :)
 

Anhänge

  • screen1.jpg
    screen1.jpg
    79,7 KB · Aufrufe: 35

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Das halte ich für keine gute Idee! Erstens werden hier alle lg-8 Spalten ausgeblendet und Zweitens eben nur für den lg-Viewport! Das gezielte Nicht-Anzeigen sollte besser über Templatetlogik oder eine entsprechende CSS-Klasse geregelt werden.

Die Frage ist - wie kann ich den preis von Konfigurator woanders abfragen? Wenn ich <span> {$oItem->getPreisLocalized()} </span> paste, lädt die Seite genau bis diese stelle und hört auf weiter zuladen
Dann hast du das offensichtlich an einer Stelle eingesetzt, an der $oItem keine Konfigitem-Instanz ist.
 
  • Gefällt mir
Reaktionen: StaniM

StaniM

Mitglied
24. Mai 2018
41
2
Das halte ich für keine gute Idee! Erstens werden hier alle lg-8 Spalten ausgeblendet und Zweitens eben nur für den lg-Viewport! Das gezielte Nicht-Anzeigen sollte besser über Templatetlogik oder eine entsprechende CSS-Klasse geregelt werden.


Dann hast du das offensichtlich an einer Stelle eingesetzt, an der $oItem keine Konfigitem-Instanz ist.
Vielen Dank für deine schnelle Antwort! Wegen den ersten Punkt hast du recht, werde ich umbauen, danke !
Wegen zweiten Punkt muss ich nachlesen, wie ich die Instanzen setze, denn ich bin nicht wirklich ein coder. Soll die Instanzierung in .tpl File stattfinden oder bei .php datei?
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Wenn ich deinen Screenshot richtig interpretiere, dann möchtest du an einer speziellen Stelle den Preis des ersten KonfigItems der ersten KonfigGruppe anzeigen. Darauf könntest du im Template mit
PHP:
{$Artikel->oKonfig_arr[0]->oItem_arr[0]->getPreisLocalized()}
zugreifen.
Aber Achtung! Das ist hardcoded und führt ohne weitere Prüfung (gibt es Konfigurationen?, Ist der erste Eintrag der ersten Konfiggruppe das Gewünschte?) ggfs. zu Fehlern oder falschen Ausgaben!
 
  • Gefällt mir
Reaktionen: StaniM

StaniM

Mitglied
24. Mai 2018
41
2
Wenn ich deinen Screenshot richtig interpretiere, dann möchtest du an einer speziellen Stelle den Preis des ersten KonfigItems der ersten KonfigGruppe anzeigen. Darauf könntest du im Template mit
PHP:
{$Artikel->oKonfig_arr[0]->oItem_arr[0]->getPreisLocalized()}
zugreifen.
Danke, das funktioniert tatsächlich! Ich wollte schon bei Artikel.php
PHP:
include 'class.JTL-Shop.Konfigitem.php';
rein basteln, dachte hat was mit public/private Funktionen zu tun.

Aber Achtung! Das ist hardcoded und führt ohne weitere Prüfung (gibt es Konfigurationen?, Ist der erste Eintrag der ersten Konfiggruppe das Gewünschte?) ggfs. zu Fehlern oder falschen Ausgaben!
Ja dies ist mir klar, an diese Stelle möchte ich alle meine Newbie Codierungen zurücksetzen und weiterhin mit Child-Template arbeiten! Allerdings habe ich den preis so hingekriegt
PHP:
                                           {if isset($Artikel->oKonfig_arr) && $Artikel->oKonfig_arr|@count > 0}
                                               {foreach from=$Artikel->oKonfig_arr item=oGruppe}
                                                   {if $oGruppe->getItemCount() > 0}
                                                       {foreach from=$oGruppe->oItem_arr item=oItem name=konfigitem}
                                                           {if $smarty.session.Kundengruppe->darfPreiseSehen}
                                                               <span>{$oItem->getPreisLocalized()}</span>
                                                           {/if}
                                                       {/foreach}
                                                   {/if}
                                               {/foreach}
                                           {/if}
Ist es so in Ordnung?

P.S.
Aber letztendlich muss ich es so programmieren, das (vermutlich) php nachschaut, ob es um dem Artikel aus der Kategorie A handelt oder Kategorie B handelt und dem entsprechend \productdetails\details_1.tpl oder \productdetails\details_2.tpl lädt... bei dem ersten kann Mann auch hardkoden, der zweite sollte eher Standard Template sein.
Habe meinem Chef gesagt, das ich damals AS3 Programmierung könnte nun denkt er ich sei ein coder :D
Muss dringend html+php lehrnen :confused:

Update
zu P.S. folgendes gefunden (falls jemand sucht)
https://forum.jtl-software.de/threads/unterschiedliche-detail-templates.80419/#post-466501
 
Zuletzt bearbeitet:

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Aber letztendlich muss ich es so programmieren, das (vermutlich) php nachschaut, ob es um dem Artikel aus der Kategorie A handelt oder Kategorie B handelt und dem entsprechend \productdetails\details_1.tpl oder \productdetails\details_2.tpl lädt... bei dem ersten kann Mann auch hardkoden, der zweite sollte eher Standard Template sein.
Ich würde hier eher empfehlen mit einem Funktionsattribut zu arbeiten.
PHP:
{if isset($Artikel->FunktionsAttribute['special_config_price']) && $Artikel->FunktionsAttribute['special_config_price'] == 1}
    {$Artikel->oKonfig_arr[0]->oItem_arr[0]->getPreisLocalized()}
{/if}
In der Wawi legst du dann das Funktionsattribut special_config_price an, und weist es den Artikeln zu, die deine geforderten Bedingungen erfüllen, sprich im ersten KonfigItem der ersten Konfiggruppe den gewünschten Preis haben. Damit wird das hardcoded etwas smarter und du bist im Template unabhängig von irgendwelchen Kategorie- oder ID-Abfragen.

P.S.: Nicht vergessen das Funktionsattribut auch für den Shop freizuschalten.
 
  • Gefällt mir
Reaktionen: StaniM

StaniM

Mitglied
24. Mai 2018
41
2
Ich würde hier eher empfehlen mit einem Funktionsattribut zu arbeiten.
PHP:
{if isset($Artikel->FunktionsAttribute['special_config_price']) && $Artikel->FunktionsAttribute['special_config_price'] == 1}
    {$Artikel->oKonfig_arr[0]->oItem_arr[0]->getPreisLocalized()}
{/if}
In der Wawi legst du dann das Funktionsattribut special_config_price an, und weist es den Artikeln zu, die deine geforderten Bedingungen erfüllen, sprich im ersten KonfigItem der ersten Konfiggruppe den gewünschten Preis haben. Damit wird das hardcoded etwas smarter und du bist im Template unabhängig von irgendwelchen Kategorie- oder ID-Abfragen.

P.S.: Nicht vergessen das Funktionsattribut auch für den Shop freizuschalten.
Danke für deine hilfe!
Also besser ist es einfach per if/else zu steuern ? z.B.
PHP:
{if $Artikel->Kategoriepfad == 'Blumen'}
    info1
{elseif $Artikel->Kategoriepfad == 'Gartengeräte'}
    info2
{elseif $Artikel->Kategoriepfad == 'Autos'}
    info3
{/if}
 

StaniM

Mitglied
24. Mai 2018
41
2
Okay, nun verstehe ich warum das Funktionsattribut ist besser als Kategorie- oder ID-Abfragen. Tausend mal Danke nochmals ! :)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Konfigurator Grundpreise Allgemeine Fragen zu JTL-Shop 0
Neu Ständiges Reload Icon in mobiler Version bei Konfigurator Allgemeine Fragen zu JTL-Shop 0
Neu JTL Konfigurator an anderen Shop binden Plugins für JTL-Shop 0
Neu Unterkategorie in mehreren Oberkategorien anzeigen Allgemeine Fragen zu JTL-Shop 3
Neu Ust-ID nach Land auf Rechnung anzeigen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Eigene Felder Checkbox Inhalt bzw. Text bei Mouseover anzeigen JTL-Wawi - Ideen, Lob und Kritik 0
Neu Neukunden Anzeigen lassen User helfen Usern - Fragen zu JTL-Wawi 2
Neu In einen Portlet-Container im Frontend per Ajax Datennachladen (weitere anzeigen) Technische Fragen zu Plugins und Templates 1
Beantwortet Werte eigener Kundenfelder im Template anzeigen Allgemeine Fragen zu JTL-Shop 0
Neu List & Label Neue Vorlage Projektbaustein Bild Logo nur auf erstem Exemplar anzeigen User helfen Usern - Fragen zu JTL-Wawi 2
Neu Eigene Felder im Verkauf als Spalten anzeigen User helfen Usern - Fragen zu JTL-Wawi 4
Neu Verbesserungsvorschlag Warenwert bei Teillieferung / für Auswahl anzeigen JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Neu Alle Artikel auf einer Seite im Shop anzeigen Allgemeine Fragen zu JTL-Shop 2
Neu Sortieren der Auftragsliste und dort die Artikelnummer anzeigen Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 0
Lieferschwelle anzeigen JTL-Wawi 1.7 2
Neu Menü, Logo und Suche beim Scrollen anzeigen / Mobilansicht Templates für JTL-Shop 0
Neu Alle Individuelle Preise anzeigen lassen JTL-Wawi 1.7 1
Neu Lieferstatus anzeigen "Nur, wenn Lagerbestand 0 ist" Allgemeine Fragen zu JTL-Shop 0
Gelöst In Workflow auf Stücklistenartikel zugreifen und dessen Eigenschaften anzeigen Gelöste Themen in diesem Bereich 7

Ähnliche Themen