Делаем хлебные крошки (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)
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 CodeIgniter: Всплывающая форма обратной связи на Ajax в Bootstrap Modal и проверкой Captcha (18.02.2014)
- Как правильно обновить ExpressionEngine до последней версии 2.5.5 (05.02.2013)
- Team Sense: Доступна отправка сообщения/письма на email сотрудника. (18.01.2013)
- TeamSense: username (логин) в регистрации пользователя. Внедрили библиотеку DHTMLX в TeamSense. (11.01.2013)
- Team Sense: В календарь добавлена возможность указывать место проведения уроков (в офисе, на выезде) (12.12.2012)
- Team Sense: Многопользовательский календарь, заменяем радиокнопки на чекбоксы в выборе преподавателей. Массивы в Javascript. (06.12.2012)
- Team Sense: В календарь-расписание уроков добавлено разделение по преподавателям, которым присвоены свои цвета. (04.12.2012)
- CodeIgniter не передаёт $this->uri->segment(3) в функцию контроллера (передача переменной PHP->JavaScript->PHP) (28.11.2012)
- Воюем с форматом даты в JavaScript. Приведение формата даты в поле input в календаре системы TeamSense к более красивому виду. (18.11.2012)
- Team Sense: Теперь Email-оповещения в TODO можно отправлять как для руководителя задачи, так и для помощников. (21.09.2012)
- CodeIgniter и TeamSense: Делаем свой вид для страницы с ошибкой 404, настраиваем правильную отдачу статусов в HTTP headers (12.09.2012)
- Установка другого сайта (на CodeIgniter или Yii) в подпапку и чтобы поддомен ссылался на подпапку (25.08.2015)
- CodeIgniter: Подключение JS и CSS файлов там, где это нужно. (26.06.2012)
- Использование DISTINCT в SQL-запросах для исключения повторяющихся данных применительно к фреймворку CodeIgniter. (18.06.2012)
- CodeIgniter выдаёт ошибку: Cannot modify header information - headers already sent by (13.04.2012)
- CodeIgniter: Передаются пустые значения полей формы через $_POST если вводить русские символы. Форма не проходит валидацию. (17.08.2016)
- Обновление CodeIgniter с версии 2.0 (2.0.0) до версии 2.0.1 (23.01.2012)
- CodeIgniter: Показываем сообщения пользователю на его действия (19.11.2011)
- Настройка локальной и рабочей сред для разработки на CodeIgniter (2-й вариант) (22.01.2012)
- Календарь c несколькими событиями в один день на CodeIgniter (Calendar Multiple Events Per Day) (23.10.2011)
- Настройка локальной среды для разработки на CodeIgniter в Mac OSX, используя MAMP (22.01.2012)
- Обновление CodeIgniter с версии 2.0.1 до 2.0.2 (23.10.2011)
- CodeIgniter: Аутентификация на сайте с помощью библиотеки DX Auth (24.08.2011)
- Сравнение Yii с CodeIgniter (23.10.2011)
- CodeIgniter: Рассылка email по выбранным группам зарегистрированных пользователей и списку незарегистрированных пользователей (02.03.2013)