За последние 24 часа нас посетили 18837 программистов и 1650 роботов. Сейчас ищут 1159 программистов ...

Шаблонный движок Pattern

Тема в разделе "Решения, алгоритмы", создана пользователем d-maxx, 18 июл 2007.

  1. d-maxx

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

    С нами с:
    21 май 2007
    Сообщения:
    5
    Симпатии:
    0
    Шаблонизатор изначально написан под PHP5, хотя есть версия и под PHP4, но она толком не отлажена. Предназначен он для проектов средних размеров, ориентирован в первую очередь на программиста, так как логика представления настраиватся исключительно через скрипты. Основной задачей ставилось создать движок, который бы позволял простую реализацию создания собственных функций по обработке шаблонов. Правда в мануал я не включил материала, который бы описывал процесс этого создания, ибо лень, да и нет смысла. Но если кто-то заинтересуется, моё мыло - d-maxx@mail.ru.

    скачать можно здесь: http://prr.stsland.ru/pattern_v1.0.rar

    Небольшой пример - вывод ленты новостей с помощью шаблонизатора:

    file: mysql.tpl

    HTML:
    1.   <head>
    2.     <title>mysql_demo</title>
    3.   </head>
    4.   <body>
    5.     <table>
    6.     <!--#loop _news-->
    7.       <tr>
    8.         <td><!--#mysql _date--></td>
    9.         <td><!--#mysql _content--></td>
    10.       </tr>
    11.     <!--#endloop _news-->
    12.     </table>
    13.   </body>
    14. </html>
    file: mysql.php

    PHP:
    1. <?php
    2.  
    3.   require "classes/class_pattern.php";
    4.   require "mysql_connect.php";
    5.  
    6.   $PAT_LOOP ["_news"] = "-+10"; // выведет десять последних элементов массива в
    7.                                 // обратном порядке
    8.   $PAT_MYSQL ["_date"] = "news.date"; // ссылка на столбец "date"
    9.   $PAT_MYSQL ["_content"] = "news.content"; // ссылка на столбец "content"
    10.  
    11.   $pat = new pattern;
    12.   $pat->mysql_database = $database;
    13.   $compile_file = $pat->compile ("mysql");
    14.   include $compile_file;
    15.  
    16. ?>
     
  2. dark-demon

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

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    ужос... что в шаблоне вывода забыли запросы к бд?
     
  3. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Если честно, то мало чего понятно. В шаблонах на PHP и то всё понятнее.
     
  4. d-maxx

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

    С нами с:
    21 май 2007
    Сообщения:
    5
    Симпатии:
    0
    запрос производится плагином, который обрабатывает этот шаблон - мы даём только ссылку на столбец.

    Хм, вы про что? Про пример? Или вообще про весь шаблонизатор? Ещё раз уточню, что логика представления настраиватся исключительно через скрипты.

    Качайте архив - там всё написано.
     
  5. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    И название странное какое-то :) Pattern в моём понимании - шаблон проектирования, а то, что в в данном случае называют шаблоном - template.

    Чем:
    Код (Text):
    1.     <!--#if isset_user-->
    2.       <a href = "index.php?mode=editprofile">Профиль</a>
    3.       <a href = "index.php?mode=logout">Выход</a>
    4.     <!--#else isset_user-->
    5.       <a href = "index.php?mode=register">Регистрация</a>
    6.       <a href = "index.php?mode=login">Вход</a>
    7.     <!--#endif isset_user-->
    лучше:
    Код (Text):
    1.     <?if(isset($user)):?>
    2.       <a href = "index.php?mode=editprofile">Профиль</a>
    3.       <a href = "index.php?mode=logout">Выход</a>
    4.     <?else:?>
    5.       <a href = "index.php?mode=register">Регистрация</a>
    6.       <a href = "index.php?mode=login">Вход</a>
    7.     <?endif?>
    ? Тоже хочу и про циклы спросить.
     
  6. Anonymous

    Anonymous Guest

    мну смеялсо и плакал, смеялсо и плакал...
     
  7. d-maxx

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

    С нами с:
    21 май 2007
    Сообщения:
    5
    Симпатии:
    0
    не обращай внимания, от балды назвал

    А чем
    HTML:
    1. {if $highlight_name}
    2. Welcome, <font color="{$fontColor}">{$name}!</font>
    3. {else}
    4. Welcome, {$name}!
    5. {/if}
    лучше
    HTML:
    1. <? if ($highlight_name): ?>
    2. Welcome, <font color="<? echo $fontColor ?>"><? echo $name ?>!</font>
    3. <? else: ?>
    4. Welcome, <? echo  $name ?>
    5. <? endif ?>
    (c) справка по Smarty

    Понимаешь, это шаблоны. Их основная цель - разганичивать HTML-код от скриптов обработки, чтобы код не смешивался. Если ты задаёшь такие вопросы, значит, с такой проблемой ты либо не сталкивался, либо не придавал особого значения. Благодаря этому PHP-код становится компактнее и программисту меньше головной боли (да и дизайнеру тоже.

    Э-э-э, может, я немного не так выразился, но аналогичный подход наблюдается в Sigma из библиотеки PEAR.
     
  8. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Ничем :)
    PHP:
    1. <?if($highlight_name):?>
    2. Welcome, <font color="<?=$fontColor?>"><?=$name?>!</font>
    3. <?else:?>
    4. Welcome, <?=$name?>
    5. <?endif?>
     
  9. d-maxx

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

    С нами с:
    21 май 2007
    Сообщения:
    5
    Симпатии:
    0
    ну... синонимы тоже вещь хорошая. Вкусы разные, каждому своё =)