ФорумПрограммированиеПыхнуть хотите?Готовые решения → DudeTpl 0.2.2 Beta

DudeTpl 0.2.2 Beta

  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 19 апреля 2010 г. 10:42, спустя 3 часа 30 минут 12 секунд

    как вам это?

    class DudeTplCompiler_Include extends DudeTplCompiler_Default {

    public $patterns = array('inc');

    public function compile($pattern, $tag) {

    $template = trim(mb_strstr($tag[1]," "));

    $src = $this->engine->fetch($template);

    return $src;
    }
    }

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 10:44, спустя 2 минуты 8 секунд

    soulgarden, мне - не о чем, ибо я не вижу смысла в отдельном компиляторе для "инклуда" шаблонов :)

    к тому же у тебя будет происходить КОМПИЛЯЦИЯ И ВЫЗОВ влоенного шаблона ТОЛЬКО ПРИ КОМПИЛЯЦИИ ;)

    а не при каждой генерации)
    Сапожник без сапог
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 19 апреля 2010 г. 11:22, спустя 37 минут 59 секунд

    сделал вот так

    class DudeTplCompiler_Include extends DudeTplCompiler_Default {

    public $patterns = array('inc');

    public function compile($pattern, $tag) {

    $template = trim(mb_strstr($tag[1]," "));

    $this->engine->fetch($template);

    $src = '<?php require (\''.$this->engine->_compile_dir.'/'.md5($template.'tpl').'\') ?>';

    return $src;
    }
    }


  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 19 апреля 2010 г. 13:19, спустя 1 час 57 минут 2 секунды

    soulgarden, чушь
    Сапожник без сапог
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz 25 апреля 2010 г. 0:38, спустя 5 дней 11 часов 18 минут


    сделал вот так

    class DudeTplCompiler_Include extends DudeTplCompiler_Default {

    public $patterns = array('inc');

    public function compile($pattern, $tag) {

    $template = trim(mb_strstr($tag[1]," "));

    $this->engine->fetch($template);

    $src = '<?php require (\''.$this->engine->_compile_dir.'/'.md5($template.'tpl').'\') ?>';

    return $src;
    }
    }




    А не проще ли:

    $tpl = new DudeTpl(true);

    $tpl->add_function("inc","inc");

    function inc(DudeTpl $inst, $filename)
    {
    $last_tpl = $inst->last_tpl;

    $inst->show($filename);
    $inst->last_tpl = $last_tpl;
    }
    Спустя 209 сек.
    P.S. Дуд, ты за сервер забыл заплатить? :)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 апреля 2010 г. 2:53, спустя 2 часа 15 минут 2 секунды

    felix90,
    P.S. Дуд, ты за сервер забыл заплатить? :)

    в пн поеду ось менять, сейчас он онлайн, но работает на лив версии убунты с флешки :)

    винты тестировал, один наебнулся
    Сапожник без сапог
  • felix90

    Сообщения: 191 Репутация: N Группа: Адекваты

    Spritz 25 апреля 2010 г. 3:51, спустя 58 минут 17 секунд


    felix90,
    P.S. Дуд, ты за сервер забыл заплатить? :)

    в пн поеду ось менять, сейчас он онлайн, но работает на лив версии убунты с флешки :)

    винты тестировал, один наебнулся

    Так выложи здесь свою шаблонизатор обновленный. Хотел бы выспользоваться им :)
    Спустя 18 сек.


    felix90,
    P.S. Дуд, ты за сервер забыл заплатить? :)

    в пн поеду ось менять, сейчас он онлайн, но работает на лив версии убунты с флешки :)

    винты тестировал, один наебнулся

    Так выложи здесь свою шаблонизатор обновленный. Хотел бы выспользоваться им :)

    *воспользоваться
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 25 апреля 2010 г. 4:07, спустя 15 минут 47 секунд

    felix90, перенес тебя в группу адекваты
    Спустя 138 сек.
    дополнил шабонизатор вот такой вот простейшей функцией, которая позволяет использовать этот простой, но мощный имхо "хак" хоть где , например в block function'сах

    	public static function replace($tpl, $data)
    {
    if(preg_match_all("#%(.+?)%#is", $tpl, $matches, PREG_SET_ORDER))
    {
    foreach($matches as $m)
    {
    $func = "";
    if(substr($m[1], 0, 2) == "::")
    {
    $func = "rawurlencode";
    $m[1] = substr($m[1], 2);
    }
    elseif(substr($m[1], 0, 1) == ":")
    {
    $func = "htmlspecialchars";
    $m[1] = substr($m[1], 1);
    }

    $val = $data;
    foreach(explode(".", $m[1]) as $x)
    {
    $val = $val[$x];
    }

    $tpl = str_replace($m[0], $func ? $func($val) : $val, $tpl);
    }
    }

    return $tpl;
    }


    соответственно сделал у себя в двиге двойной обработчик меню - fucntion, block function, теперь можно верстальщика прогибать под верстку меню, а можно верстку прогибать под верстальщика :)

    осторожно, пример на смарти
    						{content_menu_list id="1" title="Главное меню"}
    <a href="%:href%" title="%:title%"%meta%%class%>%:anchor%</a>
    {/content_menu_list}

    это меню под версталу и

    {content_menu_list id="1" title="Главное меню"}

    этоверстальщик под меню :)
    Сапожник без сапог
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 28 апреля 2010 г. 13:53, спустя 3 дня 9 часов 46 минут

    как сделать в шаблоне вот такое?
    [$price += $good.price]
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 28 апреля 2010 г. 14:03, спустя 9 минут 38 секунд


    как сделать в шаблоне вот такое?
    [$price += $good.price]
    в DudeTpl не припомню можно ли такое, он задумывался как простой с минимумом инструкций. а вот в моем другом делалось это так
    {=newprice=$price + $good.price}

    попробуй, может тут сработает, тольк оскобки на квадратные замени)
    Сапожник без сапог
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 28 апреля 2010 г. 14:07, спустя 3 минуты 51 секунду

    не выходит
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 28 апреля 2010 г. 14:19, спустя 12 минут 34 секунды


    не выходит
    видимо не судьба :)
    Сапожник без сапог
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 28 апреля 2010 г. 14:23, спустя 3 минуты 13 секунд

    бляяяяяяяяяяяяяяяяяяяя
  • soul

    Сообщения: 790 Репутация: N Группа: Кто попало

    Spritz 28 апреля 2010 г. 16:06, спустя 1 час 42 минуты 56 секунд


    class DudeTplCompiler_P extends DudeTplCompiler_Default {

    public $patterns = array('=');

    public function compile($pattern, $tag) {

    $arr = explode(' ',(trim(ltrim($tag[1],"="))));

    $src = '<?php '.$this->parse_vars($arr[0]).$arr[1].$this->parse_vars($arr[2]).'; ?>';

    return $src;
    }
    }
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 28 апреля 2010 г. 16:19, спустя 13 минут 42 секунды

    soulgarden, молодец! :)

    надо готовые решения собирать)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!