Архив рубрики: Мои проекты

Yii, создаем свою CMS. База данных.

Краткое содержание предыдущих серий

1 Вступление

И так, имея скромный набор требований, описанный в первой статье, перейдем непосредственно к разработке.

Когда я приступаю к разработке нового приложения или сайта, и уже более или менее понятно с какими сущностями придется работать и какие данные хранить, лично я, предпочитаю нарисовать схему базы данных, которая в будущем будет хранить всю информацию приложения. Такая схема позволит более наглядно представить все объекты, разрабатываемого приложения и взаимосвязи между ними. Для рисования таких схем, можно воспользоваться любым инструментом, начиная от листа бумаги и карандаша, заканчивая специализированным ПО, типа MS VISIO. Однако, я предпочитаю программное обеспечение, специально предназначенное для этих целей. Довольно давно, я пользуюсь Mysql Workbench, для проектирования баз данных Mysql, подробнее узнать про эту программу и скачать ее, можно тут.

Примерно за 40 минут работы, у меня получилась вот такая вот схема БД.

Схема бвзы данных

Сейчас постараюсь подробно рассказать про назначение каждой таблицы и каждого столбца.

И так поехали!

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

  • userId — идентификатор пользователя;
  • name   — имя пользователя;
  • email  — email пользователя;
  • password — пароль пользователя;
  • creationDate — дата регистрации пользователя (пока система однопользовательская — особого смысла в этом поле нет);
  • status  — 0 — пользователь активен 1 — пользователь заблокирован;
  • accessLevel — 0 — простой пользователь 1 — администратор (может управлять контентом и совершать административные действия)

System — таблица для хранения всех системных параметров.

  • systemId   — идентификатор записи
  • siteUrl  — основной url сайта
  • siteInfo— информация о сайте
  • siteDescription — описание сайта
  • ownerInfo            — информация о владельце
  • ownerEmail        — email администратора сайта
  • userId                      — пользователь создавший настройку (в однопользовательской работе на учитывается)

Content — данная таблица будет содержать все записи (посты), страницы и все остальное наполнение нашего движка.

  • contentId — идентификатор записи
  • title  — заголовок записи
  • alias  — строка Url данного записи
  • content — содержимое поста
  • status  — 0 — черновик, 1 — опубликовано
  • keywords — ключевые слова для записи (meta)
  • description — описание записи (meta)
  • createdBy   — идентификатор пользователя создавшего запись
  • creationDate — дата создания
  • active       — признак того что эта запись является самой последней (актуальной)
  • canComment   — разрешены ли комментарии для данной записи
  • isPrivate    — пост доступен только авторизованным пользователям (в версии 1 нашего движка это работать не будет)
  • publishDate  — дата публикации
  • revision — номер версии записи
  • contentParentId — идентификатор, изначально созданной записи
  • revisionParentId — идентификатор, предыдущей ревизии
  • contentType — тип контента  2 — запись (пост) 1 — страница
  • modifyDate — дата изменения
  • modifyBy                   — кем изменено
  • commentCnt          — количество комментариев

Comment — таблица хранит комментарии к постам и страницам (?).

  • commentId — идентификатор комментария
  • parentId  — родительский комментарий (в первой версии движка мы его использовать скорее всего не будем)
  • postId    — идентификатор поста, к которому относится комментарий
  • comment   — текст комментария
  • creationDate — дата создания комментария
  • userName     — имя пользователя, создавшего комментарий
  • userEmail    — email пользователя, создавшего комментарий
  • userUrl      — url пользователя, создавшего комментарий
  • userIp       — ip-адрес пользователя оставившего комментарий
  • status       — 0 — комментарий не подтвержден, 1 — комментарий одобрен, 2 — спам


Tag —
таблица хранит тэги.

  • tagId — идентификатор тэга
  • tag   — название тэга

TagContent- таблица предназначена для хранения отношения тегов и постов

  • tagContentId — идентификатор контента
  • contentId    — идентификатор записи
  • tagId     — идентификатор тэга

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

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

p.s. Названия движка, пока так и не выбрано — любые варианты приветствуются!

Основной сайт Юпи! — http://yupe.ru

Исходный код — https://github.com/yupe/yupe

Присоединяйтесь!

Yii создаем свою мега CMS !!!

В любом деле — главное ПРАКТИКА!
Вдоволь начитавшись документации и рассмотрев демо-примеры фреймворка Yii, я решил написать что-нибудь    «более» функциональное чeм «testDrive». А что должен сделать любой web-программист в своей жизни???? Правильно!!! Написать свою супер-цмс!!!Ну если не цмс, то хотя бы что-то похожее.
И так…Начиная с этой статьи и на протяжении еще примерно 5-8 (ну как максимум 10), я буду рассказывать о процессе написания простенькой ЦМС, с использованием замечательного фреймворка Yii. Многое, что здесь будет написано, так или иначе пересекается с руководством Yii по созданию блога.
Для начала определимся с основными требованиями:

— администратор может управлять контентом двух основных типов:

  • страницы
  • посты

— администратор может удалять или одобрять комментарии к постам;
— посты могут сопровождаться произвольным количеством тэгов;
— пользователи могу просматривать посты и страницы и оставлять комментарии к ним;
— движок должен позволять менять темы оформления;

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

Писать все это мы будем на PHP, с использованием фреймворка Yii, в качестве БД будет использоваться MySQL. На клиенской стороне я буду использовать jquery и jquery UI.

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

p.s. А вот и первое «домашнее задание»: предлагаю придумать название для будущего творения, обязательное условие — в название должна присутствовать буква «Y» (Yii всетаки!!!).

p.s.s Названия типа YACS (yet another cms system) или YaBe! (yet another blog engine) — которые я хотел было «прикрутить» к этому творению — уже заняты!!! Так что, если есть какие то идеи и предложения — добро пожаловать в комментарии!

Основной сайт Юпи! — http://yupe.ru

Исходный код — https://github.com/yupe/yupe

Присоединяйтесь!

я в шоке!!!

Захожу сегодня на свой блог и вижу такую картину:

blog-error

Сразу закралась мысль : «аааа меня похакали, удалили все мои мега-крутые посты!».  Потом самообладание вернулось ко мне, и проскочила следующая мысль: «да каму мой блог нужен то??!».

Зашел в админскую панель своего хостинга, проверил целостность данных в базе — все в порядке! Вернулся на сайт, 5 раз нажал ctrl+F5 — не помогло! Зашел в админку ворд пресса — на первый взгляд все тоже в норме! Из админки перешел по ссылке «перейти на сайт» и вот оно счастие — все вернулось! Что это было до сих пор не понятно!

Поменьше всем таких вот неприятностей!

и вот прошло 6 месяцев…

Прошло ровно 6 месяцев с момента публикации первой записи в моем блоге.

Хочу подвести некоторые итоги и рассказать о возможных планах.

На данный момент мой блог это:

Содержимое моего блогаС посещаемостью дела обстоят примерно вот так:

Посетители моего блога

После переезда RSS, заработал 0.52$ — на Adsense для каналов (так что я теперь сказочна богат).

О результатах, кажется, все…

Перейдем к планам.

А конкретных планов, собственно говоря, пока и нет.

Поживем, увидим.