Megtakarítás kijelzése a termékoldalon

Twig CSS JavaScript OpenCart  ·  Journal3 téma  ·  Termékoldalon

Mi ez a funkció?

A funkció a termékoldal árblokk-jában – a nettó ár (és az adósor) alatt – megjeleníti a vásárló által elérhető forintban kifejezett megtakarítást, amennyiben az aktuális kedvezmény eléri a megadott küszöbértéket.

Példa megjelenés Akciós ár: 17 990 Ft  /  Eredeti ár: 24 990 Ft
Megtakarítás: 7 000 Ft

A funkció csak akkor jelenik meg, ha mindkét feltétel teljesül:

  • Van special (akciós) ár a terméknél, és
  • A kedvezmény összege eléri a 2 000 Ft-ot, VAGY a kedvezmény aránya eléri a 10%-ot.

Környezet

ÖsszetevőÉrték
PlatformOpenCart 3.x
TémaJournal3
Módosított sabloncatalog/view/theme/journal3/template/product/product.twig
CSS helyeJournal3 Admin → Custom CSS (globális vagy termékoldalas)
Logika helyeInline <script> a Twig sablonban
Külső függőségNincs (natív JS, jQuery nem szükséges)
Figyelem – Journal3 frissítés A Journal3 témafrissítések felülírhatják a product.twig fájlt. Frissítés előtt készíts biztonsági másolatot, és frissítés után ellenőrizd a módosítást.

Működési logika

A szkript a Twig által renderelt ár-stringekből (pl. "24 990 Ft") kiszedi a számokat, kiszámítja a különbséget, majd – ha a feltételek teljesülnek – injektálja a szöveget a DOM-ba.

Megjelenítési feltételek

Feltétel
Érték
Megjelenik?
Nincs akciós ár
Nem
Kedvezmény < 10% és < 2 000 Ft
pl. 500 Ft / 5%
Nem
Kedvezmény ≥ 10%
pl. 3 000 Ft / 12%
Igen
Kedvezmény ≥ 2 000 Ft
pl. 2 500 Ft / 8%
Igen
Kedvezmény ≥ 10% és ≥ 2 000 Ft
pl. 5 000 Ft / 20%
Igen

Pseudokód

Logika
eredeti  = parseInt(price_string)     // pl. 24990
akcio    = parseInt(special_string)   // pl. 17990
diff     = eredeti - akcio            // 7000
pct      = diff / eredeti * 100       // 28%

ha (eredeti > akcio) ÉS (pct >= 10 VAGY diff >= 2000):
    megjelenit("Megtakarítás: 7 000 Ft")

Megjelenés előnézet

17 990 Ft
24 990 Ft
Tartalmazza az ÁFÁ-t
Megtakarítás: 7 000 Ft

A fenti előnézet statikus, az élő oldal az aktuális árakat jeleníti meg.

Twig sablon módosítás

Fájl elérési útja catalog/view/theme/journal3/template/product/product.twig

Keresd meg az árblokk-ot a fájlban (a product-price-group osztályú div-et), és illeszd be az alábbi kódrészletet a {% if tax %} blokk utáni, a {% if points %} blokk előtti pozícióba.

Beillesztendő kód

