![]() |
Статьи | Новости | Контакты | |||||||||
|
||||||||||||
|
||||||||||||
21.10.2008 |
![]() |
Как определить, что наиболее важно в разработке приложений. Это очень просто — достаточно один раз связаться с заказчиком и выслушать его требования. И вы прийдете к неизменному выводу, что наиболее важно для вас — время. Именно оно определяет средства и способы проектирования. Именно скорость разработки интересует заказчика в первую очередь. Ведь еще толком не будет ни задания, ни команды, ни даже бюджета, но уже будут важны (да, именно они) сроки. По этой простой причине стало столь популярным использование шаблонных механизмов и разнообразных, ускоряющих разработку IDE. Однако само по себе подключение Smarty к вашей задаче или декларирование того, что подобный класс используется при проектировании, ничего не означает. Важно понимать тонкости даже самых простых методов, которые есть в системе, и эффективно их использовать. В этой статье пойдет речь именно про "альфу и омегу" этой системы шаблонов, функции для пользователя
Назначение описанных далее сегодня функций в принципе настолько тривиально, что опытный программист даже не задумывается про их реализацию. Обычно все делается, как и делалось до этого сто раз, оно же работает, так чего же еще можно хотеть. Однако, как показывает практика, использование тривиальных решений, которые понятны всем, а не только вам, — это свидетельство достижения мастерства и качества реализации. Ведь отдавать opensource-систему в руки заказчика, надеясь на то, что больше никто не поймет "что там написано", несколько неэтично само по себе. Мало того, представьте себе, что через год или два вам придется делать дополнения или изменения в этот код. Именно по этой причине даже в решениях, рассчитанных на себя, стоит применять все те же тривиальные методы, про которые и пойдет речь.
{html_image file="http://ya.ru/logo.png" alt="Вечно этот яндекс меняет логотипы!" href="http://ya.ru/" border=0}
{html_image file="http://ya.ru/logo.png" }
Этот код покажет следующий результат, для удобства рядом с картинками расположены и их html-представления.
![]() |
html_image в шаблоне и в браузере |
Как видите, мы не указывали размеров, Smarty их "сам" взял из закачанных файлов. Кроме того, обратите внимание на вставленную интерпретатором шаблона гиперссылку, где идет речь о первой строке примера. Вероятно, такое представление картинок в шаблоне все же несколько организованней, хотя при этом и менее верно в плане SEO, чем простое <a href=...><img src=...>.
Программная часть
<?php
require_once( "./smarty/Smarty.class.php");
require_once( "./classes/db.class.php");
$smarty = new Smarty;
$smarty->assign( "config_mysql_base", $config_mysql_base );
$res = $mdb->query( "SHOW TABLES " );
while ( $arr_q = mysql_fetch_array( $res ) )
{
$table = $arr_smarty[] = $arr_q[0];
$o = $mdb->query_obj( "SELECT count(*) c FROM $table" );
$arr_smarty[] = $o->c;
}
$smarty->assign( "arr", $arr_smarty );
$smarty->display( "index.tpl" );
?>
Небольшие комментарии к коду. Вначале выполняется запрос к базе данных о составе таблиц. Далее в массив $arr_smarty заносятся имя таблицы и количество записей в ней. Шаблон должен всего лишь вывести таблицу. При этом указывается, что в ней две колонки.
Шаблон
{html_table loop=$arr cols="Таблица,записей" caption="БД $config_mysql_base"}
В итоге одна строка позволяет показать всю таблицу. Такая простота шаблона позволяет очень сильно упростить жизнь дизайнеру, поскольку будет много меньше возможностей ошибиться, использую такую организацию табличных данных, чем при традиционной разметке в теге <table.... Вот что получится при запуске указанного выше шаблона:
![]() |
html_table показывает состав базы WP 2.6.2 |
Функция html_table позволяет варьировать внешний вид в зависимости от необходимости пользователей. Например, если вы хотите, чтобы строки вашей таблицы были выделены различным фоном, можно задать параметр tr_attr, значением которого назначить массив.
Программная часть
...
$smarty->assign( "tr_attr", array( "bgcolor=#eeeeee","bgcolor=#dddddd" ) );
...
Шаблон
{html_table
loop=$arr cols="Таблица,записей" caption="БД $config_mysql_base"
tr_attr="$tr_attr" table_attr="border=1 style='font-size:11;font-family:verdana;'"
}
При этом строки таблицы будут выделены серым цветом различной насыщенности. Единственным недостатком метода раскраски таблиц, которые выводятся с помощью пользовательской функции html_table, является необходимость менять цвета строк в программном коде. Иначе говоря, программист должен позаботиться, чтобы была возможность настройки таких параметров в конфигурационном файле или еще каким-либо способом. На следующем рисунке показан результат выполнения этого шаблона.
![]() |
html_table с оформлением |
{mailto subject="По поводу следующей статьи:" address="hostinfo@hostinfo.ru" encode="javascript"}
Конечно, добиться полной защиты от целенаправленного сбора адресов, таким образом, будет сложно. Однако полностью открытый е-майл-адрес может создать пользователям гораздо больше проблем, чем тот, что защищен даже самым несложным кодированием.
![]() |
Код, созданный mailto |
Программная часть
<?php
require_once( "./smarty/Smarty.class.php");
$smarty = new Smarty;
for ( $i=1 ; $i<=12 ; $i++)
$arr[] = $i;
$smarty->assign( "arr", $arr );
$smarty->display( "index.tpl" );
?>
Шаблон
{assign var=perc value=12}
{assign var=summ value=1000}
Расчет процентов с помесячной капитализацией %<br>
Сумма вклада:{$summ}
Проценты за год:{$perc}
<hr>
{section loop=$arr name=month }
{math equation="y+y*(x/(12*100))" x=$perc y=$summ assign=summ}
{math equation="y*(x/(12*100))" x=$perc y=$summ assign=perc_m}
Месяц:{$arr[month]} Проценты:{$perc_m|string_format:"%.2f"} Сумма:{$summ|string_format:"%.2f"}<br>
{/section}
Следует отметить, что функция math достаточно ресурсоемкая. Причиной тому является внутренняя реализация, которая использует интерпретатор php-кода в строковом оформлении (eval). Поэтому пользоваться ею следует действительно в тех случаях, когда нет иного выхода. И гораздо лучшим выбором по критерию использования ресурсов системы может стать перенос подобных расчетов в php-код.
Скоро на сайте
-
Wordpress
Серия статей о плагинах к движку WordPrress -
AJAX
Проекты и продукты, ориентированные на AJAX -
Новые сервисы Google
Обзор новых сервисов Google
Copyright © 2003—2022 Все права защищены
При использовании материалов сайта ссылка на hostinfo.ru обязательна