Хитрости





Решил поведать о своих приключениях при разработки движка на базе фреймверка 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(FCPATHPATHINFO_DIRNAME).'/'.'views/'//здесь я подразумеваю, что папка views //нужна именно в корне сайта, рядом с index.php    }}

P.S. Это моя первая такая запись, так что прошу не пинать... И... комментируем...

















Вам это будет интересно!

  • SVN hook Блокируем коммиты без комментариев
  • Данные названия являются вымыслом, любые совпадения случайны!!!
  • Шифры простой замены
  • Бездарный навет
  • Тренинги с подростками: актуальные темы и техники работы
  • Последние новости

    Слово

    Назови человека свиньей, и он захрюкает. Пословица Проживая данную нам жизнь, мы все время находимся в гуще энергий, как положительных, так и отрицательных. По этическим нормам слово обладает определенной силой, следовательно, когда мы клевещем на человека, судим, обзываем, мы «де...
    Читать далее »

    ЭГРЕГОР

    Энергия эгрегора – квантовая структура, которая сформирована мыслями, знаниями и чувствами всего человечества – бывшего, настоящего и будущего. Эгрегор – это квантово лептонная скоррелированная структура, рожденная похожими мы...
    Читать далее »

    Как открыть свои чакры

    Открытие чакр увеличивает поток энергии в теле и вокруг него и, следовательно, улучшает наше физическое, ментальное и эмоциональное здоровье. Представьте себе каждую чакру по очереди. Они вращаются и становятся больше в размере. Начинайте с 1 – й чакры (пусть они вращаются в любую сторону, обычно они вращаются в разные). В то же ...
    Читать далее »

    Смерть или новая жизнь

    Из разговора двух зародышей в утробе матери: – Как ты думаешь, есть ли жизнь после родов? – Не знаю, оттуда еще никто не возвращался… Сравнительно недавно появились сенсационные сообщения доктора Раймонда А. Моуди о том, что ученые зарегистрировали фа...
    Читать далее »

    Чакры

    Чакры являются основными энергетическими органами биополя. Они контролируют нашу деятельность во внешнем мире, а каждая из чакр несет ответственность за определенную сферу деятельности. Основное предназначение их заключается в том, что они несут ответственность за поддержание энергообмена живого организма с окружающей средой через специальные каналы связи. Таким образом, при нарушении процесса энергообмена у нас возникают болезни и проблемы...
    Читать далее »

    Три колонны космоса

    Показания: нарушение обменных процессов, снижение иммунитета, обновление сил. Методика исполнения. Средний и сердечный пальцы правой руки кладут на аналогичные пальцы левой руки. Мизинец левой руки кладут возле основания тыльной поверхности среднего и безымянного пальцев правой руки, затем все фиксируется мизинцем правой руки. Кон...
    Читать далее »

    Заключение

    Лучше зажечь свечу, чем проклинать сгущающуюся тьму. Дзенское изречение Вот и написана книга. Мне хочется верить, что вам она обязательно поможет в познании себя, утверждении своего «Я», определении своего места во Вселенной. На ум приходит китайская пословица: «Если не менять направление, мы наверняка достигнем того, к чему идем». А мы идем к Свету, Добру и Счастью. Мы ...
    Читать далее »