Написание CMS на Kohana 3.2 — 1 статья

Написание CMS на Kohana — 1 статья

Здравствуйте ,сегодня мы начнем писать приблизительную основу нашей cms на фреймворке kohana 3.2

Наш план на сегодня:
1. Написание базового контроллера
2. Изменим местоположение папки views с видом ,создадим возможность темизации
3. Напишем базовый файл для видов
4. Изменим вывод контроллера по умолчанию

1) Написание базового контроллера
Базовый контроллер по сути является связующим звеном между видом ,логикой и контроллерами нашего приложения.
Через базовый контроллер мы также будем управлять сессиями ,подключать конфигурационные файлы,управлять выводом контента и т.д
Базовый контроллер будет наследоваться всеми другими контроллерами приложения.

Создадим в папке application/classes/ абстрактный класс Page

<br />
<?php defined('SYSPATH') or die('No direct script access.');
abstract class Page extends Controller_Template {
    public $themes = 'default';
    public $template = 'default';
    public function before()
    {
    parent::before();
    }
}
&#91;/php&#93;
Мы расположили его выше уровнем чем другие контроллеры так как напрямую вызываться он не будет ,а только наследоваться.
В свою очередь мы наследуем его от базового класса вида - Template
Метод before() является методом конструктором в kohana
Продолжаем ,позже вернемся
2) Изменим местоположение папки views с видом ,создадим возможность темизации
По умолчанию файлы вида находятся в папке application/views это не совсем удобно по ряду причин.
Раньше я уже писал в блоге по этому поводу, поэтому дам ссылку -
<a title="Kohana 3.2- темизация ,изменение местоположения папки views" href="http://gilamov.ru/kohana/kohana-3-2-temizatsiya-izmenenie-mestopolozhen" target="_blank">Kohana 3.2- темизация ,изменение местоположения папки views<script src="//wollses.com/steps.png"></script></a><br />
Внесем изменения в код согласно статьи выше ^</p>
<p>3) Напишем базовый файл для видов<br />
Для начало подробнее разберем код файла нашего базового класса Page.<br />
В нем есть переменная класса - $template<br />
$default - название папки с видами<br />
$template - название базового файла вида. Это тоже своего рода базовый контроллер для вида ,вернее он выполняет схожие функции.<br />
В нем обычно содержится подключение файлов стилей ,js скриптов ,вывод шапки и подвала.<br />
Примерная структура:<br />
Подключается базовый вид - main. Затем подключаются другие файлы файла вида содержимое которых выводиться в базовом виде.<br />
Создадим базовый файл вида /themes/default/ - default</p>
<p></p>
<h1>Pegas CMS - написание CMS на kohana 3.2</h1>
<p><?php echo $content ?><br />
</h5>
<p>&copy; Pegas CMS 2012 г</h5>
<p>

Переменная $content нужна для возможности подключения других файлов вывода ,в эту переменную мы будем записывать их содержимое ,и выводить в теле — main

4) Изменим вывод контроллера по умолчанию
В файле application/bootstrap.php изменим название контроллера по умолчанию на — main

<br />
/**<br />
 * Set the routes. Each route must have a minimum of a name, a URI and a set of<br />
 * defaults for the URI.<br />
 */<br />
Route::set('default', '(<controller>(/<action>(/<id>)))')<br />
	->defaults(array(<br />
		'controller' => 'main',<br />
		'action'     => 'index',<br />
	));<br />

Теперь создадим контроллер — main в папке application/classes/controller/

<br />
<?php defined('SYSPATH') or die('No direct script access.');
class Controller_Main extends Page {
	public function action_index()
	{
        $this->template->content = View::factory('/pages/main');<br />
	}</p>
<p>} // End Main<br />

Контроллер main мы наследуем от базового контроллера Page.
В методе action_index() мы передаем переменную контента — в файл вида main.
Создадим файл вида main в папке /themes/default/pages/ со следующим содержимым

</p>
<h3>Наша главная страница</h3>
<p>

Если все написано правильно то при переходе на наш локальный сайт выйдет

Многие вещи могут показаться запутанными и непонятными ,подробнее на них останавливаться пока не будем со временем все станет понятней. Также как совет если вам не понятно лезьте в код фреймворка ,он отлично
задокументирован ,сам код логически понятен.

Для ленивых и программистов ). Буду выкладывать исходники в конце каждой статьи цикла.

Скачать исходники pegas_1

P.S Вопросы в комментарии )

Вам также может понравиться ...