Pimcore CMS: Zend Framework + extJS

// Ноябрь 24th, 2010 // CMS, PHP, Zend Framework, Веб-разработка

Посмотрел тут результаты конкурса 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 со следующим содержанием:

<?php

class ContentController extends Pimcore_Controller_Action_Frontend {

    public function defaultAction () {
        $this->enableLayout();
    }
}

?>

Далее создайте папку «content» в папке «/website/views» и в ней файл default.php со следующим содержанием:

<?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:

<!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.

Ну и на закуску нагрузочное тестирование этой страницы.

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 режиме.

Ссылки

Pimcore Wiki

Share

Спасибо!


Если вам помогла статья, или вы хотите поддержать мои исследования и блог - вот лучший способ сделать это:


6 Responses to “Pimcore CMS: Zend Framework + extJS”

  1. Ошибочка:
    Далее создайте папку «content» в папке «/website/views» и в ней файл default.php со следующим содержанием

    создать папку «content» следует в
    /website/views/scripts

  2. Alexander:

    А я бы еще добавил ссылку на исходные wiki по pimcore http://www.pimcore.org/wiki/display/PIMCORE/Quick+Start+Guide

  3. Спасибо за полезную информацию!

  4. Vladimir:

    В примере ошибка. Эта же ошибка есть и в оригинальном «Быстром страте».
    на шаге: Далее создайте папку «content» в папке «/website/views» и в ней файл default.php со следующим содержанием… первая строка содержит ошибку.
    Не павильный вариант:
    layout()->setLayout(‘standard’); ?>
    Правильный вариант:
    layout()->setLayout(‘standart’); ?>

    Обратите внимание на последнюю букву в лайауте.

Комментировать