Twig + JS product.twig
    <div id="j3-savings" class="j3-savings"></div>
    <script>(function(){
      var o=parseInt("{{ price }}".replace(/[^0-9]/g,'')),
          n=parseInt("{{ special }}".replace(/[^0-9]/g,''));
      var s = (o-n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
      if(o>n && ((o-n)/o*100>=10 || (o-n)>=2000))
        document.getElementById('j3-savings').innerHTML=
        'Megtakarítás: <strong>'+s+' Ft</strong>';
    })();</script>

Teljes árblokk kontextusban

Az alábbi részlet mutatja, hova kerül a kód a meglévő struktúrában:

Twig product.twig – árblokk részlet
{# ... #}
{% if price and not j3.document.isPopup('options') %}
<div class="product-price-group">
  <div class="price-wrapper">
    <div class="price-group">
      {% if not special %}
        <div class="product-price">{{ price }}</div>
      {% else %}
        <div class="product-price-new">{{ special }}</div>
        <div class="product-price-old">{{ price }}</div>
      {% endif %}
    </div>
    {% if tax %}
      <div class="product-tax">{{ text_tax }} {{ tax }}</div>
    {% endif %}

    <!-- ▼▼▼ MEGTAKARÍTÁS – IDE KERÜL ▼▼▼ -->
    <div id="j3-savings" class="j3-savings"></div>
    <script>(function(){
      var o=parseInt("{{ price }}".replace(/[^0-9]/g,'')),
          n=parseInt("{{ special }}".replace(/[^0-9]/g,''));
      var s = (o-n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
      if(o>n && ((o-n)/o*100>=10 || (o-n)>=2000))
        document.getElementById('j3-savings').innerHTML=
        'Megtakarítás: <strong>'+s+' Ft</strong>';
    })();</script>
    <!-- ▲▲▲ MEGTAKARÍTÁS VÉGE ▲▲▲ -->

    {% if points %}
      <div class="product-points">{{ text_points }} {{ points }}</div>
    {% endif %}
  </div>
</div>
{% endif %}

CSS stílus hozzáadása

Hova kerül? Journal3 Admin → Styles fül → Custom CSS mező (globális szinten, vagy ha csak termékoldalon kell, a Product Page Custom CSS-be).
CSS Journal3 → Custom CSS
/* Megtakarítás – termékoldalon */
.j3-savings {
  color: #28a745;
  margin-top: 2px;
  font-weight: normal;
  white-space: nowrap;
  padding-right: 16px;
}

Küszöbértékek módosítása

A megjelenési feltételek a Twig fájlban lévő inline szkriptben változtathatók:

JS – feltétel sor
if(o>n && ((o-n)/o*100>=10 || (o-n)>=2000))
ParaméterAlapértelmezettMit jelent
(o-n)/o*100 >= 10 10% Minimális kedvezmény arány. Csökkentsd (pl. 5), ha alacsonyabb százaléknál is meg kell jelenni.
(o-n) >= 2000 2 000 Ft Minimális kedvezmény összeg forintban. Módosítsd az üzleti igény szerint.
Fontos: az árformátum A szkript a Twig által renderelt ár-stringből .replace(/[^0-9]/g,'')-vel szedi ki a számot. Ha az árak nem forintban, hanem más pénznemben vagy formátumban jelennek meg (pl. "1.234,56 EUR"), a számkinyerés és a kijelzett pénznem szimbólum (' Ft') módosítást igényel.

Stílusok testreszabása

CSS tulajdonságAlapértelmezettLeírás
color#28a745Szöveg színe (Bootstrap zöld). Módosítható bármely hex/rgb értékre.
margin-top2pxTávolság az adósor alatt.
font-weightnormalA <strong> tag az összeg szót teszi kövérré; a sor maga normál súlyú.
white-spacenowrapMegakadályozza a sortörést az összegnél.
padding-right16pxVizuális légzés a jobb széltől.

Ikonos verzió (opcionális)

Ha ikont is szeretnél a szöveg elé (pl. ✂ vagy egy SVG), cseréld le az innerHTML-t:

JS – ikonos változat
document.getElementById('j3-savings').innerHTML=
  '✂ Megtakarítás: <strong>'+s+' Ft</strong>';

Megjegyzések & korlátok

  • Csak termékoldalon jelenik meg – a {% if price and not j3.document.isPopup('options') %} feltétel kizárja a Quick View popup-ot.
  • Árformátum-függő – a regex csak a számjegyeket tartja meg. Tizedes jegyeket (pl. fillér) tartalmazó összegnél az érték pontatlan lehet.
  • Nincs szerver-oldali logika – a számítás kliens-oldalon, JavaScript-tel történik, kizárólag a renderelt ár-stringek alapján.
  • Opcionális cache ürítés – a .twig módosítása után ürítsd a Journal3 és az OpenCart gyorsítótárát (Admin → Dashboard → fogaskerék ikon).
  • Több pénznem – több pénznem esetén a ' Ft' szöveg módosítása szükséges (pl. Twig változóval: {{ currency.symbol_right }}).

Változásnapló

DátumVerzióVáltozás
2026-03-18 1.0 Kezdeti implementáció. Küszöb: ≥10% vagy ≥2 000 Ft. Inline JS + Custom CSS.