Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение разных модулей, альтернатива switch case 
:(
    Опции темы
bugsb
Дата 7.11.2009, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



обычно  содержимое страницы у меня меняется в зависимости от переменной $module
Цитата
    
switch ($module) 
    {
        case "pages": 
            include "./module/pages.php";
            break;
         case "registration": 
            include "./module/users/reg.php";
            break;
         case "login": 
            include "./module/users/login.php";
            break;
        default: 
            include "./module/pages.php";
    }


но сейчас стал понимать что так можно организовывать только маленькие проекты, т.к. если есть регистрация, авторизация, обычные страницы, фотогалерея, новостная лента и т.д., то получается вообще хлам... а если нужно добавить какой то модуль, нужно незабыть прописать в switch case его

как обычно это реализуется в больших проектах? желательно так, чтобы модули можно было подключать не изменяя код руками постоянно)
PM MAIL   Вверх
bars80080
Дата 7.11.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



в БД есть список страниц с путями и названием страницы. приходящее название просто подставляется в запрос


PM MAIL WWW   Вверх
Ипатьев
Дата 7.11.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



ну, для такой структуры сложно что-то придумать простое. разве что регистрацию модулей, как в вордпрессе.
именно поэтому лично я не люблю вообще такую систему.
с какой стати индекс сайта должен показывать галерею? у нее что - своего индекса нет?
PM MAIL   Вверх
bugsb
Дата 7.11.2009, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Цитата

с какой стати индекс сайта должен показывать галерею? у нее что - своего индекса нет?

не понял. Сейчас у меня по умолчанию в примере выводиться модуль pages.php, который отвечает за вывод обычных текстовых страниц. А что за галерея? О_о


bars80080, так?
module_id | name                | url
+++++++++++++++++++++++++++++++++++++
1               Контент           ./module/pages.php
2               Регистрация    ./module/users/reg.php
3               Авторизация    ./module/users/login.php
4               Фотогалерея    ./module/photos/index.php
PM MAIL   Вверх
bars80080
Дата 7.11.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(bugsb @  7.11.2009,  22:26 Найти цитируемый пост)
так?
module_id | name                | url
+++++++++++++++++++++++++++++++++++++
1               Контент           ./module/pages.php
2               Регистрация    ./module/users/reg.php
3               Авторизация    ./module/users/login.php
4               Фотогалерея    ./module/photos/index.php 

согласно первому посту:

module_id | name                |module                   | url
+++++++++++++++++++++++++++++++++++++
1               Контент              pages                     ./module/pages.php
2               Регистрация      registration             ./module/users/reg.php
3               Авторизация      login                        ./module/users/login.php
4               Фотогалерея     gallery                     ./module/photos/index.php [/quote]

запрос:

... where module="'.mysql_real_escape_string($module).'"
PM MAIL WWW   Вверх
Ипатьев
Дата 7.11.2009, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(bugsb @  7.11.2009,  23:26 Найти цитируемый пост)
А что за галерея? 

я не знаю, о какой фотогалерее вы вели речь в первом посте. вам лучше знать
PM MAIL   Вверх
holms
Дата 7.11.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.11.2009

Репутация: нет
Всего: нет



А зачем лишний запрос? В таких двигах как dle или ipb ничего придумывать не стали. Как вариант вынести просто этот блок кода в отдельный файл и его инклудить.
PM MAIL   Вверх
Ипатьев
Дата 7.11.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



затем, что файла login нет в папке modules

PM MAIL   Вверх
bugsb
Дата 7.11.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



bars80080,  спасибо. На данном этапе вроде все понятно, завтра попробую реализовать это.

но вот сейчас вопрос возник, для моего проекта это не столь значительно, но вот в серьезных проектах как это.

есть движок, есть к нему доп. модули которые можно устанаваливать, а можно не устанавливать. В идеале голая цмс это только модуль отвечающий за вывод текстовых страниц.

в движке есть папки к примеру
/module/news/ - модуль новостей
/templates/default/news/show.tpl - шаблон новостей скина по умолчанию
/templates/black/news/show.tpl - шаблон новостей темного скина

если мы следующие папки с файлами
/module/gallery/
/template/dafault/gallery/

скопируем дополнительного модуля в папку с нашим движком, то скрипт будет работать корректно на скине default, а если выберем скин black, то там естественнно не обнаружаться шаблоны для модуля галереи.

Если это сайт мой, то естественно я могу и в папку black закинуть нужные файлы, для меня не составит труда. А если движок мой, а скины пишут абсолютно разные люди (ну как на вордпресс, ипб, и пр.), им придется в свой скин встроить всевозможные модули?))) я знаю что я щас бред написал, но по логике получается так...

мда... думаю надо мне будет заглянуть в какую нибудь цмс и посмотреть какие файлы в модулях они устанавливают и скины из чего состоят.... но раз напсиал это сообщение, надеюсь что кто-нибудь общий принцип объяснит smile

Добавлено через 5 минут и 19 секунд
Цитата

я не знаю, о какой фотогалерее вы вели речь в первом посте. вам лучше знать

Цитата

с какой стати индекс сайта должен показывать галерею? у нее что - своего индекса нет?

начал отвечать на первую цитату и до меня дошло о чем вы спрашивали.

