Ebben a cikkben átnézzük egy egyedi oldal létrehozásának tematikáját. Természetesen nem az adminba beépített CMS-re gondolok hanem – teszem azt – egy egyedi árajánlat elkészítésére vonatkozóra a Prestashop webáruházunkon belül.
Nézzünk egy példát a prestashop “contact-us” vagyis üzenetküldés oldalának tematikájára. Az URL-ünk egy szűz shopban így néz ki a fenti oldalnál, SEO barát URL nélkül:
http://tesztdomain.hu/index.php?controller=contact
Ez az oldal behozza Nekünk az üzenetküldés formját. Mi kell nekünk ahhoz hogy ez az egész működjön?
Legalább 3 dolog:
1) egy php a gyökérben, aki az azonosításért és az átirányításért felel;
2) egy tpl a téma könyvtárban aki megmondja hogyan nézzen ki (sablonfájl), és végül;
3) még egy php a controllers könyvtárban: ő felel az igazi tartalomért, itt történik a valódi munka.
Hogyan néz ki ez a mi esetünkben (contact)?
1) contact-form.php
a gyökérkönyvtárban;
2) contact-form.tpl
a témakönyvtárban;
3) ContactController.php
a /controllers/front/ könyvtárban.
Most hogy ezt tudjuk, már hozzá tudunk látni egy egyedi oldal létrehozásának. Teszt kedvéért legyen ez a fent említett Árajánlatkérés.
Így a fentiek alapján készítek mindhárom fájlból egy másolatot, és átírom a nevüket eképpen:
1) contact-form.php - arajanlat.php
,
2) contact-form.tpl - arajanlat.tpl
,
3) ContactController.php - ArajanlatController.php
,
majd nekilátok átírni a belsejét, példának okáért az arajanlat.php-t így:
require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();
Tools::redirect('index.php?controller=arajanlat'.($_REQUEST ? '&'.http_build_query($_REQUEST, '', '&') : ''), __PS_BASE_URI__, null, 'HTTP/1.1 301 Moved Permanently');
Az arajanlat.tpl-ben létrehozom a kinézetet: textfieldek, checkboxok, H (<h1>,<h2>,<h3>….) tag-ek és magyarázó szövegek.
Végül az ArajanlatController.php-ben módosítom az osztályunk nevét így:
class ArajanlatControllerCore extends FrontController
{
public $php_self = 'arajanlat';
public $ssl = true;
Majd létrehozzuk ezen a php-n belül azokat a kódrészeket amik átveszik és feldolgozzák az árajánlattal kapcsolatos adatokat. Ha ezt elkészítettük és feltöltöttük a helyére, akkor ezen a linken már az új árajánlatkérő formunknak kell bejönnie:
http://tesztdomain.hu/index.php?controller=arajanlat
Amit persze majd SEO barát URL-el szépen átírunk valami olvashatóbbá, szebbé.
Az ArajanlatController.php-ben szükséges lehet átírni a sablonfájl nevét:
$this->setTemplate(_PS_THEME_DIR_.'contact-form.tpl');
erre:
$this->setTemplate(_PS_THEME_DIR_.'arajanlat.tpl');
Valamint megemlíteném, hogy jelen árajánlatkérős esetünkben nem kell feltétlenül a feldolgozó kódot az ArajanlatController-be tenni, lehet külön php-be is. Ebben az esetben a tpl-ben lévő form action-t eképpen kell módosítani és kész is.
Szerkesztés: ha 1.5.6.0 alatt “Fatal error: Class ‘XYcontroller’ not found in …/classes/controller/controller.php on line 128” hibaüzenetet kapsz lekéréskor, akkor töröld a cache-t:
Advanced parameters => performance => clean cache Smart and autoload, magyarul:
Haladó beállítások => Teljesítmény => Clear Smarty cache & Autoload cache.
Ha kérdésed van ne habozz velem felvenni a kapcsolatot! 🙂
Eladásra fel! 🙂