Как вы организовываете свою страницу в php? - PullRequest
3 голосов
/ 09 мая 2011

Обычно у меня есть главная страница (index.php), которая включает верхний / нижний колонтитул / меню и содержимое страницы. Содержимое изменяется, проверяя некоторую переменную из метода GET / POST: для каждого условия я загружаю запрашиваемую страницу.

Что-то вроде:

website/
website/index.php?explore=forum
website/index.php?explore=users
website/index.php?explore=articles

и так далее ...

Теперь мой сайт растет, и я думаю, что лучший способ - это напрямую вызывать «индексную» страницу для каждого раздела; так, например, выше, это будет traslate как:

website/
website/forum/
website/users/
website/articles/

выглядит лучше и удобнее в управлении! Проблема в том, что, если я сделаю это, мне нужно реализовать контур для каждой зоны (включая заголовок / нижний колонтитул / меню).

Так что я не знаю, есть ли лучшая стратегия и удобна ли она. Любые предложения / мнения приветствуются! Спасибо

Ответы [ 4 ]

2 голосов
/ 09 мая 2011

Вы можете просто использовать правила переписывания .htaccess, чтобы перенаправить эти привлекательные URL-адреса в один файл index.php.

Единственная проблема заключается в том, что вам придется придумать способ дифференциацииURL-адреса для перенаправления (website/forum/, website/users/ и т. Д.) С обычных (website/css/, website/images/ и т. Д.).

Существует несколько параметров:

  1. Вместо использования website/[pagename]/ вы можете использовать website/page/[pagename]/.Тогда ваше регулярное выражение может просто перенаправить каждый URL, который соответствует ^/?page/[\w+]/?$ на index.php?explore=[pagename]
  2. Просто явно перечислить каждую страницу, которую вы хотите перенаправить;используйте регулярное выражение типа ^/?[forum|users|articles]/?$
  3. Не беспокойтесь об этом.Если вы перенаправляете только те URL-адреса, которые не содержат имя файла, то, когда вы do пытаетесь сослаться на CSS или изображения (т. Е. URL-адреса, которые do включают имя файла), онне должно быть проблемой.
2 голосов
/ 09 мая 2011

Ознакомьтесь с инфраструктурой MVC, такой как Symfony (PHP), Rails (Ruby) или Django (Python).

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

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

2 голосов
/ 09 мая 2011

Вы можете получить наивысший результат с лучшей стратегией, переписав apache.Например, / forum можно переписать, чтобы перейти на www.yoursite.com/index.php?article=forum и т. Д.

Вот полное руководство: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

1 голос
/ 09 мая 2011

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

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

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

<?php include('../includes/head.php'); ?>

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

<?php include('head.php'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...