CMS PTC
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
CMS PTC
Доброе время суток формучани.
Откровенно говоря решил похвастаться разработанной CMS, разрабатывал его примерно 3 месяца, и она пока сыровата (в моём понимание продукта она еще будет долго "сырой"), в процессе разработки сделал на ней 3 сайта. Цели которые я ставил для себя, сделать более менее универсальную CMS на которой я мог бы довольно быстро разрабатывать не большие сайты (новостные, блог, каталог\интерент магазины) + доп. функционал который нужен конкретно заказчику (аля ERP система). Демо версии пока нету, ни как не дойдут руки, но выложу скриншеты и ссылки на завершенные проекты ( дизайны и верстка сайтов не обсуждаются, что было на том и делал ).
Что она умеет:
- создавать меню, с разделами сайта (древовидная структура)
- создавать в разделе каталог с отдельным разделами (древовидная структура)
- гибкая настройка каталога, группировка товара, для разделов можно указывать группу товаров, производители, параметры для раздела каталога с наследием и без, способы отображения карточек товаров и так далее.
- работа с формами как с заявками (см. первый скрин), но это не до конца еще реализована, хочу дописать универсальный конструктор форм, а пока каждая форма = модели, которую надо добавлять в ручную.
- добавления: текст, материал, фотогал., формы в раздел меню сайта или в раздел каталога.
- модуль материалы (см. на http://pogruzon.ru )
- SEO: сайта работает полностью на ЧПУ (реализовал свои URLManager для этих целей), возможность редактирование META информации для любой страницы сайта.
В итоге сейчас при создании нового сайта я в основном изменяю только view-ки, т.е. по сути шаблоны под конкретный дизайн сайта, что делает очень удобно (для меня по крайне мере) + если вношу доработки которые затрагивают модель БД или уже существующею логику работы того или иного функционала, всё это мержится в основную ветку CMS.
Что планирую сделать в ближайшие время:
- поддержку поддоменов\мультсайтность, региональные поддомены (это когда один дизайн и куча поддоменов с различной ифнф. на каждом поддомеене)
- поддержка разделения прав пользователей;
- переделать формы (create\upate) в модальные окна;
- универсальный конструктор форм. За пилю свой с блэкджеком и шлюхами, или посмотрю что есть в расширениях для yii
- отдельный модуль для uploader-а и динамической работы с изображениями, который будет полностью реализовывать функционал http://www.yiiframework.com/extension/image (обрезка, увлечение, ротация, водяной знак и так далее ), для этой работы скорей всего буду нанимать людей, так как там будет много очень JS кода + AJAX , а у меня времени на это вряд ли хватит в ближайшие время.
з.ы. спасибо создателям Yii Framework, за очень хорошую документацию и лаконичный, быстрый код)
завершенные проекты:
http://www.kvintstroj.ru/ (первый, надо было делать много правок на нём для SEO оптимизации, а там чё то лес PHP кода в фунционального да и ?d=1&r=3a&t=ttt... везде, по этому пришла идея сделать отдельно для него CMS)
http://kaminplaza.ru/ ( хорошо получилось, особенность в том что на нём по сути два разных каталога )
http://pogruzon.ru/ (новостной портал, с развитием фунционала блока ... плюс для него будет в дальнейшем созданна поддержка rss ленты для материалов + YBlog )
По требованиям к платформе хостинга:
PHP 5.3+ ( 5.2 как старшный сон если честно)
БД MySQL myisam, ибо innodb не поддерживается на многих хостингах, но в перспективе кончено хотелось перейти на модель innodb, хотя я чего-то в последние время смотрю в сторону postgresql.
Производительность:
В принципе забивал каталог до 2000 товарных позицией, в 30 разделах каталога, всё собиралось примерно около 0.5-0.7 секунды, я имею вывод на странице сайта, в АП подольше. Хотя вопрос по производительности я пока не ставил.
Откровенно говоря решил похвастаться разработанной CMS, разрабатывал его примерно 3 месяца, и она пока сыровата (в моём понимание продукта она еще будет долго "сырой"), в процессе разработки сделал на ней 3 сайта. Цели которые я ставил для себя, сделать более менее универсальную CMS на которой я мог бы довольно быстро разрабатывать не большие сайты (новостные, блог, каталог\интерент магазины) + доп. функционал который нужен конкретно заказчику (аля ERP система). Демо версии пока нету, ни как не дойдут руки, но выложу скриншеты и ссылки на завершенные проекты ( дизайны и верстка сайтов не обсуждаются, что было на том и делал ).
Что она умеет:
- создавать меню, с разделами сайта (древовидная структура)
- создавать в разделе каталог с отдельным разделами (древовидная структура)
- гибкая настройка каталога, группировка товара, для разделов можно указывать группу товаров, производители, параметры для раздела каталога с наследием и без, способы отображения карточек товаров и так далее.
- работа с формами как с заявками (см. первый скрин), но это не до конца еще реализована, хочу дописать универсальный конструктор форм, а пока каждая форма = модели, которую надо добавлять в ручную.
- добавления: текст, материал, фотогал., формы в раздел меню сайта или в раздел каталога.
- модуль материалы (см. на http://pogruzon.ru )
- SEO: сайта работает полностью на ЧПУ (реализовал свои URLManager для этих целей), возможность редактирование META информации для любой страницы сайта.
В итоге сейчас при создании нового сайта я в основном изменяю только view-ки, т.е. по сути шаблоны под конкретный дизайн сайта, что делает очень удобно (для меня по крайне мере) + если вношу доработки которые затрагивают модель БД или уже существующею логику работы того или иного функционала, всё это мержится в основную ветку CMS.
Что планирую сделать в ближайшие время:
- поддержку поддоменов\мультсайтность, региональные поддомены (это когда один дизайн и куча поддоменов с различной ифнф. на каждом поддомеене)
- поддержка разделения прав пользователей;
- переделать формы (create\upate) в модальные окна;
- универсальный конструктор форм. За пилю свой с блэкджеком и шлюхами, или посмотрю что есть в расширениях для yii
- отдельный модуль для uploader-а и динамической работы с изображениями, который будет полностью реализовывать функционал http://www.yiiframework.com/extension/image (обрезка, увлечение, ротация, водяной знак и так далее ), для этой работы скорей всего буду нанимать людей, так как там будет много очень JS кода + AJAX , а у меня времени на это вряд ли хватит в ближайшие время.
з.ы. спасибо создателям Yii Framework, за очень хорошую документацию и лаконичный, быстрый код)
завершенные проекты:
http://www.kvintstroj.ru/ (первый, надо было делать много правок на нём для SEO оптимизации, а там чё то лес PHP кода в фунционального да и ?d=1&r=3a&t=ttt... везде, по этому пришла идея сделать отдельно для него CMS)
http://kaminplaza.ru/ ( хорошо получилось, особенность в том что на нём по сути два разных каталога )
http://pogruzon.ru/ (новостной портал, с развитием фунционала блока ... плюс для него будет в дальнейшем созданна поддержка rss ленты для материалов + YBlog )
По требованиям к платформе хостинга:
PHP 5.3+ ( 5.2 как старшный сон если честно)
БД MySQL myisam, ибо innodb не поддерживается на многих хостингах, но в перспективе кончено хотелось перейти на модель innodb, хотя я чего-то в последние время смотрю в сторону postgresql.
Производительность:
В принципе забивал каталог до 2000 товарных позицией, в 30 разделах каталога, всё собиралось примерно около 0.5-0.7 секунды, я имею вывод на странице сайта, в АП подольше. Хотя вопрос по производительности я пока не ставил.
- Вложения
-
- Раздел сайта с модулями на странице
- Image 4.png (95.57 КБ) 11532 просмотра
-
- Разделы меню
- Image 3.png (91.54 КБ) 11532 просмотра
-
- Главная страница
- Image 2.png (52.14 КБ) 11532 просмотра
Последний раз редактировалось vladikamira 2013.04.07, 22:27, всего редактировалось 2 раза.
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
еще 3 скрина
- Вложения
-
- Публикация материалов
- Image 7.png (97.32 КБ) 11531 просмотр
-
- Просмотр материалов
- Image 6.png (118.35 КБ) 11531 просмотр
-
- Добавление модуля материалов
- Image 5.png (63.89 КБ) 11531 просмотр
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
Еще пожалуй парочку.
- добавления материала с если модуль работе в режиме ЧПУ
- параметры товаров группы раздела каталога
- добавления материала с если модуль работе в режиме ЧПУ
- параметры товаров группы раздела каталога
- Вложения
-
- Image 15.png (104.68 КБ) 11524 просмотра
-
- Image 14.png (75.79 КБ) 11524 просмотра
-
- Image 9.png (100.53 КБ) 11524 просмотра
Re: CMS PTC
Красиво, аккуратно - это большой плюс, но я думаю большинству форумчан было бы интересней посмотреть как это сделано, а ни как это выглядит
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
Я пока не доведу часть кода "до ума" выкладывать его не буду, а когда доведу, ради критики выложу кончено, ибо критика без ценна Когда починю dbForge for MySQL (сломался после обновления), выложу диаграмму БД еще (да да я пока не нарисую таблички со всеми связями, модели не создаю).yan писал(а):Красиво, аккуратно - это большой плюс, но я думаю большинству форумчан было бы интересней посмотреть как это сделано, а ни как это выглядит
Не скрою, некоторые вещи я делал через одно место на букву ж, так как был в ситуации: "пишу на колене сидя на табуретке"
Код пишу примерно так:
Код: Выделить всё
public function actionUpdate( $id ) {
$this->pageTitle = CMSController::$title_prefix . 'Редактирование текста';
$image = new Images( 'search' );
$image->module_id = $id;
$model = TextNote::model()->find( 'module_id = :id', array( ':id' => $id ) );
$this->addItems = CMSController::ProvideImagesList( $id );
if ( isset( $_POST['TextNote'], $_POST['Module'] ) ) {
$model->attributes = $_POST['TextNote'];
$model->module->attributes = $_POST['Module'];
$model->module->visible = ( isset( $_POST['Module']['visible'] ) ) ? 1 : 0;
$model->module->is_show_title = ( isset( $_POST['Module']['is_show_title'] ) ) ? 1 : 0;
$model->is_show_rm = ( isset( $_POST['TextNote']['is_show_rm'] ) ) ? 1 : 0;
$success = $model->validate() && $model->module->validate();
if ( $success ){
$model->save( false );
$model->module->save( false );
Yii::app()->user->setFlash('success',"Информация успешно сохранена." );
if( $model->module->category_id )
$this->redirect( array( '/admin/category/view/','id' => $model->module->category_id) ); //TODO: поправить создание УРЛ-а.
elseif( $model->module->catalog_id )
$this->redirect( array( '/admin/catalog/view/','id' => $model->module->catalog_id ) );
}
}
$this->render( 'update', array(
'model' => $model,
'image' => $image,
) );
}
Сейчас максимально принципиально придерживаюсь MVC модели написания кода.
Ну и protected с исключениями у меня в git + ide NetBeans IDE + denwer + realsync, облегчают мне очень сильно процесс разработки на dev и production окружение.
В принципе на будущие планирую встроить прям в CMS обновление новых доработок через git + синх. объектов БД
- Вложения
-
- Image 16.png (162.6 КБ) 11493 просмотра
Re: CMS PTC
уже интереснейvladikamira писал(а):Код: Выделить всё
public function actionUpdate( $id ) { $this->pageTitle = CMSController::$title_prefix . 'Редактирование текста'; $image = new Images( 'search' ); $image->module_id = $id; $model = TextNote::model()->find( 'module_id = :id', array( ':id' => $id ) ); $this->addItems = CMSController::ProvideImagesList( $id ); if ( isset( $_POST['TextNote'], $_POST['Module'] ) ) { $model->attributes = $_POST['TextNote']; $model->module->attributes = $_POST['Module']; $model->module->visible = ( isset( $_POST['Module']['visible'] ) ) ? 1 : 0; $model->module->is_show_title = ( isset( $_POST['Module']['is_show_title'] ) ) ? 1 : 0; $model->is_show_rm = ( isset( $_POST['TextNote']['is_show_rm'] ) ) ? 1 : 0; $success = $model->validate() && $model->module->validate(); if ( $success ){ $model->save( false ); $model->module->save( false ); Yii::app()->user->setFlash('success',"Информация успешно сохранена." ); if( $model->module->category_id ) $this->redirect( array( '/admin/category/view/','id' => $model->module->category_id) ); //TODO: поправить создание УРЛ-а. elseif( $model->module->catalog_id ) $this->redirect( array( '/admin/catalog/view/','id' => $model->module->catalog_id ) ); } } $this->render( 'update', array( 'model' => $model, 'image' => $image, ) ); }
вместо find( 'module_id = :id', array( ':id' => $id ) ); красивей findByAttributes
$this->pageTitle = CMSController::$title_prefix . 'Редактирование текста'; это дело представления
CMSController::ProvideImagesList( $id ) CMSController::$title_prefix CMSController - странное место для хранения всякой всячины
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
1) я сейчас CDbCriteria использую в основном, но для такого случая действительно findByAttributes можно использовать.yan писал(а): уже интересней
вместо find( 'module_id = :id', array( ':id' => $id ) ); красивей findByAttributes
$this->pageTitle = CMSController::$title_prefix . 'Редактирование текста'; это дело представления
CMSController::ProvideImagesList( $id ) CMSController::$title_prefix CMSController - странное место для хранения всякой всячины
2) я же говорил через "Ж"
3) Там у меня пока весь "мусора" много, скоро займусь разгребанием, Tool:: всякие сделую и в компоненты модуля cms вынесу.
Так как с yii я работаю совсем не много, последних 4 месяца, есть вещи которые идеологический не правильно реализованы (особенно то что делал сначала), однако не всё так плачевно) рефакторинг рефакторинг и еще раз рефакторинг, после того как приведу в порядок код, выложу его в сеть.
В принципе сейчас понимаю что некоторые вещи обобщенные лучше выносить вообще в extensions, скажем сделать отдельный extensions/cms.
Re: CMS PTC
Код: Выделить всё
$model->save( false );
$model->module->save( false );
Re: CMS PTC
Еще интересно каталог товаров реализован ч/з EAV ?
P.S. Тип "Списики" порадовал))
P.S. Тип "Списики" порадовал))
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
транзакции это хорошо, но блин нет их в myisam (((( а решил использовать потому что на многих хостингах только такой тип БД.xoma писал(а):Такие штуки лучше оборачивать в транзакцию....иначе может быть плохо =)Код: Выделить всё
$model->save( false ); $model->module->save( false );
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
честно, первый раз услышал что это такое.puritania писал(а):Еще интересно каталог товаров реализован ч/з EAV ?
Каталог реализован как то так:
tbl_catalog <- tbl_catalog_items <- tbl_params_value
Re: CMS PTC
Видимо так оно и есть... http://techportal.inviqa.com/2010/10/21 ... ata-model/
Ишчо пару вопросиков:-)
Все значения параметров в текстовом поле храните или в разных полях согласно типу? Поиск по атрибутам есть?
Ишчо пару вопросиков:-)
Все значения параметров в текстовом поле храните или в разных полях согласно типу? Поиск по атрибутам есть?
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
в текстовых в текстовых.puritania писал(а):Видимо так оно и есть... http://techportal.inviqa.com/2010/10/21 ... ata-model/
Ишчо пару вопросиков:-)
Все значения параметров в текстовом поле храните или в разных полях согласно типу? Поиск по атрибутам есть?
Я понимаю о чём Вы хотите сказать, но я делал как мне было удобно и быстро, вопрос и проблемы которые могут возникнуть потом тоже ясны, и узкие места мне тоже известны, для меня это не является проблемой, по очевидным причинам. Поиск по атрибутам есть: http://www.kaminplaza.ru/catalog/furnace/steel/
сильно тормозит? вот именно что нечему там тормозить, а вот когда мне надо будет сделать каталог с 20к позициями, тогда ясен пень буду узки места делать. И вообще я советую, даже в реальной жизни всем, поступать как то так: "Решать проблемы по мере их поступления"
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
адд. и вот еще что, мне интересно как быстро будет работать запрос
param_id = 23 and value="текст" and item_id=3
param_id and item_id поля с индексом, value varcahr128, тоже в принципе индекс можно тоже добавить.
param_id = 23 and value="текст" and item_id=3
param_id and item_id поля с индексом, value varcahr128, тоже в принципе индекс можно тоже добавить.
Re: CMS PTC
дык если будет много товаров, то по eav искать и не стоитvladikamira писал(а):адд. и вот еще что, мне интересно как быстро будет работать запрос
param_id = 23 and value="текст" and item_id=3
param_id and item_id поля с индексом, value varcahr128, тоже в принципе индекс можно тоже добавить.
в сфинксе вот как раз недавно появились json атрибуты, так что при надобности можно немного переделать хранение и фильтровать сфинксом
Re: CMS PTC
Я Вам не собирался ничего предьявлять)) Просто интересуюсь как сделано и насколько данное решение универсальноvladikamira писал(а): в текстовых в текстовых.
Я понимаю о чём Вы хотите сказать, но я делал как мне было удобно и быстро, вопрос и проблемы которые могут возникнуть потом тоже ясны, и узкие места мне тоже известны, для меня это не является проблемой, по очевидным причинам. Поиск по атрибутам есть: http://www.kaminplaza.ru/catalog/furnace/steel/
сильно тормозит? вот именно что нечему там тормозить, а вот когда мне надо будет сделать каталог с 20к позициями, тогда ясен пень буду узки места делать. И вообще я советую, даже в реальной жизни всем, поступать как то так: "Решать проблемы по мере их поступления"
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
я не много не это имел ввиду. Вообщем меня пока устраивает то что есть сейчас, проверю на выходных с 5000 позициями, как это всё при нагрузке будет работать и потом уже буду думать, хотя мне это сейчас не важно.puritania писал(а):Я Вам не собирался ничего предьявлять)) Просто интересуюсь как сделано и насколько данное решение универсальноvladikamira писал(а): в текстовых в текстовых.
Я понимаю о чём Вы хотите сказать, но я делал как мне было удобно и быстро, вопрос и проблемы которые могут возникнуть потом тоже ясны, и узкие места мне тоже известны, для меня это не является проблемой, по очевидным причинам. Поиск по атрибутам есть: http://www.kaminplaza.ru/catalog/furnace/steel/
сильно тормозит? вот именно что нечему там тормозить, а вот когда мне надо будет сделать каталог с 20к позициями, тогда ясен пень буду узки места делать. И вообще я советую, даже в реальной жизни всем, поступать как то так: "Решать проблемы по мере их поступления"
Допиливать параметры всё ровно, рано или поздно надо будет, так как они должны быть все строго типизированные и с возможностью быть обязательные\не обязательные при заполнение.
Re: CMS PTC
Когда примерно можно будет посмотреть?vladikamira писал(а):Я пока не доведу часть кода "до ума" выкладывать его не буду, а когда доведу, ради критики выложу кончено, ибо критика без ценна
Re: CMS PTC
не удалось пока затестить?vladikamira писал(а):проверю на выходных с 5000 позициями, как это всё при нагрузке будет работать
-
- Сообщения: 92
- Зарегистрирован: 2013.01.11, 23:13
Re: CMS PTC
лето)puritania писал(а):не удалось пока затестить?vladikamira писал(а):проверю на выходных с 5000 позициями, как это всё при нагрузке будет работать
Может кто подскажет есть "модный" генератор данных, в котором есть возможность вставлять в смежные таблицы?