HEm
Сетевой бобер
Извиняюсь за некоторую сумбурность в разъяснении, собственно поэтому и прошу помочь навести порядок. Г-н baev, если название не понравится, просьба помочь с правильной формулировкой.
Вот такое вот дали задание. По нарисованному макету продумать и создать структуру каталога услуг для автосервиса.
ниже приведен скриншот выпадающего меню на ТМ (торговой марке).
Я так понимаю, мысли о том, как все сделать навеяны реализацией на сайте tokyogarage точка ру.
Сначала я предложил было сделать это все обычным рубрикатором страниц, но в связи с тем, что выбор страниц должен влиять и на выпадающее меню по ТМ, то все таки пришел к выводу, что делать надо отдельный модуль.
Исходные данные:
Есть несколько торговых марок - Toyota, Nissan, Mitsubishi и т.д. Для каждой торговой марки есть несколько страниц с услугами (техосмотр, кузовной ремонт, шиномонтаж и т.п.), несколько страниц с дисконтными программами и предложениями, страница прайса, список моделей, возможно какие то еще страницы.
Ссылки, соответственно могут быть такие, например /toyota/ , /toyota/uslugi/ , /toyota/uslugi/to.html , /toyota/uslugi/price.html , /toyota/models/ , /toyota/discount/winter2012.html
У каждой модели (для Toyota например - RAV4, Camry, Corolla и т.д.) также есть аналогичные страницы с услугами, прайсом и т.п., возможно, будут еще какие то свои страницы.
Ссылки будут например, такими /toyota/models/rav4/ , /toyota/models/rav4/uslugi/ , /toyota/models/rav4/uslugi/to.html , /toyota/models/rav4/uslugi/price.html , /toyota/models/rav4/osobennosti_remonta_zastschelki_vyhlopnoi_truby_rav4.html
В выпадающем меню на рисунке соответственно должен отображаться факт, что сейчас мы находимся в пространстве страниц модели RAV4, выделяться эта модель в списке, также список услуг в первой колонке должен соответствовать страницам услуг этой модели, список других страниц (акции и возможно чтото еще) должен содержать акции, связанные с этой моделью.
Про третью колонку скажу отдельно. На сайте есть монструозный калькулятор ТО на jQuery, в котором можно выбрать ТМ, модель, пробег. Можно настроить его так, чтобы в зависимости от переданных параметров через GET сразу попадать на нужный шаг. Отсюда еще требование чтобы если выбрана модель RAV4, например, в списке пробегов в третьей колонке ссылки были примерно такие: /megacalc.html?tm=toyota&model=rav4&run=60000, ну и соответственно если модель не выбрана то /megacalc.html?tm=toyota независимо от цифры пробега.
скриншот нескольких шагов калькулятора ТО
Ну и вот - прошу совета, как лучше реализовать структуру таблиц в БД, чтоы потом все это выводить, среди прочего генерируя правильно вложенные адреса для страниц.
В ходе написания темы осознал, что привязка "прочих" страниц относительно проста и выполняется связью с ТМ и моделями через теги.
Вот примерно накидал схему таблицы, кажется, удовлетворяет
page_type определяет одновременно и тип страницы и уровень (для формирования урла)
таблицы тегов и связей с тегами не привожу, они тривиальны
Вот такое вот дали задание. По нарисованному макету продумать и создать структуру каталога услуг для автосервиса.
ниже приведен скриншот выпадающего меню на ТМ (торговой марке).
Я так понимаю, мысли о том, как все сделать навеяны реализацией на сайте tokyogarage точка ру.
Сначала я предложил было сделать это все обычным рубрикатором страниц, но в связи с тем, что выбор страниц должен влиять и на выпадающее меню по ТМ, то все таки пришел к выводу, что делать надо отдельный модуль.
Исходные данные:
Есть несколько торговых марок - Toyota, Nissan, Mitsubishi и т.д. Для каждой торговой марки есть несколько страниц с услугами (техосмотр, кузовной ремонт, шиномонтаж и т.п.), несколько страниц с дисконтными программами и предложениями, страница прайса, список моделей, возможно какие то еще страницы.
Ссылки, соответственно могут быть такие, например /toyota/ , /toyota/uslugi/ , /toyota/uslugi/to.html , /toyota/uslugi/price.html , /toyota/models/ , /toyota/discount/winter2012.html
У каждой модели (для Toyota например - RAV4, Camry, Corolla и т.д.) также есть аналогичные страницы с услугами, прайсом и т.п., возможно, будут еще какие то свои страницы.
Ссылки будут например, такими /toyota/models/rav4/ , /toyota/models/rav4/uslugi/ , /toyota/models/rav4/uslugi/to.html , /toyota/models/rav4/uslugi/price.html , /toyota/models/rav4/osobennosti_remonta_zastschelki_vyhlopnoi_truby_rav4.html
В выпадающем меню на рисунке соответственно должен отображаться факт, что сейчас мы находимся в пространстве страниц модели RAV4, выделяться эта модель в списке, также список услуг в первой колонке должен соответствовать страницам услуг этой модели, список других страниц (акции и возможно чтото еще) должен содержать акции, связанные с этой моделью.
Про третью колонку скажу отдельно. На сайте есть монструозный калькулятор ТО на jQuery, в котором можно выбрать ТМ, модель, пробег. Можно настроить его так, чтобы в зависимости от переданных параметров через GET сразу попадать на нужный шаг. Отсюда еще требование чтобы если выбрана модель RAV4, например, в списке пробегов в третьей колонке ссылки были примерно такие: /megacalc.html?tm=toyota&model=rav4&run=60000, ну и соответственно если модель не выбрана то /megacalc.html?tm=toyota независимо от цифры пробега.
скриншот нескольких шагов калькулятора ТО
Ну и вот - прошу совета, как лучше реализовать структуру таблиц в БД, чтоы потом все это выводить, среди прочего генерируя правильно вложенные адреса для страниц.
В ходе написания темы осознал, что привязка "прочих" страниц относительно проста и выполняется связью с ТМ и моделями через теги.
Вот примерно накидал схему таблицы, кажется, удовлетворяет
PHP:
CREATE TABLE IF NOT EXISTS `cms_service_pages` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`parent_id` bigint(20) unsigned NOT NULL,
`alias` varchar(255) NOT NULL,
`column` tinyint(3) unsigned NOT NULL default '4',
`ptitle` varchar(255) default NULL,
`mtitle` varchar(255) default NULL,
`wtitle` varchar(255) default NULL,
`content` text,
`mk` varchar(255) default NULL,
`md` varchar(255) default NULL,
`page_type` enum('tm','model','uslugi','discount','other') NOT NULL default 'tm',
`hidden` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
таблицы тегов и связей с тегами не привожу, они тривиальны