Заготовка для блога — Часть 1

Комментарии: 33  Просмотры: 36 728

Пришла пора применить все наши текущие знания, а заодно немножко попрактиковаться.
Для начала давайте почистим наш сайт от мусора и лишних файлов. Удалите welcome.php из папки с Контроллерами и файл с таким же названием из папки с Видами. Ну а чтобы Кохана не ругалась на отсутствующий Контроллер по умолчанию (коим и являлся Контроллер welcome), сделаем Controller_Page таковым. Для этого добавьте в него метод action_index, т.е. полностью Контроллер будет выглядеть следующим образом:

<?php defined('SYSPATH') or die('No direct script access.');
 
class Controller_Page extends Controller_Common {
 
    // Главная страница
    public function action_index()
    {
        $content = View::factory('/pages/show');
        $this->template->content = $content;
    }    
 
    // Страница о сайте
    public function action_about()
    {
        $content = View::factory('/pages/about');
        $this->template->content = $content;
    }
 
    // Страница контактов    
    public function action_contacts()
    {
        $content = View::factory('/pages/contacts');
        $this->template->content = $content;
    }	
 
} // End Page

И давайте сразу поставим его в файле bootstrap.php в качестве Контроллера по умолчанию. Делается это очень просто и выглядит вот так:

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

Ну и конечно нужно создать файл Вида, который, как вы наверное уже догадались, будет называться show.php. Пусть в нем будет пока просто текст:

<h3>Это главная страница</h3>

Теперь создайте папку public в корне нашего сайта и в ней папки css (тут мы будем хранить стили), images (тут мы будем хранить картинки) и js (тут мы будем хранить ява-скрипты) и пока достаточно. Создайте в папке css файл main.css (это будет основной файл стилей) и поместите туда следующий код:

@charset "utf-8";
/* CSS Document */
 
* {padding:0; margin:0;}
html, body {width:100%; height:100%;}
body {font-family:Tahoma, Geneva, sans-serif; font-size:12px; color:#000; background-color:#fff;}
a {text-decoration:none; outline:none; border:none;}
a img {border:none; outline:none;}
 
.layer {width:100%; position:relative;}
.container {margin:0 auto; width:1000px; border:#999 1px solid;}

Теперь нам нужно прописать каким-то образом путь к этому css-файлу. Для начала в нашем базовом Контроллере, который находится в файле common.php, меняем строчку со стилями на такую:

$this->template->styles = array('main');

Т.е. мы поменяли строку на массив и теперь у нашего шаблона может быть не один, а сразу несколько файлов стилей. Ну а чтобы сделать это возможным, сделаем внутри тега head основного шаблона перебор массива со стилями. И заодно добавим парочку основных блоков. В итоге основной шаблон Вида main.php будет выглядеть следующим образом (пока что):

<!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" />
<title><?php echo $title; ?></title>
<meta name="description" content="<?php echo $description; ?>" />
<?php foreach($styles as $style): ?>
    <link href="<?php echo URL::base(); ?>public/css/<?php echo $style; ?>.css" 
    rel="stylesheet" type="text/css" />
<?php endforeach; ?>
 
</head>
 
<body>
    <div class="layer">
        <div class="container">
            <?php echo $content; ?>
        </div>
    </div>
</body>
</html>

Здесь должно быть все понятно, кроме разве что части адреса: echo URL::base();. Помните в файле bootstrap.php был массив:

Kohana::init(array(
    'base_url'   => '/',
    ...
));

Вот это этот самый базовый url и есть.

Теперь можете запустить сайт. Вы должны увидеть текст Это главная страница внутри серой рамочки. Пока мало похоже на блог, но основу мы уже сделали. А улучшать ее мы будем в следующем уроке.

<< Назад | Вперед >> | Обсудить на форуме


К записи оставлено 33 коммент.

Добрый день!
У меня подключение стиля порождает
HTTP_Exception_404 [ 404 ]: Unable to find a route to match the URI: public/css/main.css
Пробовал изменять подключение. Делал из контроллера и напрямую в шаблоне. Все равно выскакивает исключение!
Что делать, сенсей?

Добрый день!
Та же проблема что и у egorr.
что изменить в .htaccess?

заменить

<link href="»
rel=»stylesheet» type=»text/css» />

на

хотя не совсем понятно что мещает передавать всю ссылку из контроллера

синяя рамка не появляется. Куда нужно закинуть папку public, где этот корень сайта?

У меня при обращении к массиву со стилями выдает Invalid argument supplied for foreach().

Разобрался. Мой косяк.

Заметил одну очень нехорошую вещь. Если подключать стили в контроллере Page, тогда не совсем все гладко. Если заходить на главную страницу все ОК. А если на любую другую — тогда дела плохи. Если это делать таким вариантом как можно это исправить???



Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.