"RIBBON_SPECIAL"-Anzeige ändern

Thema wurde von barbara, 17. Mai 2016 erstellt.

  1. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo Entwickler,

    Im Standard wird im Ribbon für Sonderangebote der der %-Wert angegeben. ich hätte da aber lieber den Euro-Wert, oder nur ein "%" ohne Wert, oder einfach ein "sale".

    Ich habe in der Datei
    templates -> Honeygrid - > smarty -> function_product_ribbons.php
    Die Zeile
    PHP:
    $arrTemp['text'] = ceil(round((- ($specialPrice $normalPrice)) * -1001)) . '%';
    z.B. in
    PHP:
    $arrTemp['text'] = 'sale';
    geändert, Cache geleert und es passiert dieses:
    Auf der Startseite steht "sale" im Ribbon, aber in einer Kategorie oder in einem Artikel springt die Anzeige am Ende des Ladevorgangs um
    Ein Refrsh der Seite führt zwar zur richtigen Anzeige, dafür habe cih dann JavaScript-Fehler.

    Welche Datei(en) müssen noch angepasst werden, damit die Anzeige das macht was ich möchte?

    Praktisch wäre es, wenn man das im Admin auswählen könnte, was auf diesem Teil stehen soll.
    (z.B. über eine Auswahl im Artikel oder beim Erstellen der Angebote)
     
  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20
    Was für eine IDE nutzt du? Eine Suche nach dem Begriff "sale" würde dir die IDE sämtliche Einträge raussuchen. Würde dir gerne helfen, aber hab morgen eine laaaaange Strecke vor mir... Evtl. morgen Abend ;)
     
  3. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo Monevo,
    Wenn ich jetzt wüsste, was eine IDE ist, könnte ich Dir glatt antworten o_O
    Irgendwie brauche ich wohl langsam eine weitere Software, oder ich muss mich mal mit denen beschäftigen, die ich schon habe aber noch nicht nutze, wie Netbeans :D
    .
     
  4. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20
    Netbeans ist z.B. eine IDE ;)
     
  5. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Dann muss ich mir das mal genauer ansehen, danke erstmal.
     
  6. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    So, nun habe ich mir netbeans angesehen und diverse Begriffe wie Sale, Ribbon, Ribbon_Special, Special gesucht und genau die Dateien gefunden, die ich vorher auch schon hatte.
    Und die bringen mich genau 0% weiter :(
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20
    Hast du einen Link wo ich es mir anschauen könnte?

    Das ändern/überladen einer Anzeige deuten sehr oft auf JS ... Vielleicht finden wir gemeinsam den Fehler ;):p
     
  8. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Hallo Monevo,

    ich schalte mal meinen Testshop online:

    (Link nur für registrierte Nutzer sichtbar.)

    Unten bei "Restposten" steht jetzt im Ribbon "Sale", Wenn Du auf einen Artikel klickst, erscheint das "Sale" während der Ladezeit, aber dann springt es um auf die %-Anzeige.
    Das selbe passiert in den Kategorie (z.B. Farben)
    Wenn ich die Kategorie neu lade (über das Symbol im Browser), bleibt das "Sale" stehen, dafür habe ich in Chromes Prüf-Konsole das:
    Code:
    initialize_template.min.js:1 Uncaught SyntaxError: Unexpected token ILLEGAL
    template_helpers.min.js:1 Uncaught TypeError: Cannot read property 'helpers' of undefined(anonymous function) @ template_helpers.min.js:1
    require.min.js:1 GET http://testshop.nbs-shop.de/undefinedassets/javascript/engine/libs/events.min.js?bust=1463669722265 req.load @ require.min.js:1q.load @ require.min.js:1b.load @ require.min.js:1b.fetch @ require.min.js:1b.check @ require.min.js:1b.enable @ require.min.js:1q.enable @ require.min.js:1(anonymous function) @ require.min.js:1(anonymous function) @ require.min.js:1each @ require.min.js:1b.enable @ require.min.js:1b.init @ require.min.js:1(anonymous function) @ require.min.js:1
    require.min.js:1 GET http://testshop.nbs-shop.de/undefinedassets/javascript/engine/libs/modal.ext-magnific.min.js?bust=1463669722265 req.load @ require.min.js:1q.load @ require.min.js:1b.load @ require.min.js:1b.fetch @ require.min.js:1b.check @ require.min.js:1b.enable @ require.min.js:1q.enable @ require.min.js:1(anonymous function) @ require.min.js:1(anonymous function) @ require.min.js:1each @ require.min.js:1b.enable @ require.min.js:1b.init @ require.min.js:1(anonymous function) @ require.min.js:1
    require.min.js:1 GET http://testshop.nbs-shop.de/undefinedassets/javascript/engine/libs/responsive.min.js?bust=1463669722265 req.load @ require.min.js:1q.load @ require.min.js:1b.load @ require.min.js:1b.fetch @ require.min.js:1b.check @ require.min.js:1b.enable @ require.min.js:1q.enable @ require.min.js:1(anonymous function) @ require.min.js:1(anonymous function) @ require.min.js:1each @ require.min.js:1b.enable @ require.min.js:1b.init @ require.min.js:1(anonymous function) @ require.min.js:1
    require.min.js:1 GET http://testshop.nbs-shop.de/undefinedassets/javascript/engine/libs/interaction.min.js?bust=1463669722265 req.load @ require.min.js:1q.load @ require.min.js:1b.load @ require.min.js:1b.fetch @ require.min.js:1b.check @ require.min.js:1b.enable @ require.min.js:1q.enable @ require.min.js:1(anonymous function) @ require.min.js:1(anonymous function) @ require.min.js:1each @ require.min.js:1b.enable @ require.min.js:1b.init @ require.min.js:1(anonymous function) @ require.min.js:1
    require.min.js:1 GET http://testshop.nbs-shop.de/undefinedassets/javascript/engine/libs/modal.min.js?bust=1463669722265 req.load @ require.min.js:1q.load @ require.min.js:1b.load @ require.min.js:1b.fetch @ require.min.js:1b.check @ require.min.js:1b.enable @ require.min.js:1q.enable @ require.min.js:1(anonymous function) @ require.min.js:1(anonymous function) @ require.min.js:1each @ require.min.js:1b.enable @ require.min.js:1b.init @ require.min.js:1(anonymous function) @ require.min.js:1
    nach neu laden mit "Strg" und "F5" stehen die % im Ribbon und die Fehler sind weg.
    Auf der Artikelseite ist es ähnlich.
     
  9. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20
    Hab mir das ganze mal angeschaut...

    In der Datei "templates/Honeygrid/smarty/function.product_ribbons.php" würde ich an deiner Stelle lieber den Part ab Zeile 58 ändern in

    PHP:
    if(count($arrTemp getSpecials($params)) > 0)
    {
       
    $arrResult['ribbons'][] = array(
          
    'class' => $arrTemp['class'],
          
    'text'  => $sectionArray['RIBBON_SPECIAL'// $arrTemp['text']
       
    );
    }

    Danach noch die Klasse "user_classes/overloads/CheckStatusController" mit der Datei "BugfixCheckStatusController" und dem folgenden Code überladen

    PHP:
    <?php

    class BugfixCheckStatusController extends BugfixCheckStatusController_parent
    {
        const 
    SALES_RIBBON_TEXT true;

        protected function 
    _getDiscount()
        {
            require_once 
    DIR_FS_INC.'xtc_get_tax_class_id.inc.php';

            
    $combiPrice 0;
            
    $discount   '';
            
    $xtcPrice   = new xtcPrice($_SESSION['currency'], $_SESSION['customers_status']['customers_status_id']);

            if (isset(
    $_GET['properties_values_ids'])) {
                
    $propertiesControl MainFactory::create_object('PropertiesControl');
                
    $combiId           $propertiesControl->get_combis_id_by_value_ids_array(xtc_get_prid($_GET['products_id']),
                    
    $_GET['properties_values_ids']);
                
    $combiPrice        $xtcPrice->get_properties_combi_price($combiId);
            }

            
    $specialPrice $xtcPrice->xtcCheckSpecial($_GET['products_id']) + $combiPrice;
            
    $normalPrice  $xtcPrice->getPprice($_GET['products_id']) + $combiPrice;

            if (isset(
    $_GET['id']) && is_array($_GET['id'])) {
                foreach (
    $_GET['id'] as $optionId => $valueId) {
                    
    $optionPrice $xtcPrice->xtcGetOptionPrice($_GET['products_id'], $optionId$valueId);
                    
    $specialPrice += $optionPrice['price'];
                    
    $normalPrice += $optionPrice['price'];
                }
            }

            
    $isSpecial false;

            if (
    $specialPrice $normalPrice && $specialPrice 0) {
                
    $discount  ceil(round((- ($specialPrice $normalPrice)) * -1001));
                
    $isSpecial true;
            }

            if (
    $isSpecial) {
                
    self::SALES_RIBBON_TEXT ?
                    
    $discount '<div class="ribbon-special"><span>SALE</span></div>' :
                    
    $discount '<div class="ribbon-special"><span>'.$discount.'%</span></div>';

                return 
    $discount;
            }

            return 
    $discount;
        }
    }

    Wie so oft, hast du einen Schalter mit "const SALES_RIBBON_TEXT = true;"
    - true = SALE
    - false = -25% (oder was auch immer)
     
  10. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ich teste das jetzt und werde gleich berichten :)
     
  11. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Perfekt!
    Danke, danke, danke.

    Und nun die Preisfrage:
    Wie bist Du auf die CheckStatusController gekommen?


    P.S. für die Anfänger: hier "BugfixCheckStatusController" gehört noch ein .inc.php drann,
    BugfixCheckStatusController.inc.php
     
  12. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    30. Oktober 2015
    Beiträge:
    2.349
    Danke erhalten:
    573
    Danke vergeben:
    506
  13. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    115
    Danke vergeben:
    20
    Immer wieder gerne ;)


    Durch Auschlussverfahren :p


    Kann, muss aber nicht.
    Ist bei mir eine Angewohnheit nur Dateien die per "include" eingefuegt werden mit .inc abzulegen :)


    Nein, bin ich nicht! Versuche mich aber stets zu bessern :D
     
  14. wvnetdesign

    wvnetdesign Erfahrener Benutzer

    Registriert seit:
    16. Januar 2013
    Beiträge:
    393
    Danke erhalten:
    1
    Danke vergeben:
    95
    Hi!
    Ich würde das gerne in mit dem Honeygrid-Theme umsetzen, also konkret nur das Porzentzeichen aber nicht die Zahl. Gehts das überhaupt? Wenn ja, wie?
    Shop GX4
    Thx schonmal
    Heidemarie
     
  15. wvnetdesign

    wvnetdesign Erfahrener Benutzer

    Registriert seit:
    16. Januar 2013
    Beiträge:
    393
    Danke erhalten:
    1
    Danke vergeben:
    95
    Schubs nochmal