Как организовать блог на PHP - PullRequest
0 голосов
/ 18 декабря 2009

Итак, в настоящее время я организую свой блог на основе имени файла: чтобы создать сообщение, я ввожу имя файла. В отличие от хранения сообщения в базе данных, я храню их в файлах PHP. Поэтому каждый раз, когда я создаю сообщение, создается новая строка в таблице с именем файла и уникальным идентификатором. Чтобы сослаться на пост (например, для комментариев), я получаю имя текущего файла, а затем ищу в таблице записей подходящее имя файла. Идентификатор поста комментария совпадает с идентификатором этого поста.

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

  • Чистые URL (даже чище, чем mod_rewrite может обеспечить из того, что я прочитал)
  • У меня всегда есть печатная копия сообщения на моей машине
  • Проще запомнить URL определенного поста (вид части чистых URL)

Теперь я знаю, что стандартным способом было бы хранить каждый пост в базе данных. Я знаю, как это сделать, но главная проблема - чистые URL. Итак, теперь на мои вопросы:

  • Есть ли что-то НЕПРАВИЛЬНОЕ в том, как я это делаю сейчас, или могут возникнуть какие-либо проблемы в будущем?
  • Можно ли достичь того же уровня чистых URL, который я могу получить сейчас, с помощью mod_rewrite? Если это так, ссылки приветствуются
  • Я буду размещать это на веб-хостинге. Только определенные веб-хосты предоставляют доступ к необходимым файлам для mod_rewrite, или это вообще стандартно для всех веб-хостов?

Большое спасибо, ребята!

P.S. Чтобы было ясно, я не планирую на использование движка блогов.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2009

Как сказал Клетус, это похоже на Movable Type. Нет ничего плохого в хранении ваших данных в файлах.

Одна вещь, которая приходит в голову: сколько вы храните в файлах? Только содержание публикации, или каждый файл PHP содержит копию всего дизайна страницы в отличие от использования базового шаблона? Насколько сложно будет изменить дизайн позже? Это может или не может быть проблемой.

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

Edit:

Вот как это будет работать с mod_rewrite и основным файлом PHP, который обрабатывает запросы:

  1. Веб-сервер передает все запросы (например, / my-post-title), скажем, на index.php
  2. index.php анализирует путь запроса («my-post-title»)
  3. Найдите "my-post-title" в столбце базы данных "slug" или "friendly name" (как хотите, чтобы он назывался) и найдите соответствующую строку таким образом
  4. Получить сообщение из базы данных
  5. Применение шаблона к данным поста
  6. Вернуть заполненную страницу клиенту

По сути, именно так работают такие системы, как Drupal и WordPress.

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

Так что, очевидно, у вас есть много вариантов, чтобы выяснить, как должно работать ваше решение. Тот, который вы предложили, звучит хорошо, хотя вы, возможно, захотите тщательно продумать, как вы будете поддерживать большое количество постов в отдельных файлах, особенно если вы хотите изменить дизайн всего сайта позже. Возможно, вы захотите рассмотреть шаблонизатор, такой как Smarty, и просто сохранить данные поста (без тегов макета), например, в ваших отдельных файлах. Или просто используйте некоторые базовые операторы include () в ваших почтовых файлах, чтобы использовать заголовки, нижние колонтитулы, навигационные меню и т. Д.

1 голос
/ 18 декабря 2009

То, что вы описываете, похоже на то, как Movable Type работает. Вопросы, которые вам нужно решить:

  • Синдикация: RSS / Atom;
  • Карта сайта: для Google;
  • Пометка и фильтрация контента.

Нередко не использовать базу данных. Если бы я сделал это, я бы использовал шаблонизатор, такой как Smarty, который лучше кэширует результаты, чем PHP из коробки.

...