Делаем хлебные крошки (breadcrumbs) в CodeIgniter

Делаем хлебные крошки (breadcrumbs) в CodeIgniter

Создаём навигационную цепочку (breadcrumbs) на сайте в фреймворке CodeIgniter

Сначала дописываем в конец файла application\config\config.php такие строчки:

$config['breadcrumbs_index'] = 'Главная'; // название элемента, ссылка на который будет '/'
$config['breadcrumbs_delimeter'] = '»'; // разделитель, который будет вставляться между каждой крошкой.

Далее в контроллере, например у нас есть контроллер разделов sections.php. Так вот. В конструкторе этого контроллера пишем:

class Sections extends Controller
{           

public function __construct()
{
   parent::Controller();    
   $this->breadcrumbs = array();
    $this->breadcrumbs[] = anchor('', $this->config->item ('breadcrumbs_index'));
}

Таким образом первой крошкой в наших Breadcrumbs будет ссылка Главная, ведущая на главную страницу. Далее в каждой функции контроллера в которой вызывается вид пишем:

$this->breadcrumbs[] = $title; // $title - переменная, которая формируется в вашем контроллере.
$bread = array('breadcrumbs' => $this->breadcrumbs);
$this->load->vars($bread);

Вместо переменной $title может быть и ссылка на этот раздел, например мы в контроллере статей для хлебных крошек написали:

$this->breadcrumbs[] = anchor("sections/".$data['main_info']['section1'], $data['main_info']['section1']);
$this->breadcrumbs[] = $data['main_info']['title'];
$bread = array('breadcrumbs' => $this->breadcrumbs);
$this->load->vars($bread);

Здесь на помощь нам приходит функция класса Loader - vars, которая передает в отображение переменные. Это позволяет избежать передачи массива хлебных крошек при каждой загрузке отображения. Всё, крошки сформированы, переданы в отображение. Теперь их надо отобразить. Для этого создадим отдельное отображение, которое будем подключать в главный шаблон. В главном шаблоне напишем:

<div id="breads"><?php $this->load->view('breadcrumbs'); ?></div>

 

И создадим ещё отображение breadcrumbs.php со следующим содержимым:

<?php

$delim = $this->config->item('breadcrumbs_delimeter');
if ( (isset($breadcrumbs)) AND (is_array($breadcrumbs)) )
{
    ?><div id="breadcrumbs"><?
    $cnt = count($breadcrumbs);
    for ($i=0; $i < $cnt-1; $i++)
    {
        echo $breadcrumbs[$i].' '.$delim.' ';
    }
    echo $breadcrumbs[$cnt-1];
    ?></div>
    <?
}
?>

 

Источник -  http://code-igniter.ru/forum/topic960.html (пользователь Drunk)

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.