25/07/2011 17:12:46
Проект CMS на PHP

Сразу хочу ответить на вопрос - Почему выбран PHP?
Хостинг с PHP, как правило дешевле. И, главное, с ASP.Net я уже знаком, хотелось попробовать себя в чем-то новом.
Каждый PHP-программист ОБЯЗАН :-) сделать свою CMS! ... не смотря на то, что есть Drupal, Joomla и куча других бесплатных CMS.

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

Появилось довольно много дешевых хостингов PHP с поддержкой базы данных MySql.
Хостинги с PHP без баз (по моему мнению) - не самый лучший выбор, тогда уж лучше остановиться на чистом HTML, так как сможете очень сильно выиграть в скорости отображения страниц сайта - чистый HTML "завсегда" побыстрее PHP будет.

Стиль.
Под стилем понимается группа из файлов css, js, графики и php-бланков.
Стиль можно в любой момент назначить текущему проекту, т.к. содержание ОТДЕЛЕНО от оформления.
Не получилось полностью отвязать стилевое оформление от кода PHP, к сожалению, надо признать, код зависит от стиля.
НО! Основные файлы стиля практически не зависят от самого стиля (каламбур), поэтому многие стили используют файлы "по умолчанию", что уменьшает размер стиля и упрощает его сопровождение (многие стили по этой причине состоят практически только из файлов css и графики :-), ну, может быть, иногда бланк авторизации может быть другим - не горизонтальным, а вертикальным ).

Принцип работы (думаю, не отличается от других шаблонизаторов):
Открытие страницы сайта - запуск index.php с параметром - id страницы или заметки.
Идентификация параметра приводит к выбору стиля (выше) и шаблона.
В стиле могут быть шаблоны страницы или замети, и шаблоны специальных объектов - для вывода списка заметок/ссылок, отдельных заметок, галерей и т.д.
По этим шаблонами и формируется готовая страница сайта.

Что пока сделано:
Авторизация, добавление, отсылка на email и активация, смена пароля.
Локализация - возможность мультиязычности для всех кнопок и сообщений (есть перевод - используется он, нет - используется по умолчанию).
Использование в структуре проекта (в качестве узла) страницы (страница может быть, кстати, только "каталогом") либо ссылки.
Карта - вывод страниц проекта при помощи специального объекта.
"Сращивание" с визуальным редактором (куда без этого), а его, в свою очередь, с файловым менеджером (Tiny MCE + Tiny Browser - сколько же времени на это ушло...), загрузка картинок в личные каталоги пользователя.
Добавление заметок в регионы (специальные области) и их редактирование - изменение, удаление.
Работа со структурой сайта - добавление/удаление/изменение/перемещение страниц.
Смена стиля (выбор из существующих).
Возможность использования токенов (это из Drupal-а :-) ) с ПАРАМЕТРОМ/ами - после предварительного размещение (администратором) в нужной папке. С одной стороны - вроде бы дыра по безопасности, но обо всем должен думать админ, и он ОБЯЗАН понимать что делает php-код. С другой стороны - ПРОСТОЕ расширение функциональности - пользователь размещает токен в контенте, сервер сделает все остальное :-). Если честно, НЕ нравится как это сделано в Drupal, и тем более - в Joomla :-). В проекте off-line CMS размещал код (для загрузки данных, например, из баз данных или файлов xls) непосредственно в содержимом :-)
Автоматическая генерация всей навигации, меню (основного, дочернего), дерева проекта из структуры проекта.
Формирование списка заметок (ленты новостей) и отдельных заметок на странице.

Чего пока нет (это к тому, что "работы" еще море):
Управление заметками, лентами - сортировка, перемещение, ввод заметки в ленту, выбор из существующих - сейчас есть ТОЛЬКО добавление новой заметки.
Нет файлов графики да и самого стиля "админки" - отсутствует дизайнерское "мЫшление" - хотя с самими стилями для проекта я разберусь, не проблема сконвертировать их в полуавтоматическом режими из off-line программы Maple4 Site Creator (их там более 100 штук).
К сожалению, проект не тестировался "на взлом". Но я знаю, что такое SQL-инъекция :-) .
Роли, Назначение прав (на страницу, регион, заметку, объект и т.д. ) - сейчас пока либо админ, либо только просмотр :-). Хотя бы знаю куда копать...
Предварительная модерация.
Примечание к заметкам.
Усложненная каптча (то, что есть сейчас - довольно простенько...)
Создание форума, чата, магазина (ИЛИ - интеграция с существующими. Как я понял, после работы с Tiny MCE, это несколько проще, что-ли :-) Кстати, размер проекта Tiny MCE говорит о многом, и он во много раз больше проекта CMS).
Создание галереи картинок (тут, думаю делать сам).
Создание тегов к заметкам и формирование автоматических лент ( по комбинации тегов).
Вывод отдельных лент - сейчас есть только страница и заметка.

Ищу единомышленников.


create by Maple4 Site Creator 9/2011
Rambler's Top100 Рейтинг@Mail.ru Участник проекта CMS Magazine



Trustlink2_468x60