индекс всего сайта содержит подключение модулей, конфига, функций разных.
у фотогалереи есть индекс, но он инклудится в индекс сайта.
на сайте ведь обычно верх футер и левая/правая колонки одинаковые, меняется только центр. 
если я не прав, поправьте, как должно быть правильно, буду очень благодарен.


PM MAIL   Вверх
Ипатьев
Дата 8.11.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(bugsb @  7.11.2009,  23:51 Найти цитируемый пост)
я знаю что я щас бред написал, но по логике получается так...

значит, по логике скины для  модулей появляются сами по себе, без участия человека. из космического пространства

а мне вот интересно, что будет, если у галереи появятся свои модули...

Добавлено через 7 минут и 51 секунду
Цитата(bugsb @  7.11.2009,  23:51 Найти цитируемый пост)
на сайте ведь обычно верх футер и левая/правая колонки одинаковые, меняется только центр. 

а это здесь при чем?
какая разница, что меняется, а что не меняется?
PM MAIL   Вверх
bugsb
Дата 8.11.2009, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Цитата

значит, по логике скины для  модулей появляются сами по себе, без участия человека. из космического пространства

Ваня решил сделать сайт где будет выкладывать свои шаблоны для zzzCMS
Миша же пишет для zzzCMS и модули и скины к своим модулям

а я пользуюсь zzzCMS, зашел к Мише на сайт и скачал модули, потом зашел к Ване и скачал крутой скин. Кстати, Миша не знает о существовании Вани и пишет шаблоны только для default скина.
В итоге у меня установлен скин "superskin", но система не хочет работать, т.к. там есть megascript у которого нет шаблонов в superskin'е.

Добавлено через 9 минут и 16 секунд
Цитата

а мне вот интересно, что будет, если у галереи появятся свои модули...

такое ощущение что вы хотите чтобы я вам доказал что моя структура движка правильная, а я же хочу чтоб мне указали что я делаю не правильно и показали КАК НАДО ДЕЛАТЬ.

Цитата

а это здесь при чем?
какая разница, что меняется, а что не меняется?

начнем с этого
Цитата

с какой стати индекс сайта должен показывать галерею? у нее что - своего индекса нет?

а что должен показывать индекс сайта? по моему представлению он показывает ВСЕ. в зависимости от переменной module.
если бы индекс сайта не включал в себя индекс фотогалереи, то индекс фотогалереи выглядел бы вот так 

Цитата

include "config.php";
include "header.tpl";
include "left.tpl";
$sql = "SELECT * FROM photos ....";
........
include "footer.tpl";

т.е. почти все тоже самое что имеет индекс сайта
PM MAIL   Вверх
Ипатьев
Дата 8.11.2009, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(bugsb @  8.11.2009,  00:11 Найти цитируемый пост)
а я же хочу чтоб мне показали КАК НАДО ДЕЛАТЬ.

вы хотите уподобиться еще одному участнику этой дискуссии
он тоже все ищет себе религию, чтобы к ней прильнуть, и больше уже не думать.
увы, так не получается. 
придумать Один Правильный Закон На Все Случаи Жизни невозможно.

если какая-то часть сайта является достаточно самостоятельным сложным проектом, то не надо ее запихивать в ошейник ко всем остальным. ей будет неудобно. и причин никаких нету, кроме как чтобы сделать Правильно.

плюс к этому вы сильно путаете между собой структуру программы и внешний вид сайта
а они никак между собой не связаны. вообще никак.

ваша самая главная ошибка заключается в том, что вы полагаете, будто index.php нужен для того, чтобы написать в нем include "left.tpl"
а этого в индексе вообще не должно быть.
PM MAIL   Вверх
bugsb
Дата 8.11.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 11.9.2009

Репутация: нет
Всего: нет



Цитата

придумать Один Правильный Закон На Все Случаи Жизни невозможно.

ладно, я был не прав, я хочу чтоб мне показали в какую сторону думать)) 
вы же сами говорите что сейчас я делаю не правильно

Цитата

будто index.php нужен для того, чтобы написать в нем include "left.tpl"
а этого в индексе вообще не должно быть.

я и раньше догадывался что его там не должно быть, но где он должен быть? в шаблоне?
у меня шаблоны деляться на части 
header.tpl
footer.tpl
left.tpl
и шаблоны для модулей. 
PM MAIL   Вверх
Ипатьев
Дата 8.11.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Дело не в частях. Делить можно как угодно.
Дело в структуре приложения. И ложных представлениях о ней.

принцип работы веб приложения должен быть такой:
сначала подготавливаются все данные, предназначенные для вывода на странице
и только потом в браузер отдается хотя бы одна строчка. 

следовательно, пока модуль не подготовил все данные - никакого вывода быть не должно.
следовательно, если сам по себе индекс никакой информации не выводит, то и вывода шаблона в нем быть не должно.
то есть, меняется вся структура индекса. ему остаются только диспетчерские функции
следовательно, если не используется mod_rewrite, то надобность в таком индексе просто отпадает.

Это сообщение отредактировал(а) Ипатьев - 8.11.2009, 12:31
PM MAIL   Вверх
g27
Дата 8.11.2009, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 29.9.2007
Где: Vilnius

Репутация: нет
Всего: нет



Код

 if(file_exists("./modules/".$module.".module.php")) {
 require ("./modules/".$module.".module.php");
 }

у меня так.
PM MAIL Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.