Структура сайта - PullRequest
       18

Структура сайта

5 голосов
/ 28 января 2009

Я довольно новичок в php и пытаюсь решить, как лучше организовать страницы и, используя PHP, доставить их. У меня были две (основные) идеи:

  • Куча отдельных страниц на PHP включает заголовок, нижний колонтитул и меню.

  • Одна главная страница, которая имеет меню, верхний и нижний колонтитулы, а также включает в себя основной контент. Имя страницы происходит от переменной в URL.

У кого-нибудь есть другие предложения или идеи? Это довольно простой материал, но я решил, что у кого-нибудь есть идеи получше.

Спасибо

Ответы [ 9 ]

6 голосов
/ 28 января 2009

Раньше я шел в обоих направлениях, и хотя у них обоих есть свои плюсы и минусы, я склоняюсь к вашему второму варианту - единственной главной странице, содержащей макет. Это похоже на то, как главные страницы работают в настольных издательских приложениях, и ASP.NET имеет хорошую реализацию этой идеи - не то, чтобы я говорил, что вам следует переключать технологии.

Однако, если вы пойдете по этому пути, используйте mod_rewrite, чтобы получить ваши пути на главную страницу PHP, а не строки запросов в ваших URL. Ваш файл .htaccess должен содержать что-то вроде:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ /index.php?path=$1 [QSA]

Это, в основном, говорит, что файл, который они запрашивают, не существует, вместо того, чтобы передать ошибку 404 при обработке файла index.php с путем URL-адреса в переменной строки запроса. Таким образом, «http://example.com/path/to/page" завершает работу с index.php с $ _GET ['path'], установленным в" / path / to / page ". Отсюда вы можете извлекать контент из базы данных, плоского файла или чего Вы. Вы также можете выбрать различные шаблоны в зависимости от запрошенного пути.

2 голосов
/ 28 января 2009

Зачем идти только наполовину в правильном направлении? Использовать одну из существующих платформ MVC. Это мощные инструменты, которые структурируют код, вероятно, намного лучше, чем любое другое решение. Перейти на MVC, узнать, как отделить бизнес-логику от логики представления и от структуры данных, повысить свою ценность на рынке труда в качестве потенциального сотрудника , сэкономить свое время и быть счастливым.

Вы, вероятно, должны начать (но не ограничивать себя) Kohana PHP, поскольку он имеет небольшую кривую обучения.

2 голосов
/ 28 января 2009

Учитывая эти два варианта, я бы выбрал номер 2. Если ваш сайт достигает уровня, на котором вам нужна надлежащая структура, перемещайте отдельные страницы без всего включения ('header.php'); все будет намного проще. Для получения бонусных баллов используйте папки моделей и просмотра, в которые нужно поместить логический доступ и отображение логики соответственно, и вы на полпути к истинной среде MVC .

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

2 голосов
/ 28 января 2009

Мне нравятся отдельные страницы с заголовками и прочее.

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

1 голос
/ 28 января 2009

Основное в PHP заключается в том, что вам нужно "РАЗДЕЛИТЬ ПРЕЗЕНТАЦИЮ И ЛОГИКУ ПРОГРАММЫ" . Или, другими словами, убедитесь, что вы не выводите html на экран в середине сценариев, в которых вы работаете или обрабатываете логику.

Ваше второе решение является довольно распространенным (и неплохим) решением проблемы. Это позволяет вам создать единую страницу со всей информацией вашего макета, которая затем включает в себя конкретное содержимое страницы, которое будет отображаться. Очевидно, что это не будет работать так хорошо, если вам нужно поменять большие части шаблона макета с одной страницы на другую. В этом случае ваше первое решение будет работать лучше.

Наконец, я настоятельно рекомендую вам взглянуть на различные PHP-фреймворки, такие как Zend Framework , Symfony или CakePHP , чтобы увидеть, как все они решают эту проблему. Если вы найдете тот, который вам нравится, то просто используйте его. В противном случае вы все равно получите отличные идеи о том, как структурировать свой собственный сайт.

0 голосов
/ 28 января 2009

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

Я на самом деле в процессе преобразования сайта, который я написал пару лет назад, из включенной модели верхнего / нижнего колонтитула / меню в модель мастер-страницы. Оригинальная система включений была чистой и понятной и работает очень хорошо. Однако чем больше дополнительного контента я создавал, тем больше осознавал, что проект начинает нарушать принцип DRY . Каждая страница на сайте начиналась и заканчивалась одинаково (повтор должен всегда посылать предупреждающие сигналы), и у меня возникало желание сделать исключения из стандартного макета, исключив отдельные включения и написав одноразовые замены. (К счастью, я не часто поддавался этому искушению!)

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

0 голосов
/ 28 января 2009

Зависит.

Содержимое страницы хранится в базе данных? Если это так, то вам, вероятно, лучше всего иметь шаблон для каждой контентной страницы, который просто получает контент, заголовки и мета-информацию из базы данных и вставляет его в шаблон. Вы даже можете иметь разные типы страниц (новости, страницы статического содержимого, страницы архива и т. Д.), Которые могут иметь разные шаблоны.

Если содержимое находится в более или менее плоских файлах, два ваших предложения сработают, и я думаю, что последнее является самым простым в поддержке.

0 голосов
/ 28 января 2009

Облегчить вашу жизнь, имея меню и заголовки в header.php и footer, sopyright и т. Д. В footer.php. Затем просто включите эти файлы в каждую созданную вами страницу.

0 голосов
/ 28 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...