Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Уроки по созданию своей CMS
http://forum.kohanaframework.su/viewtopic.php?f=38&t=657
Страница 2 из 6

Автор:  WinterSilence [ 13 авг 2013, 18:34 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Sergey писал(а):
Прочёл по диогонали, но так и не встретил зачем кстати лого делать виджетом?

это просто для примера, чаще всего такие вещи сниппетами конечно делаются, но может быть например виджет получающий данные о лого из базы или создающий его "на лету", тогда одного только View уже недостаточно.

Автор:  Sergey [ 13 авг 2013, 20:49 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

зачем логотипу вообще нужно обрабатываться? почему это не должно быть статикой, которая к php не имеет никакого отношения и кешируются один раз и до - следующего ребрендеринга компании?

Автор:  WinterSilence [ 13 авг 2013, 23:59 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

да ладно тебе, не нуди) лень перерисовывать, будет время подкорректирую) мне еще по СMS хэлперу поясниловку писать, уж больно много на нем завязано

Автор:  Sergey [ 14 авг 2013, 18:32 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

:)

Автор:  arhont [ 14 авг 2013, 21:32 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Спасибо!

Расскажи подробнее про Controller_Ajax.

В связи с большим количеством JavaScript скриптов скажите, выносите ли вы их в отдельные файлы вида? А то у меня в ряде случаев возникли проблемы с кавычками.

Автор:  WinterSilence [ 15 авг 2013, 21:24 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

блин и никто не написал что сами файлы не выложил =\ завтра подчищу и выложу остальные классы, а пока код AJAX контроллера:
Код:
abstract class Controller_CMS_Ajax extends Controller_Basic
{
   /**
    * @var  boolean  View auto render. Not used in AJAX
    */
   protected $auto_render = FALSE;

   /**
    * @var  mixed  Response data type(text, html, json, xml). If empty not convert data
    */
   protected $data_type = 'json';

   /**
    * Automatically executed before the controller action. Can be used to set
    * class properties, do authorization checks, and execute other custom code.
    *
    * @return  void
    */
   public function before()
   {
      // Check request type
      if ( ! $this->request->is_ajax())
      {
         throw HTTP_Exception::factory(501, 'AJAX request not detected');
         // throw new Request_Exception('AJAX request not detected', 501);
      }
      
      // Set response data type
      $this->data_type = $this->param('data_type', $this->data_type);
      if ( ! empty($this->data_type) AND ! in_array($this->data_type, array('text', 'html', 'json', 'xml')))
      {
         throw HTTP_Exception::factory(500, 'Wrong response data type');
         // throw new Request_Exception('Wrong response data type', 500);
      }

      parent::before();
   }

   /**
    * Automatically executed after the controller action. Can be used to apply
    * transformation to the response, add extra output, and execute other custom code.
    *
    * @return  void
    */
   public function after()
   {
      // Convert response data
      if ( ! empty($this->data_type))
      {
         $this->view = CMS::convert($this->view, $this->data_type);
      }
      
      // Add special header fields for AJAX requests
      $this->headers = array_merge(
         $this->headers,
         array(
            'Content-Type'  => 'text/'.$this->data_type,
            'Pragma'        => 'no-cache',
            'Cache-Control' => 'no-store, no-cache, must-revalidate',
         )
      );
      
      parent::after();
   }

} // End Controller_Ajax


Основной момент в нем это авто конвертация результата с помощью метода CMS::convert (первый параметр - исходные данные, второй - тип данных). Его код выложу позднее вместе с описанием всего хэлпера CMS, вместо этого метода можно использовать модуль dataflow: https://github.com/morgan/kohana-dataflow . Результат работы action'а (response body)сохраняется в $this->view по аналогии с остальными контроллерами. Дополнительные заголовки заголовки служат для указания типа данных и отключения кеширования AJAX запросов.

Если что-то не понятно, пишите - сделаю примеры.

Автор:  AmberLEX [ 17 авг 2013, 18:38 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Не совсем понял:
Общие для фронта и админки настройки хранятся в modules/common/config?
Если несколько сайтов используют вынесенный modules за www как быть?

Автор:  WinterSilence [ 17 авг 2013, 21:28 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

AmberLEX> Хранить актуальные настройки в приложениях, я такой вариант честно говоря не рассматривал, обычно один клиент - один сайт\хостинг. Eщё не стоит забывать, что мы пытаемся создать именно CMS, а они редко рассчитаны на несколько сайтов.

Автор:  AmberLEX [ 17 авг 2013, 22:07 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

Жаль. Ну да ладно.
Подход хороший убрать папку application и создать для каждого приложения свои папки изменяня $application, удобно.
Я так же разделял, но в application/controller папки контроллеров:
Код:
Ajax
Backend
Frontend
Mobile
Widgets
Контроллеры в этих папках наследуют нужные из нижеприведенного списка
Код:
App.php
    Security.php
        Ajax.php
        Mobile.php
        Template.php
            Frontend.php
                Error.php
            Backend.php
        Widgets.php
И в config соответствующие файлы настроек
Код:
app.php  - общие настройки
frontend.php - массивы путей к css, js
backend.php - массивы путей к css, js
mobile.php - массивы путей к css, js

Автор:  WinterSilence [ 17 авг 2013, 22:13 ]
Заголовок сообщения:  Re: Уроки по созданию своей CMS

не понял чем этот вариант отличается от моего :oops:

Страница 2 из 6 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/