Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проектирование CMS 
:(
    Опции темы
fesor
Дата 23.7.2009, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Где-то с пол года назад пришла в голову идея написать свою недоCMS для своих проектов. Ну идея развивалась и стала перерастать в что-то вроде мегапроекта в целях самообучения (коммерческий успех сомниваюсь что будет).
Собственно стал проектировать свою CMS (ООП, MVC) и задумался о ее архитектуре (уже есть версий 8, и все они чем-то не устраивают).


Начнем с собственно приложений:
Код

class GuestbookController extends Controller
{
    
    public function actionIndex()
    {
        $data = Posts::model()->limit( $this->params('PerPage')*($_GET['page']-1), $this->params('PerPage') )->findAll();
        if($data === false)
            view::error(404);
        else
        {
            view::Render( 'list', $data );
            view::RenderPaginator( $this->params('PerPage'), $_GET['page'], Posts::model()->count() );
        }
        
    }
    
    public function actionAdd()
    {
        new BBCodeParser;
        $data = array();
        $data['name'] = $_POST['name'];
        $data['email'] = $_POST['email'];
        $data['website'] = $_POST['website'];
        $data['text'] = $_POST['text'];
        $data['time'] = time();
        if( Posts::model()->add($data) )
            view::setFlashMessage($this->message("Post added successfully"), $_POST['currenturi']);
        else
            view::setFlashMessage($this->message("Error during post submission"), $_POST['currenturi']);
    }
    
}

//Generated by Helly SDK
class Posts extends Model
{
    
    public function TableName()
    {
        return 'guestbook_posts';
    }
    
    public function rules()
    {
        return array(
            array( 'id', 'type'=>'int', 'uniq'=>true ),
            array( 'email', 'type'=>'email', 'lenght'=>128 ),
            array( 'date', 'type'=>'date'),
            array( 'website', 'type'=>'url', 'lenght'=>128 ),
            array( 'name', 'type'=>'string', 'lenght'=>64 ),
            array( 'text', 'type'=>'text'),
        );
        
    }
    
    //execute only on add/update row
    public function beforeValidate()
    {
        new BBCodeParser;
        $this->data['text'] = BBCodeParser::parse($this->data['text'];
    }
    
}

Этот простой НЕРАБОЧИЙ пример просто демонстрирует основное строение приложения для моей CMS.
Собственно там не все еще ясно. Очень важный момент - избавление от зависимостей. Допустим можно сделать в контроллере вызов функции через view::Render() а можно через $this->view->Render(). Я немогу решить какой способ более простой и удобный.

Также вопрос относительно реализации админки. Собственно как сделать админ интерфейс для приложенйи? Сделать отдельный файл типа backend.php в котором будет класс с функциями и параметрами? Но это неудобно.... хотя может это добнее чем писать/верстать все самому. А так будет все работать на примере админки из Симфони. Может где можно подсмотреть хорошую реализацию?
PM MAIL WWW   Вверх
nerezus
Дата 23.7.2009, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Вопрос: устройство каких существующих CMS ты уже изучил?
Почему ты не используешь CMF для написания CMS?

Ответь.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
fesor
Дата 23.7.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Устройство DLE (врага назо днать в лицо), Joomla 1.5, Drupal, MediaWIKI, IPB... собственно все...

По поводу использования CMF - ну я незнаю... наверное потому что ненашел хорошей настолько, что было бы хорошо ее испоользовать. Но если ненайду способ реализации архитекруты и нормальный способ реализации ActiveRecord паттерна, то возьму в руки YII тогда.
PM MAIL WWW   Вверх
nerezus
Дата 23.7.2009, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



fesor, это CMS.

Попробуй для начала создать проекты на ZF/Symfony/Kohana. Потом сравни с RoR/Django.
И только потом пиши свое, иначе тупо убъешь свое время без получения *полезного* опыта.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
fesor
Дата 23.7.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



Приходилось работать с Django, пару проектов писал на таких фреймворках как CAKEPHP и MZZ. YII больше всех пока нравится.

Собственно вопрос не стоит "надо или нет и где черпать вдохновение". Просто... нету идей как реализовать админ интерфейс красиво и стандартизированно.

Это сообщение отредактировал(а) fesor - 23.7.2009, 17:42
PM MAIL WWW   Вверх
nerezus
Дата 24.7.2009, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



fesor, Структура модулей с отображением в виде композита(т.е. модуль может отображать в себе другие модули).

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

Это советы. А вопроса не понял.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
NetJunky
Дата 24.7.2009, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



fesor, интерфейс для админки посоветовал бы брать из WP но чую, что там достаточно сложно написано. Пару раз открыл файлы, но особо не вникал. Визуально там все достаточно удобно.

Также интерфейс админки IPB посоветовал бы. Всё остальное как-то не очень. Хотя почём мне знать. Это только ИМХО.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
MoLeX
Дата 24.7.2009, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(NetJunky @  24.7.2009,  07:04 Найти цитируемый пост)
интерфейс для админки посоветовал бы брать из WP

вордпресс?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
NetJunky
Дата 24.7.2009, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 11.5.2008
Где: Tallinn

Репутация: 0
Всего: 0



Да. Он щас там достаточно симпотичный.


--------------------
Sleep, those little slices of death; Oh how I loathe them. © Edgar Allan Poe
Таллиннцы http://vingrad.ru/groups.php?action=group_...mp;group_id=139

Для записи данных объёмом 1 Терабайт на бумагу, нужно срубить 50000 деревьев.
PM MAIL WWW ICQ Skype MSN   Вверх
fesor
Дата 24.7.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 16.7.2009
Где: Минск

Репутация: 4
Всего: 4



ну тырить сам интерфейс я не собираюсь. Вариант с WP наверное я рассмотрю так как по удобству мне эта система очень нравится.

nerezus, вопрос состоит в том, чтобы придумать как разработчик будет создавать админинтерфейс для своих приложений и как различные компоненты будут встраиваться в него (по мере необходимости). Ну типа как генератор админ интерфейса у Symphony
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0774 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.