Пришла пора применить все наши текущие знания, а заодно немножко попрактиковаться.
Для начала давайте почистим наш сайт от мусора и лишних файлов. Удалите 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 и есть.
Теперь можете запустить сайт. Вы должны увидеть текст Это главная страница внутри серой рамочки. Пока мало похоже на блог, но основу мы уже сделали. А улучшать ее мы будем в следующем уроке.
<< Назад | Вперед >> |
Пожалуйста, зарегистрируйтесь для комментирования.
Добрый день!
У меня подключение стиля порождает
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, тогда не совсем все гладко. Если заходить на главную страницу все ОК. А если на любую другую — тогда дела плохи. Если это делать таким вариантом как можно это исправить???