Egyedi oldal létrehozásának tematikája 1.5.x alatt

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.

Árajánlatkérő Form

Árajánlatkérő Form

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 cashe-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! 🙂

Ha segített a cikk, meghívhatsz egy kávéra! 🙂


Puizl Attila Programozó

Az íróról: Puizl Attila

Puizl Attila vagyok, több éve készítek sikeres Webáruházakat Prestashop rendszerrel. Célom hogy a tudásom minőséggé, munkám pedig eredményessé váljon.

Weboldal: → Prestashop Készítés és Fejlesztés

Még megtalálsz:

Vagyis hogyan töltsük ki helyesen a Prestashop Meta-Tag (SEO - keresőoptimalizálás) fület? SEO - Angol SEO - Magyar   A cikk kedvéért legyen a termék neve: "Monster High 13 kívánság baba" a Monster High játékból. Meta Cím - Meta title Ez általában…
Bizonyos prestashop verziókban a 404-es oldalak nem a logikus <meta name="robots" content="noindex,follow"> értéket kapják, hanem a sima <meta name="robots" content="index,follow"> -ot, ami azt eredményezi hogy a Google ugyanúgy beindexeli mint a rendes (kategóriák, termékek) oldalakat. A következőképpen tudjuk ezt orvosolni: nyissuk meg a /controllers/front/PageNotFoundController.php  -t, majd a végére biggyesszük be…