statikus blokkok hozzáadása bizonyos CMS oldalakhoz Magento layoutokkal

miközben egy projekten dolgoztam, minden CMS oldalon hozzá kellett adnom egy egyedi statikus blokkot a fejléc és a CMS oldal fő tartalma között. Az elemnek teljesen testreszabhatónak kellett lennie a Magento admin panelen keresztül, és könnyen létrehozhatónak kellett lennie új CMS oldalakon, könnyen módosíthatónak és eltávolíthatónak. Mivel ezt az elemet a fő tartalomon kívül kellett elhelyezni, a Magento admin CMS használatával nem lehetett hozzáadni. Hozzá kellett adni a Magento elrendezések használatával. Itt van, hogyan értem el ezt.

mint Ön is tudja, a Magento csak a következő fogantyúkat kínálja a CMS oldalakhoz:

  • Kezdőlap fogantyú és 404 oldalas fogantyú
  • a fogantyú minden CMS oldalhoz

ha egy CMS blokkot meg kellene jeleníteni a kezdőlapon, akkor a kezdőlapot használnánk a helyi nyelvünkön.xml fájl. Ugyanígy, ha ugyanazt a statikus blokkot kellett volna megjeleníteni az összes CMS oldalon, akkor minden CMS oldalhoz fogantyút használtunk volna.

de mi a helyzet az egyes felhasználók által létrehozott CMS oldalakkal?

Frontend fejlesztői megoldás

szerencsére a Magento lehetővé teszi számunkra, hogy minden CMS oldalhoz egyedi elrendezést határozzunk meg a Magento admin panelen található CMS editor szerkesztésével. Ily módon a CMS-oldal elrendezését az adott oldal meghatározott értékeinek felhasználásával módosítják, amelyeket az adatbázisban tárolnak.

először létrehozunk egy statikus blokkot, amelyet hozzá akarunk adni egy adott CMS oldalhoz, amelyet static-block-1-nek nevezünk el, és néhány egyszerű stílust alkalmazunk rá.

<div class="element-blue"> <h3>Static Block 1</h3> <p>This is blue static element 1 </p></div>

ezután létrehozunk egy új CMS oldalt, amely tartalmazza a létrehozott statikus blokkot, amelyet a layout Update XML segítségével adunk hozzá a Designs lapon, egy fejléccel és egy bekezdéssel együtt. Ebben a példában 1 oszlopelrendezést fogunk használni az összes CMS-oldalhoz.

<reference name="root"> <block type="cms/block" name="myelement"> <action method="setBlockId"><block_id>static-block-1</block_id></action> </block></reference>

és végül frissítenünk kell a sablonfájljainkat, és hozzá kell adnunk egy sor kódot, amely felhívja az elemünket. Mivel az összes CMS oldalhoz 1 oszlop elrendezést használtunk, az 1 oszlopot módosítjuk.phtml sablon fájl. Ha hozzá szeretné adni az elemeket olyan CMS oldalakhoz, amelyek más sablont használnak (például 2columns-left), módosítania kell ezeket a fájlokat.

…<div class="page"> <?php echo $this->getChildHtml('header') ?> <?php echo $this->getChildHtml('myelement') ?>…

ebben a példában egy további statikus blokkot készítettem, amely különbözik az elsőtől, és két további CMS – oldalt-egyet az általam létrehozott új elemhez, egy másikat, amely nem tartalmaz elrendezési frissítéseket, és emiatt nem tartalmazza az általunk létrehozott elemeket.

eredmények

CMS oldal 1 Kék statikus blokk:

CMS oldal 1

a CMS HTML kódja oldal 1:

01-code-1

CMS oldal 2 zöld statikus blokk:

02-cms-2

a CMS oldal HTML kódja 2:

02-code-2

CMS oldal 3 amelyhez nem állítottunk be elrendezési frissítéseket az XML-ben, ezért nem mutat létrehozott statikus blokkokat.

03-cms-3

a CMS HTML kódja oldal 3:

03-code-3

a jó és a rossz és az alternatíva

bár ez egy nagyon gyors és egyszerű megoldás, amely jól működik, unalmassá válik, ha ugyanazokat a lépéseket kell végrehajtania minden hozzáadni kívánt elemnél, még egy olyan projektnél is, amelynek 6 vagy 7 CMS oldala volt.

ha szeretne egy backend-orientált megoldás erre, Tim Reynolds, Magento Certified Fejlesztő, írt egy cikket a témában hozzátéve kütyü adott CMS oldalak, ahol ő használt esemény megfigyelők generálni egyedi fogantyúk minden CMS oldal.

Leave a Reply

Az e-mail-címet nem tesszük közzé.