Aceasta este pagina pe care utilizatorul o va vedea pentru prima data, de obicei. Ea consta din cinci parti. Pe stanga ai rasfoirea categoriilor. Clientul poate da click aici printre categorii pentru a vizualiza apoi produsele din categoria aleasa. In partea dreapta vei pune mini cosul de cumparaturi. Daca clientul adauga un produs, el va aparea in partea dreapta, in mini cosul de cumparaturi. In partea de sus, ai header-ul, iar in partea de jos footer-ul site-ului. In header, vei pune logo-ul site-ului, iar in footer informatii despre firma.
In partea centrala ai continutul paginii. Aici vei avea categoriile de produse si produsele. Ce vei vedea aici, depinde de actiunile vizitatorului. Cand va ajunge pentru prima data aici, va vedea lista de categorii. Daca va da click pe o categorie va vedea lista de produse din aceea categorie. Si daca va da click pe un produs, va vedea detaliile acelui produs.
Mai intai vei incarca bibliotecile de functii. Fisierul config.php contine fel de fel de initializari, ca setarea conexiuni la baza de date, definirea constantelor si incarca la randul lui alte fisiere cerute de site.
// acestea sunt folderele unde stocam
// imaginile categoriilor si ale produselor
define('CATEGORY_IMAGE_DIR', 'images/category/');
define('PRODUCT_IMAGE_DIR', 'images/product/');
// limitare pentru imaginea mare
define('MAX_PRODUCT_IMAGE_WIDTH', 300);
// limitare pentru imaginea mica
define('THUMBNAIL_WIDTH', 75);
if (!get_magic_quotes_gpc()) {
if (isset($_POST)) {
foreach ($_POST as $key => $value) {
$_POST[$key] = trim(addslashes($value));
}
}
if (isset($_GET)) {
foreach ($_GET as $key => $value) {
$_GET[$key] = trim(addslashes($value));
}
}
}
// incarcam alte biblioteci de functii
require_once 'database.php';
require_once 'common.php';
// preia datele despre magazin
$shopConfig = getShopConfig();
?>
config.php
Urmeaza acum fisierul category-functions.php. Acest fisier contine cateva functii care sunt:
• formatCategories()
Aceasta functie este utilizata de include/leftNav.php. Scopul ei este sa genereze lista de categorii unde una dintre categoriile principale se va extinde si va afisa categoriile copii.
• getCategoryList()
Genereaza o lista a categoriilor principale.
• getChildCategories()
Genereaza o lista cu toate categoriile copii
• fetchCategories()
Genereaza o lista cu toate categoriile ? principale si copii.
Dupa incarcarea fisierelor biblioteca, setezi o variabila de sesiune $_SESSION['shop_return_url']. Valoarea acestei variabile este adresa URL a paginii pe care o vedem in acest moment. Aceasta variabila este utilizata de cosul de cumparaturi. Cand vei da click pe Continua cumparaturile, te vei intoarce la pagina de unde ai ajuns la cosul de cumparaturi.
Urmatorul pas este sa vezi daca exista variabilele $_GET['c'] ( category id ) si $_GET['p'] ( product id ). Daca nu exista, afisezi lista de categorii. Daca exista category id, afisezi produsele din aceea categorie si daca exista product id afisezi detaliile produsului respectiv.
Dupa cum poti observa, pagina principala nu face foarte mult. Scopul ei este sa adune restul componenetelor, mini cosul, lista de categorii, header-ul si footer-ul.
Sa aruncam acum o privire asupra fisierului header.php. Un lucru important care se petrece aici este setarea titlului paginii. El se schimba de la o pagina la alta in functie de ceea ce doreste clientul sa vizualizeze. Titlul paginii este foarte important pentru motoarele de cautare, asa incat este bine sa avem grija de acest aspect.
function formatCategories($categories, $parentId)
{
// $navCat stocheaza toate categoriile copii
// ale $parentId
$navCat = array();
// extinde doar categoriile cu acelasi parinte
// celelalte raman compacte
$ids = array();
foreach ($categories as $category) {
if ($category['cat_parent_id'] == $parentId) {
$navCat[] = $category;
}
// salveaza id-urile pentru o utilizare viitoare
$ids[$category['cat_id']] = $category;
}
$tempParentId = $parentId;
// cauta categoria pana cand id parinte este 0
while ($tempParentId != 0) {
$parent = array($ids[$tempParentId]);
$currentId = $parent[0]['cat_id'];
// preia toate categoriile de pe acelasi nivel cu parintele
$tempParentId = $ids[$tempParentId]['cat_parent_id'];
foreach ($categories as $category) {
if ($category['cat_parent_id'] == $tempParentId && !in_array($category, $parent)) {
$parent[] = $category;
}
}
function getCategoryList()
{
$sql = "SELECT cat_id, cat_name, cat_image
FROM tbl_category
WHERE cat_parent_id = 0
ORDER BY cat_name";
$result = dbQuery($sql);
$cat = array();
while ($row = dbFetchAssoc($result)) {
extract($row);
// seteaza titlu implicit
$pageTitle = 'My Online Shop';
// daca exista un product id adauga titlul produsului
// daca exista un category id adauga tiltul categoriei
if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
$pdId = (int)$_GET['p'];
$sql = "SELECT pd_name
FROM tbl_product
WHERE pd_id = $pdId";