Pimcore CMS: Zend Framework + extJS
Посмотрел тут результаты конкурса 2010 Open Source Awards. Там, скажу я вам очень много интересных разработок. Например, CMS система Pimcore на базе Zend Framework и extJS. Т.к. мы в компании тесно работаем с ZF, мне было интересно посмотреть реализацию работы со страницами и объектами в этой CMS. Далее я напишу, как создать первую страницу в этой системе.
Pimcore я устанавливал на локальный адрес http://pimcore.new, поэтому зайдя по ссылке http://pimcore.new/admin/ я увидел админ-панель.
Довольно симпатичная админка. Если вы хоть раз работали с ExtJS приложением (например с админкой сетевого диска Synology) то вам она покажется очень знакомой. Для того, чтобы добавить страницу нам необходимо создать контроллер с действием и вид.
Создайте файл ContentController.php в папке /website/controllers со следующим содержанием:
1 2 3 4 5 6 7 8 9 10 |
<?php class ContentController extends Pimcore_Controller_Action_Frontend { public function defaultAction () { $this->enableLayout(); } } ?> |
Далее создайте папку “content” в папке “/website/views” и в ней файл default.php со следующим содержанием:
1 2 3 4 5 6 7 8 |
<?php $this->layout()->setLayout('standart'); ?> <h1><?= $this->input("headline", array("width" => 540)); ?></h1> <?php while ($this->block("contentblock")->loop()) { ?> <h2><?= $this->input("subline"); ?></h2> <?= $this->wysiwyg("content"); ?> <?php } ?> |
Отлично, мы сделали вид и контроллер, теперь добавим шаблон (лейаут) для него. Создаем файл standart.php в папке /website/views/layouts:
1 2 3 4 5 6 7 8 9 10 11 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="/static/source/css/screen.css" /> </head> <body> <?= $this->layout()->content ?> </body> </html> |
Дальше идём в админке в Settings -> Document types и добавляет там новый тип документа “ContentPage” (name = ContantPage, controller = content, action = default, template = default, type = page, priority = 1).
Теперь можно добавлять саму страницу. Правой кнопкой кликаем на Home в левой части экрана, Add Page -> ContentPage.
Название страницы ставим “test”, Predifinition Content Type = “ContentPage”, Controller = content, Action = default, Template = “content/default.php”. Дальше во вкладке “Edit” указываем название абзаца, и нажимаем 1 (+) кнопку, после чего откроется WYSIWYG-редактор, в котором можно ввести текст абзаца.
Дальше вводим адрес http://pimcore.new/test и видим нашу страницу.
Работа с этой CMS оставила у меня хорошее впечатление, единственное, что его подпортило – это глюк с контекстным меню. Иногда надо было по 1- раз кликать правой кнопкой мыши на Add Page, чтобы появилось подменю. Попробую проверить это в других броузерах, может это глюк моего Firefox.
Ну и на закуску нагрузочное тестирование этой страницы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
andrey@vaio:~$ ab -c 10 -n 50 http://pimcore.new/test Benchmarking pimcore.new (be patient).....done Server Software: Apache/2.2.14 Server Hostname: pimcore.new Server Port: 80 Document Path: /test Document Length: 420 bytes Concurrency Level: 10 Time taken for tests: 2.256 seconds Complete requests: 50 Failed requests: 0 Write errors: 0 Total transferred: 31300 bytes HTML transferred: 21000 bytes Requests per second: 22.16 [#/sec] (mean) Time per request: 451.203 [ms] (mean) Time per request: 45.120 [ms] (mean, across all concurrent requests) Transfer rate: 13.55 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 7 17.8 0 62 Processing: 188 428 76.4 434 621 Waiting: 152 387 70.4 390 565 Total: 188 435 75.0 439 621 Percentage of the requests served within a certain time (ms) 50% 439 66% 451 75% 465 80% 469 90% 543 95% 548 98% 621 99% 621 100% 621 (longest request) |
Запрос к БД был один, кэширование отключено. Думаю, довольне неплохо, учитывая, что система работала в dev режиме.
Ошибочка:
Далее создайте папку «content» в папке «/website/views» и в ней файл default.php со следующим содержанием
создать папку “content” следует в
/website/views/scripts
А я бы еще добавил ссылку на исходные wiki по pimcore http://www.pimcore.org/wiki/display/PIMCORE/Quick+Start+Guide
Добавил, спасибо!
Спасибо за полезную информацию!
В примере ошибка. Эта же ошибка есть и в оригинальном “Быстром страте”.
на шаге: Далее создайте папку «content» в папке «/website/views» и в ней файл default.php со следующим содержанием… первая строка содержит ошибку.
Не павильный вариант:
layout()->setLayout(‘standard’); ?>
Правильный вариант:
layout()->setLayout(‘standart’); ?>
Обратите внимание на последнюю букву в лайауте.
Спасибо, Владимир. Исправил очепятку)