|
|
|
| Всем привет. Сайт разрабатываю на основе подключения шаблонов и модулей. Так вот в главном индексе (диспетчере) там где должен подключатся блок навигация, я подключаю модуль категорий, который выводит все категории. А также через кейз определяю какая категория была выбрана.
$page = isset($_GET['page'])?$_GET['page']:"main";
ob_start();
//вывожу категории с лева в блоке навигации
include("modules/categories/cat.php");
include("tpl/tpl_categories/category.html");
..........
switch($page)
{
case "1":
include("tpl/top_content.html");
include("modules/categories/index.php");
include("tpl/tpl_categories/musik.html");
break;
case "2":
include("tpl/top_content.html");
include("modules/categories/index.php");
include("tpl/tpl_categories/soft.html");
break;
case "3":
include("tpl/top_content.html");
include("modules/categories/index.php");
include("tpl/tpl_categories/films.html");
break;
.........
|
.htaccess
RewriteRule ^1$ index.php?page=1
RewriteRule ^2$ index.php?page=2
RewriteRule ^3$ index.php?page=3
|
Код cat.php:
<?php
$cat = mysql_query("SELECT * FROM `".PREFIX."categories`") or die ("Ошибка запроса №1 : " . mysql_error());
if($cat)
{
while($catrow = mysql_fetch_assoc($cat))
{
$categories .= "<li><a href='".$catrow['id']."'>".$catrow['title']."</a></li>";
}
}
?>
|
modules/categories/index.php
<?
$page = isset($_GET['page'])?$_GET['page']:"1";
$podcat = mysql_query("SELECT * FROM `".PREFIX."podcategories` WHERE categories='".(int)$page."'") or die ("Ошибка запроса №1 : " . mysql_error());
while($podcatrow = mysql_fetch_assoc($podcat))
{
$musik .= "<a href='/1/".$podcatrow['id']."'>".$podcatrow['title']."</a> ";
}
$page2 = isset($_GET['page'])?$_GET['page']:"2";
$podcat2 = mysql_query("SELECT * FROM `".PREFIX."podcategories` WHERE categories='".(int)$page2."'") or die ("Ошибка запроса №1 : " . mysql_error());
while($podcatrow2 = mysql_fetch_assoc($podcat2))
{
$soft .= "<a href='/2/".$podcatrow2['id']."'>".$podcatrow2['title']."</a> ";
}
$page3 = isset($_GET['page'])?$_GET['page']:"3";
$podcat3 = mysql_query("SELECT * FROM `".PREFIX."podcategories` WHERE categories='".(int)$page3."'") or die ("Ошибка запроса №1 : " . mysql_error());
while($podcatrow3 = mysql_fetch_assoc($podcat3))
{
$films .= "<a href='/3/".$podcatrow3['id']."'>".$podcatrow3['title']."</a> ";
}
?>
|
Потом переменные $musik, $soft, $films вывожу в шаблон.
Получается статически вывожу категории, если добавить/удалить категорию или подкатегорию, то уже придется править код, что не рационально и не правильно :( Помогите разобраться как правильно это делается. | |
|
|
|
|
|
|
|
для: TetRiska
(10.05.2009 в 15:16)
| | а что вам мешает хранить в таблице вместе с данными категории и название шаблона?
$tpl_q = mysql_query("SELECT `template` FROM `".PREFIX."podcategories` WHERE categories='".(int)$page.' LIMIT 1");
$template = mysql_fetch_row($tpl_q))
include("tpl/top_content.html");
include("modules/categories/index.php");
include("tpl/tpl_categories/".$template[0].".html");
|
| |
|
|
|
|
|
|
|
для: Balamut182
(10.05.2009 в 15:24)
| | шаблоны сменил и что потом таблицу менять? | |
|
|
|
|
|
|
|
для: TetRiska
(10.05.2009 в 15:26)
| | так шаблоны меняйте сколько угодно, главное чтобы название шаблона оставалось старым и уникальным, его и храните в таблице | |
|
|
|
|
|
|
|
для: Balamut182
(10.05.2009 в 15:33)
| | Я понял :) Видимо неправильно сформулировал тему. Проблема в том, если посмотреть на код, то видно, что если добавить допустим подкатегорию, выведется, но работать не будет, т.к. нужно дописывать в коде еще 1 кейз, и соответственно в модули/индекс дописывать вывод подкатегорий...менять хтаксесс...это геморой, как сделать динамику? чтобы через админку лишь добавил категорию, потом к ней подкатегории и все, никаких изменений в коде? | |
|
|
|
|
|
|
|
для: TetRiska
(10.05.2009 в 15:51)
| | шаблон один и тот же для разных категорий - зачем все эти кейсы и шаблоны тогда я не понимаю.
зачем вам $page - тоже тогда не понятно, разве нельзя вместо $page использовать id категории, - тогда редирект будет один, и шаблон один и запрос один без всяких кейзов | |
|
|
|
|
|
|
|
для: Balamut182
(10.05.2009 в 15:56)
| | я бы сделал так
$cat_id = intval($_GET['cat_id']);
ob_start();
//вывожу категории с лева в блоке навигации
$tpl = 'main';
$cat = mysql_query("SELECT * FROM `".PREFIX."categories`") or die ("Ошибка запроса №1 : " . mysql_error());
if($cat)
{
while($catrow = mysql_fetch_assoc($cat))
{
$categories .= "<li><a href='".$catrow['id']."'>".$catrow['title']."</a></li>";
//Текущий каталог
if($catrow['id'] == $cat_id) $tpl = $catrow['template_name'];
}
}
include("tpl/tpl_categories/category.html");
nclude("tpl/top_content.html");
if($tpl != 'main')
{
$podcat = mysql_query("SELECT * FROM `".PREFIX."podcategories` WHERE categories='".$cat_id."'") or die ("Ошибка запроса №1 : " . mysql_error());
while($podcatrow = mysql_fetch_assoc($podcat))
{
$musik .= "<a href='/1/".$podcatrow['id']."'>".$podcatrow['title']."</a> ";
}
}
include("tpl/tpl_categories/".$tpl.".html");
|
RewriteRule ^catalog_([0-9]*)$ index.php?cat_id=$1
|
| |
|
|
|
|
|
|
|
для: Balamut182
(10.05.2009 в 16:04)
| | Принцип работы у меня таков:
1. человек нажал на ссылку ему вместо блока новостей загрузились подкатегории: адресная строка выглядит так - домен/1............домен/ид категории
2. человек выбрал подкатегорию, ему ниже должно загрузиться весь список данных с этой подкатегории: адресная строка выглядит так - домен/1/1.........домен/ид категории/ид подкатегории
Я бы не хотел связывать шаблоны с таблицами, все отдельно, пхп код, хтмл код...подключатся лишь с помощью перебора через кейз с определением текущей страницы, у меня ж получается статика, т.к. если что то добавлять нужно менять код, можно сделать динамически, вот только я не пойму пока как, учусь :( | |
|
|
|
|
|
|
|
для: TetRiska
(10.05.2009 в 16:19)
| | вам так или иначе придется связывать шаблоны с каталогами, т.к. скрипт сам не определит какой шаблон подгружать, код для динамики я вам накидал выше, если вам он не подходит, помочь больше ничем не могу | |
|
|
|
|
|
|
|
для: Balamut182
(10.05.2009 в 16:28)
| | ну правильно у меня связано, при выборе первой категории через кейз подгружается индекс.пхп в котором выполняется запрос на выборку подкатегорий и присваивается троим переменным, эти переменные в зависимости от категории я вывожу в шаблон и инклужу после индекс.пхп
case "1":
include("tpl/top_content.html");
include("modules/categories/index.php");
include("tpl/tpl_categories/musik.html"); //выводиться переменная в которую в индекс.пхп были записаны подкатегории
break;
|
| |
|
|
|
|
|
|
|
для: TetRiska
(10.05.2009 в 16:40)
| | 1) замечу, что если у вас определена переменная $page, т.е. если, например, $_GET['page'] = 1, то в index.php у вас 3 раза выполнится один и тот же запрос.
2) ветки кейсов у вас различаются только названиями шаблонов для отдельной категории, и название шаблона, к примеру music.html, у вас никак не связано с номером каталога 1.
3) приведенный мной выше код решает проблему статичности, но вам он не подходит, других вариантов лично я не вижу | |
|
|
|