За последние 24 часа нас посетил 18201 программист и 1700 роботов. Сейчас ищут 1876 программистов ...

Шаблонизатор

Тема в разделе "Решения, алгоритмы", создана пользователем Danilka, 30 апр 2008.

  1. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    покажи как вставляешь, постараемся найти где ошибка
     
  2. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Kos

    Добрый день.
    Вставляю как в стандарт:

    HTML:
    1.    <td align="center" class="pics" width="480" height="60">
    2.         <script type="text/javascript"><!--
    3.            google_ad_client = "pub-5984763834310977";
    4.            /* 468x60, создано 01.11.09 */
    5.            google_ad_slot = "0364889006";
    6.            google_ad_width = 468;
    7.            google_ad_height = 60;
    8.            //-->
    9.             </script>
    10.             <script type="text/javascript"
    11.            src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    12.             </script>
    13.         </td>
    14.  
     
  3. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    а причем тут шаблонизатор phparser?


    попробуй удалить <!-- и /-->
     
  4. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Кос

    Только не смейся , я думал эти теги нельзя удалять......
    Чуть сдвинулся дизайн, но реклам попёр......
    Спасибо, а за такие "умные" вопросы с форума не попрут?

    Я всего полгода как начал вебидь......
     
  5. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Я и вставляю этот код в шаблон хидера скрипта....
    Я только начал разбираться с phparser, мануал очень короткий а прямо из класса я пока читать всё не умею.
    Начал прикручивать мультиязык через
    PHP:
    1. session_start();                 #привязываем сессию к языку
    2.  
    3. if(isSet($_GET['lang']))
    4. {
    5. $lang = $_GET['lang'];
    6.  
    7. $_SESSION['lang'] = $lang;       #регистрируем сессию и ставим куку
    Столкнулся с тем , что конструкции типа
    HTML:
    1. <img src="search-<?php echo ($lang);?>.png">
    не работают...
    Языковой файл по языку инклюдится правильно, а как вызвать в шаблон
    HTML:
    1. value="<?php echo lang_search;?>"
    не понимаю...
    Наверное абсолютно тупые проблемы и вопросы - но я остановился и киплю мозгами......
    Много почитал про шаблонизаторы, решил остановиться на phparser, короткий и быстрый...
    Надеюсь освоить - очень понравился..........
     
  6. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    не попрут. Мы все с чего-то начинали

    1) то, что между этими (<!-- -->) тегами шаблонизатор вырезает
    2) PHP-код шаблонизатор тоже вырезает

    Если у тебя в шаблоне
    HTML:
    1. <img src="search-<?php echo ($lang);?>.png">
    то после обрезки тегов будет такое
    HTML:
    1. <img src="search-.png">
    зачем тебе в шаблоне вызывать пых? пропадает же весь смысл его использования.
    Делай так, если у тебя теги [ ]:

    PHP:
    1.  
    2. $tpl->v('lang', $lang);
    3.  
    HTML:
    1. <img src="search-[lang].png">
     
  7. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Кос

    Спасибо..... Полегчало....
    Значит любую предобъявленную переменную можно просто передать в шаблон?
    То есть спокойно в самом файле выполнить любой php код и результат передать шаблону?
     
  8. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    да. Это и называется отделение логики представления от бизнес-логики.
     
  9. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Кос

    Если ещё не задолбал, хочу спросить ещё одну вещь:

    при установке сессии подгружается языковой фаил формата :
    PHP:
    1. # Login #
    2. define('lang_login_head', 'Вход');
    в самом шаблоне вызывается метка:
    HTML:
    1. value="<?php echo lang_login_head;?>"
    из подгруженного файла....

    Как это перестроить под шаблон, обработать массивом и передать на подстановку(прости наверное излагаю невнятно)?
     
  10. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Кос

    Заранее извини меня пожалуйста за кучу вопросов..........
    Просто подключить файл на обработку для меня проблема, может нужен другой формат или вообще другой способ?
    Дальше буду копать сам до полусмерти......
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    я предлагаю переделать формат хранения языков.
    PHP:
    1. <?php
    2. $lang = array(
    3.     'login_head' => 'Вход',
    4.     'logout_head' => 'Выход',
    5.     'name' => 'Имя пользователя',
    6.     'pass' => 'Пароль'
    7. );
    8.  
    9. $tpl->arr_p($lang, 'L_');
    10.  
    11.  
    HTML:
    1. <div class="info">[L_login_head]</div>
    2. [L_name]:<br />
    3. <input type="text" name="name" /><br /><br />
    4.  
    5. [L_pass]:<br />
    6. <input type="password" name="name" />
     
  12. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Koc

    Спасибо за помощь...
    Я так понял , что :
    PHP:
    1. $lang = array(
    2.       'login_head' => 'Вход',
    3.       'logout_head' => 'Выход',
    4.       'name' => 'Имя пользователя',
    5.       'pass' => 'Пароль'
    6.      );
    это формат языкового файла ....
    PHP:
    1. $tpl->arr_p($lang, 'L_');
    а это обработка в файле header.php для header.tpl ?
     
  13. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    выходит что так

     
  14. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Koc

    Спасибо волшебник за терпение.....
    Слава богу про массив с префиксами я прочитал в мануале сам, но лучше уточнить....
    Пошёл пробовать перекраивать языковые файлы и метки в шаблонах...
    Результаты доложу.........
    Похоже я совсем не пожалею, что начал учить Phparser !!!

    Danilka
    Кстати , а мануала подлиннее у автора уже часом нет? :D :D :D
     
  15. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    yoyo-moyo
    аватарку на фото меняем или удаляем
     
  16. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Hight
    Понял, сегодня поменяю...
     
  17. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Всем добрый вечер.

    Помогите пожалуйста с контактной формой...

    PHP:
    1.  
    2. <?php
    3. include("header.php");
    4. include("scripts/functions.php");
    5.  
    6. [email=$e_mail='vasja@vasja.com]$e_mail='vasja@vasja.com[/email]';
    7. $post= $_POST['name'] && $_POST['text'] && $_SESSION['captcha']==$_REQUEST['code'];
    8. $message="От: $name <br>Обратный адрес: $email <br>Текст: $text ";
    9. mail("$e_mail","Письмо с сервера ", "$message","From: $name<$email>\nContent-Type: text/html; charset=utf-8\nContent-Transfer-Encoding: 8bit");
    10.  
    11.                                
    12. $tpl = new phparser( 'themes/default/tpl' , 'cache' );
    13. $tpl -> load( 'contact' );
    14. $tpl->  v('post', $post);
    15.  
    16. $tpl -> parse();                 #выводим шаблон
    17.  
    18.  
    19. include( 'right.php' );          #правая колонка
    20. include( 'footer.php' );         #футер
    21. ?>
    22.  
    Шаблон:
    HTML:
    1.  
    2. [if post]
    3.               <!--Подтверждение отправки-->
    4. [else]
    5.               <!--Форма отправки-->
    6. [/if]
    7.  
    Прямо при входе в форму кидает пустое письмо, а по заполнении - нормальное письмо с содержимым...
    Где-то прокосил, а где не понимаю.....

    Заранее спасибо.
     
  18. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    8я строка.
     
  19. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    В смысле что с ней не так?
    Не передана в шаблон?
    Я же ещё маленький- с ходу не схватываю :D
     
  20. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Она у тебя выполняется независимо от того ввели ли что-то пользователи.
    А должна быть проверка.
     
  21. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Можно пожалуйста код проверки.....
    Я даже не соображу где надо проверять - в файле или шаблоне....
     
  22. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Всё зробил прямо в файле проверку...
    Сорри за тупость, спасибо за подсказку.... :lol:
     
  23. yoyo-moyo

    yoyo-moyo Активный пользователь

    С нами с:
    11 ноя 2009
    Сообщения:
    57
    Симпатии:
    0
    Адрес:
    Latvija
    Всем добрый день.

    Переработал все контактные и регистрационные формы и упёрся в статистику...
    Промучился несколько часов и решил просить помощи..
    Помогите пожалуйста составить пример обработки данных из базы:

    Что-нибудь типа:
    из 1-ой таблицы вывести список колонок: $a и $b
    для сравнения со 2-ой таблицей по наличию $a
    и выведения совпадений в шаблон таблицей или списком
    a b
    a1 b1
    с накоплением повторов и т.д.

    Хотя-бы общую схему обработки данных из базы для .php файла и шаблона......

    Заранее спасибо. :lol:
     
  24. windburn

    windburn Активный пользователь

    С нами с:
    22 дек 2009
    Сообщения:
    6
    Симпатии:
    0
    Вот, обычный элементарный шаблонизатор...

    template.class.php

    PHP:
    1. <?php
    2. class Template{
    3.     private $templateText;
    4.    
    5.     function Template($filename){
    6.         $this->templateText = file_get_contents($filename);
    7.     }
    8.    
    9.     function addValue($variable, $content){
    10.         $this->templateText = str_replace("%$variable%", $content, $this->templateText);
    11.     }
    12.    
    13.     function display(){
    14.         eval("?>".$this->templateText."<?");
    15.     }
    16. }
    index.php
    PHP:
    1. <?php
    2. include("include/template.class.php");
    3.  
    4. $template = new Template("include/templates/test.html");
    5. $template->addValue("NAME", "Vladimir");
    6. $template->display();
    7. ?>
    test.html
    HTML:
    1. Hello, %NAME%!
    Можно и полноценный php код вставлять в переменную, он будет выполняться за счет eval()
     
  25. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    windburn
    в жопу eval..