[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подключение шаблона в зависимости от типа страницы
McLotos
Ребят, в общем я снова вернулся к старой мысли, которая давно меня мучает.
Вот есть, к примеру, страница со списком товара, и есть страница с описанием товара. Визуально эти страницы разные, так как использую разные шаблоны. Как решить вопрос определения типа страницы?
Сейчас у меня при создании новой страницы сайта, нужно указывать к какому типу она относится.
Например шаблон list.tpl подключается для страниц, например со списком товаров
Шаблон page.tpl подключается для страниц с текстом.
Шаблон details.tpl подключается для страниц с описанием.
Была идея в таблице, где хранятся кейворды и названия страниц, создать поле в котором писать имя шаблона для этой страницы, но что-то меня пока удерживает от этой идеи.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Может быть, я не понял вопрос... Изначально они вообще чем отличаются, эти страницы? У них есть у каждой что-то специфическое в URL (какой-то определенный GET-параметра) или еще как? Вот почему бы этот признак и не использовать?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
McLotos
sergeiss
Нету никакого признака. Вот смотрите есть страницы
site.ru/cars - список
site.ru/cars/Opel - список
site.ru/cars/Opel/Mokka - список
site.ru/cars/Opel/Mokka/Prestige_Plus/AT_2.0(136)/white - описание белой Opel Mokka комплектация Prestige Plus, автоматическая коробка, двухлитровый двигатель, 136 лошадок, белого цвета.
Это все указано в адресе, но фактически для скриптов не несет никакой информации о том кукой тип шаблона нужно использовать, а точнее какой tpl файл подключить

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
volter9
Цитата
Как решить вопрос определения типа страницы?
Сейчас у меня при создании новой страницы сайта, нужно указывать к какому типу она относится.


Как это понять? Тип страницы это вроде как расширение или же какие то мета-данные страницы?

А тип страницы нельзя по имени шаблона определять?

_____________
Мой блог
AllesKlar
Для каждой сущности - свой шблон.
Список - свой шаблон.
Детали артикля - свой шаблон.

site.ru/cars
site.ru/cars/Opel
site.ru/cars/Opel/Mokka
Это все один и тот же экшен контроллера cars, а параметры /Opel /Mokka /Prestige_Plus и т.д. - это лишь уточнения, которые нужно передать в модель для выборки, чтобы сузить результаты запроса к базе.
И для всех этих url будет один и тот же шаблон.

Для вывода же артикля, будет нечто
site.ru/details/32254 <- id конкретной модели
Тут выводится другой шаблон, тут и контроллер другой.

Либо по-другому структуру организовать
site.ru/cars/list/Opel - контроллер cars, экшен list /Opel - параметр для запроса, шаблон list.tpl
site.ru/cars/details/32254 - контроллер cars, экшен details /32254 - параметр для запроса шаблон details.tpl

Да, можно url сделать как site.ru/cars/details/lada-priora-mokrij-asfalt-magomed.html - но это уже другая песня немного, начни с простого, потом до этого дойдешь smile.gif



_____________
[продано копирайтерам]
McLotos
Прикол в том что у меня это уже реализовано (без указания id в адресе)
Но в таком случае мне приходится для каждого url создавать запись в таблице, где я указываю тип страницы, мета данные и много всего другого.
блин. Да простят меня админы
http://test.carlux.kz
Вот тут ни у одной страницы в адресе нет никаких id и типов.
Вот как переделать это так, чтобы не нужно было привязываться к типу страницы для поиска шаблона

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
AllesKlar
ну роутер парсит url и смотрит, если есть подходящий конроллер, то грузит его, если те, то грузит дефолтный контроллер, остальное в параметры к нему.

http://test.carlux.kz/cars - конроллер cars
http://test.carlux.kz/about/contacts - контроллер about
http://test.carlux.kz/ - дефолтный контроллер
http://test.carlux.kz/Nissan/Teana/Eleganc...72%29_CVT/white - дефолтный контроллер Nissan/Teana/Elegance/2.5_%28172%29_CVT/white - параметры для запроса к базе

Четыре шаблона на весь сайт.
ну, может, шесть smile.gif ковыряться лень.

Цитата
Вот как переделать это так, чтобы не нужно было привязываться к типу страницы для поиска шаблона

Сдается мне, ты не совсем понимаешь принцип шаблонов.
Шаблон определяется не типом страницы, а контроллер, в зависимости от переданных ему параметров, определяет, какие данные подгрузить из базы и в какой шаблон их отправить.

_____________
[продано копирайтерам]
mvg
Цитата (McLotos @ 15.12.2014 - 15:48)
Ребят, в общем я снова вернулся к старой мысли, которая давно меня мучает.
Вот есть, к примеру, страница со списком товара, и есть страница с описанием товара. Визуально эти страницы разные, так как использую разные шаблоны. Как решить вопрос определения типа страницы?
Сейчас у меня при создании новой страницы сайта, нужно указывать к какому типу она относится.
Например шаблон list.tpl подключается для страниц, например со списком товаров
Шаблон page.tpl подключается для страниц с текстом.
Шаблон details.tpl подключается для страниц с описанием.
Была идея в таблице, где хранятся кейворды и названия страниц, создать поле в котором писать имя шаблона для этой страницы, но что-то меня пока удерживает от этой идеи.

обычно контроллер шустро разбирается с такой делемой подпрягая паттерн строитель к примеру
McLotos
У меня реализована логика примерно так:
1. header.php определяет какой url открыл пользователь
1.а по адресу страницы header получает ее тип из таблицы pages
1.б по типу страницы header определяет из какой таблицы какой материал нужно вытянуть.
1.в собираем полученные данные в массив и отправляем его в footer.php, который опять же ориентируясь по переменной $page['type'] находит нужный файл шаблона и просто вставляет в него данные.
Т.е. получается что у меня нет как такового контроллера cars или контроллера about, есть просто header.php который получает данные из БД и есть footer.php который выводит данные в шаблон

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Ты можешь объяснить, что именно ты ищешь? По моим представлениями, ты ищешь то, что у тебя уже есть.
Цитата (McLotos @ 15.12.2014 - 16:48)
Как решить вопрос определения типа страницы?

Цитата (McLotos @ 15.12.2014 - 23:09)
по адресу страницы header получает ее тип из таблицы pages



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
McLotos
sergeiss
так и есть, просто я думал что можно это сделать не таким топорным способом

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.