Хитрости
Решил поведать о своих приключениях при разработки движка на базе фреймверка CodeIgniter.
Опишу вкратце что будет здесь описано:
1) модификация класса CI_Parser. Добавление возможности пропускать целые блоки в шаблоне просто вырезая их. Все что нужно -- передать в место массива FALSE.
1.1) То что было еще в 1.6.1 и то, о чем открыто рассказывали теперь в хелпе про класс парсера и View.
2) что не додумали авторы плагина Капчи в CodeIgniter?
3) как переопределить адрес папки views.
...для начала, хватит
1) Ну тут идея витала в воздухе... Модифицировать базовый парсер так, что бы он позволял выключать целые блоки. Да, можно просто вписать php-код в шаблон страницы и уже там определить судьбу блока. Но как вариант, можно и модифицировать базовый класс фреймверка. Итак... Делаем все в хорошем стиле и по правилам -- файл ложим в папку application/libraries и именуем его MY_Parser.php (или какой предлог определен у вас в конфиге $config['subclass_prefix']). Напомню, что нужно это дабы ядрой фреймверка подхватила вашу надстройку и использовала её как "родную" библиотеку. Загрузка библиотеки производиться все так же через $this->load->library('parser') и обращаться к нему соответственно по старинке -- $this->parser->parse('microsoft_main_template', $data);.
PHP:/** * Надстройка класса парсера для пропуска блоков в шаблоне * * @version 1.2 * @author Artyuh Anton * @copyright 2008 */ class MY_Parser extends CI_Parser{ function MY_Parser(){ //parent::CI_Parser(); // у базового CI_Parser нет конструктора -- вызывать нечего. } function _parse_pair ($variable, $data, $string){ if ((FALSE === ($match = $this->_match_pair($string, $variable)))) { return $string; } $str = ''; foreach ($data as $row) { if ( is_array($row)){ $temp = $match['1']; foreach ($row as $key => $val) { if (! is_array($val)) { $temp = $this->_parse_single($key, $val, $temp); } else { $temp = $this->_parse_pair($key, $val, $temp); } } } else{ $temp = ''; } $str .= $temp; } return str_replace($match['0'], $str, $string); } function _parse_single ($key, $val, $string) { $m = $this->_match_pair($string, $key); if ($m) { return str_replace($m[0], '', $string); } else { return str_replace($this->l_delim . $key . $this->r_delim, $val, $string); } }}
1.1) Еще в версии 1.6.1, ели посмотреть на исходный код CI_Parser, то можно увидеть третий параметр у основной функции pase. Он завётся $return и по умолчанию имеет значение false. Таже история и с $this->load->view. Этот параметр позволяет обработать шаблон без вывода в брайзер, а вернуть его в виде текста. Почему об этом стало известно в учебнике только в версии 1.7.0 не понятно.
2) что не додумали авторы плагина Капчи в CodeIgniter?
Я дописал в этот плагин возможность добавить id изображению и теперь й меня возвращается структура -- с основном кодом и ещё одним полем, где записывается только адрес картинки для кнопочки Обновить капчу.
3) Когда возник вопрос произвести перестановку папочек в проекте, дабы вынести view за пределы application и использовать шаблоны от туда, возник логичный вопрос как заставить фремверк искать папку view другом месте. Поиски были не долгими: Класс CI_Loader. В конструкторе прописывается переменная:
PHP:$this->_ci_view_path = APPPATH.'views/';
Вот её-то и нужно переопределить. ТОлкьо не стоит править саму библиотеку -- это плохой стиль. Авторы позаботились об таких случаях. Наследуем класс и в новом конструкторе, не забыв вызвать конструктор предка переопределяем значение переменной и все.
PHP:/** * @author Артюх Антон * @copyright 2008 */class MY_Loader extends CI_Loader{ function MY_Loader(){ parent::CI_Loader(); $this->_ci_view_path = pathinfo(FCPATH, PATHINFO_DIRNAME).'/'.'views/'; //здесь я подразумеваю, что папка views //нужна именно в корне сайта, рядом с index.php }}
P.S. Это моя первая такая запись, так что прошу не пинать... И... комментируем...
Вам это будет интересно!
Последние новости
Слово
Назови человека свиньей, и он захрюкает. Пословица Проживая данную нам жизнь, мы все время находимся в гуще энергий, как положительных, так и отрицательных. По этическим нормам слово обладает определенной силой, следовательно, когда мы клевещем на человека, судим, обзываем, мы «де...Читать далее »
ЭГРЕГОР
Энергия эгрегора – квантовая структура, которая сформирована мыслями, знаниями и чувствами всего человечества – бывшего, настоящего и будущего. Эгрегор – это квантово лептонная скоррелированная структура, рожденная похожими мы...Читать далее »
Как открыть свои чакры
Открытие чакр увеличивает поток энергии в теле и вокруг него и, следовательно, улучшает наше физическое, ментальное и эмоциональное здоровье. Представьте себе каждую чакру по очереди. Они вращаются и становятся больше в размере. Начинайте с 1 – й чакры (пусть они вращаются в любую сторону, обычно они вращаются в разные). В то же ...Читать далее »
Смерть или новая жизнь
Из разговора двух зародышей в утробе матери: – Как ты думаешь, есть ли жизнь после родов? – Не знаю, оттуда еще никто не возвращался… Сравнительно недавно появились сенсационные сообщения доктора Раймонда А. Моуди о том, что ученые зарегистрировали фа...Читать далее »
Чакры
Чакры являются основными энергетическими органами биополя. Они контролируют нашу деятельность во внешнем мире, а каждая из чакр несет ответственность за определенную сферу деятельности. Основное предназначение их заключается в том, что они несут ответственность за поддержание энергообмена живого организма с окружающей средой через специальные каналы связи. Таким образом, при нарушении процесса энергообмена у нас возникают болезни и проблемы...Читать далее »
Три колонны космоса
Показания: нарушение обменных процессов, снижение иммунитета, обновление сил. Методика исполнения. Средний и сердечный пальцы правой руки кладут на аналогичные пальцы левой руки. Мизинец левой руки кладут возле основания тыльной поверхности среднего и безымянного пальцев правой руки, затем все фиксируется мизинцем правой руки. Кон...Читать далее »
Заключение
Лучше зажечь свечу, чем проклинать сгущающуюся тьму. Дзенское изречение Вот и написана книга. Мне хочется верить, что вам она обязательно поможет в познании себя, утверждении своего «Я», определении своего места во Вселенной. На ум приходит китайская пословица: «Если не менять направление, мы наверняка достигнем того, к чему идем». А мы идем к Свету, Добру и Счастью. Мы ...Читать далее »
