OpenCart 3.0.3.x Journal3 3.x Dynamic Content Kétnyelvű

Conditional Description

Journal3 Dynamic Content vezérlő, amely termékoldalon kondicionálisan jeleníti meg a termékleírást: ha az angol leírás elegendően hosszú, azt adja vissza teljes egészében; egyébként a magyar leírás első 300 karakterét mutatja rövidítve – mindkét esetben egy „Bővebben" linkkel kiegészítve.

Mit csinál?

A kiegészítő a Journal3 Dynamic Content mechanizmusán belül fut, és a termékoldal egy kijelölt blokkjában dinamikusan tölti be a megfelelő leírásrészletet. Egyetlen PHP fájlból áll, nincs admin felülete – kizárólag a Journal3 modul-konfigurációban kell megadni.

  • Lekéri az adott termék angol (language_id = 1) és magyar (language_id = 2) leírását egyetlen SQL lekérdezéssel.
  • Ha az angol leírás legalább 40 érdemi karaktert tartalmaz (HTML-tagek nélkül), azt adja vissza dekódolt HTML formában.
  • Ha az angol leírás hiányzik vagy túl rövid, a magyar leírás első 300 karakterét adja vissza egyszerű szövegként (félszó-törés nélkül).
  • Minden esetben egy <a id="read-more-desc">Bővebben</a> linket fűz a kimenethez, amelyet egy külső JavaScript kezel a teljes leírás megjelenítéséhez.
  • Ha a product_id nem érhető el a kérésben, üres stringet ad vissza – oldalhibát nem okoz.

A vásárló a termékoldalon egy kompakt leírásrészletet lát, majd a „Bővebben" linkre kattintva fér hozzá a teljes tartalomhoz. Az adminnak nincs tennivalója a kiegészítővel kapcsolatban termékszinten – elegendő a megfelelő nyelvű leírást kitölteni a termékadatlapon.

Hogyan működik?

1

Belépési pont – Dynamic Content hívás

A Journal3 a termékoldal renderelése közben meghívja az index($settings) metódust. Az URL-ből vagy a kérés paramétereiből veszi a product_id-t ($this->request->get['product_id']). Ha nincs jelen, a metódus azonnal üres stringgel tér vissza, hiba nélkül.

2

Leírások lekérése – egyetlen SQL lekérdezés

Egy SELECT-tel egyszerre kéri le az angol és a magyar leírást az oc_product_description táblából (language_id IN (1, 2)). Ez minimalizálja az adatbázis-terhelést. Az eredményt az language_id szerint szétválasztja két változóba ($desc_en_raw, $desc_hu_raw).

3

Döntési logika – angol vs. magyar

Az angol leírásból eltávolítja a HTML-tageket és dekódolja a HTML-entitásokat (strip_tags + html_entity_decode), majd megszámolja az UTF-8 karakterek számát. Ha ez eléri a 40 karaktert, a teljes angol HTML-tartalmat adja vissza dekódolva, hozzáfűzve a „Bővebben" linket.

Ha az angol leírás hiányzik vagy 40 karakternél rövidebb, a magyar leírás tiszta szövegét veszi alapul. Ebből az első 300 karaktert vágja ki (mb_substr), majd egy regex-szel (preg_replace('/\s+\S*$/u', '', ...)) eltávolítja az esetleg félbeszakadt utolsó szót. Az eredményt htmlspecialchars-szal biztonságosan escapeli, sortöréseket <br>-re alakítja, és hozzáfűzi a „Bővebben" linket.

4

„Bővebben" link – külső JavaScript kapcsolódási pont

A visszaadott HTML-ben minden esetben szerepel egy <a id="read-more-desc" role="button">Bővebben</a> elem. Ennek kezelése (pl. a teljes leírás megjelenítése modálban vagy expand-effekttel) egy külön JavaScript-ben van – ez a kiegészítő csak a linket szúrja be, a viselkedést nem definiálja.

Telepítés

1

Fájlok másolása

Másold az upload/ mappában lévő fájlt az OpenCart gyökérkönyvtárába:

upload/
  └── catalog/
      └── controller/
          └── journal3/
              └── conditional_description.php catalog/controller/journal3/conditional_description.php
Tipp: Ha már létezik a catalog/controller/journal3/ mappa (más Journal3 dynamic content kiegészítők miatt), csak a fájlt kell bemásolni.

Journal3 beállítás

A fájl másolása után a vezérlőt be kell kötni a Journal3 admin felületén Dynamic Content modulként a termékoldalon.

1

Dynamic Content modul létrehozása

Navigálj az Admin → Journal3 → Modules → Dynamic Content menüpontba, és adj hozzá egy új modult. A Controller mezőbe írd be:

Érték – Controller mező
journal3/conditional_description
2

Elhelyezés a termékoldalon

Navigálj a Journal3 → Theme Editor → Product Page nézetbe, és húzd be az újonnan létrehozott Dynamic Content modult arra a pozícióra, ahol a rövidített leírást meg szeretnéd jeleníteni (pl. a főleírás helyett vagy felett).

Figyelem: A „Bővebben" link (id="read-more-desc") csak akkor működik, ha a tematikába be van kötve az azt kezelő JavaScript. Ennek hiányában a link megjelenik, de kattintásra nem csinál semmit.
3

Cache törlése

Mentés után töröld az OpenCart cache-t: Admin → Dashboard → fogaskerék ikon → Refresh, majd töröld a böngésző cache-t is (Ctrl+Shift+R / Cmd+Shift+R).

Fájlszerkezet

conditional_description-oc305j328/
├── docs/
    ├── conditional-description-oc3j3.html Ez a dokumentáció
    └── docs.css Közös stíluslap (nem módosítható)
└── upload/
    └── catalog/controller/journal3/
        └── conditional_description.php Journal3 Dynamic Content vezérlő – a kiegészítő egyetlen fájlja

Változásnapló

VerzióDátumVáltozás
1.0 2026-03-30 Első kiadás. Kondicionális leírás-megjelenítés: angol leírás prioritása (≥40 karakter), visszaesés magyar rövidítésre (300 karakter, félszó-törés nélkül). OpenCart 3.0.3.x + Journal3 3.x alatt tesztelt.