Alter Preis durchgestrichen nur in bestimmter Kategorie anzeigen

  • Hallo,
    ich arbeite mit Virtuemart 3.0.16 und Joomla 3.6.2 und bin jetzt hier durch alle 26 Seiten gegangen, jedoch habe ich keinen passenden Thread gefunden, der mein Problem beschreibt. :(


    Ich habe mehrere Kategorien im Shop angelegt, darunter ist auch die Kategorie SALE, in der die Produkte günstiger angeboten werden und der alte Preis durchgestrichen angezeigt werden soll.
    In der Shopkonfiguration habe ich in den Preisangaben den Endverkaufspreis angeklickt, der bei allen Produkten angezeigt wird. Wenn ich die Rechenregel für die Produkte im SALE ansetze und bei den Preisangaben zusätzlich den Basispreis inkl. MwSt, aber ohne Preisnachlässe aktiviere, wird das auch schön angezeigt mit dem durchgestrichenen Preis, aber leider nicht nur bei den Sale-Produkten sondern bei allen Produkten im Shop.


    Wie kann ich das einrichten, dass der durchgestrichene alte Preis nur bei den Produkten in er Kstegorie SALE angezeigt wird? :confused:


    Vielen Dank im Voraus für Eure Hilfe.


    Lg grawesu

  • Servus,


    am einfachsten wäre, wenn Dein Template das "pageclass" von Joomla unterstützt. --> Google


    Vorgehensweise dann:
    - Durchgestrichenen Preis in der VM Konfig aktivieren.
    - Im CSS den durchgestrichenen Preis generell auf display: none; setzen. .price-crossed {display: none;}
    - Im Menüverweis "SALE" dann eine pageclass (Seitenklasse auf deutsch imho) setzen, z. Bsp. "sale_cat".
    - Im CSS .sale_cat .price-crossed {display: block;}


    Damit wird es so angezeigt, wie Du möchtest. Das ganze geht auch noch mit Sublayouts für die products.php und prices.php und Sublayoutzuweisung über den Menüverweis, so dass der Preis nicht im Quelltext der Seite erscheint, aber dann wird es etwas komplizierter.


    Hope it helps
    Stefan

  • Hallo Stefan,


    vielen Dank für Deine Antwort, der erste Part, den Preis generell auf display none zu stellen, hat wunderbar funktioniert. Ich habe einfach den Code in meine css-Datei (Override) geschrieben.
    Aber der zweite Part, also den Code mit der eigenen Seitenklasse für die Kategorie Sale hat leider nicht geklappt, ich nehme an, mein Template unterstützt keine pageclass.
    Was kann ich tun? Ich habe die Einstellungen erstmal so beibehalten, also der Basispreis mit MwSt ist aktiviert, wird aber nicht angezeigt, weil display auf none steht.
    Gibt es eine Alternative zur pageclass? Kann ich das irgendwie umgehen?
    Oder muss ich sublayouts verwenden? Da weiß ich nicht so genau, was ich da machen muss und könnte noch etwas Unterstützung gebrauchen.
    Zumindest stelle ich es mir so vor, dass ich in meiner override-css das Sublayout festlege (würde ich hinkriegen) oder in einer extra css-Datei und dann in der entsprechenden php-Datei den Code ändern oder dazu setzen muss - und da haperts dann bei mir ...


    Lg Nadja

  • Hallo,


    also ich habe mich jetzt mal dem Thema Pageclass einrichten gewidmet und folgendes getan:
    in der index.php in meinem Template-Ordner habe ich über dem <head> folgenden Code eingegeben:
    <?php
    $app = JFactory::getApplication();
    $docParams = $app->getMenu()->getActive();
    $pageclass = $docParams? trim($docParams->params->get('pageclass_sfx')) : '';
    $pageclass = $pageclass ? ' class="'.$pageclass.'"' : '';
    ?>


    dann habe ich bei <body> folgendes ergänzt:
    <body id="<?php echo $pageclass ? htmlspecialchars($pageclass) : 'default'; ?>">


    In meiner CSS-datei steht folgendes:
    .sale-cat .price-crossed {display: block;}


    Aber leider funktioniert es nicht, die Seite wird geladen, jedoch wird der durchgestrichene Preis nicht angezeigt.


    Vorher habe ich den folgenden Code verwendet (da ich ja Joomla 3.6.4 verwende), aber da wurde die Seite nicht geladen.
    <?php
    $menus = &JSite::getMenu();
    $menu = $menus->getActive();
    $pageclass = "";


    if (is_object( $menu )) :
    $params = new JParameter( $menu->params );
    $pageclass = $params->get( 'pageclass_sfx' );
    endif;
    ?>


    Was mache ich falsch?


    Lg nadja

  • Servus,


    Dein Ziel sollte sein:


    <body class="meine_seitenklasse">


    Du hast dort 'class="meine_seitenklasse"' komplett in id="...." gesteckt.


    <body class="$pageclass"> benötigst Du.


    Also muss $pageclass nur der Name einer Klasse sein. Das erreichst Du mit Deinem Code über:


    $pageclass = $docParams->params->get('pageclass_sfx'); Wobei $docParams eher verwirrend ist, Du holst damit das aktive Menü-Item, da passt eine Variable wie $menu.


    So hab ich das in meine Templates gebaut:


    $app = JFactory::getApplication();
    $menu = $app->getMenu()->getActive();
    $pageclass = '';
    if (is_object($menu)) $pageclass = $menu->params->get('pageclass_sfx');


    Im Body so aufgerufen:
    <body class="<?php echo $pageclass; ?>">


    Im CSS steht # für eine ID und der Punkt "." für Klassen.


    #meien_id {CSS-Zeugs}
    .meine_klasse {CSS-Zeugs}

  • Hallo Stefan,


    vielen Dank für Deine Hilfe. Es hat wunderbar geklappt.


    Also hier nochmal für alle, die auch gerne nur in einer Kategorie den durchgestrichenen Preis haben wollen.


    1. Durchgestrichenen Preis in der VM Konfig aktivieren, das ist "Basispreis inkl. MwSt, aber ohne Preisnachlässe"
    2. In der CSS-Datei (Override) den durchgestrichenen Preis generell auf display: none; setzen. .price-crossed {display: none;}
    3. In der gleichen css-Datei (Override) eine Klasse z. B. "sale-cat" anlegen .sale-cat .price-crossed {display: block;}
    4. In der Datei index.php über dem <head> folgenden Code eingeben:
    <?php
    $app = JFactory::getApplication();
    $menu = $app->getMenu()->getActive();
    $pageclass = '';
    if (is_object($menu)) $pageclass = $menu->params->get('pageclass_sfx');
    ?>
    5. Etwas weiter unten bei <body> den folgenden Code ergänzen:
    <body class="<?php echo $pageclass ? htmlspecialchars($pageclass) : 'default'; ?>">
    6. Im Menüverweis "Sale" dann bei Seitenklasse den Namen der Klasse eintragen, in meinem Fall sale-cat


    Jetzt wird in der Kategorie "Sale" zusätzlich der durchgestrichene Preis angezeigt.


    Lg nadja