В следващите няколко страници ще ви покажа как можем да реализираме наш си bbCode като изпозлваме Smarty. Ще съсдадем плугин за темплейт системата, който ще обработава стринг съдържащ таговете от нашият bbcode. В кода, който ще видите в тази статия съм дал пример как да си направим код за линкове, снимки, като в последствие ще добавим и изпозлването на "емот икони".
Как се пишат плугини за Smarty
Тъй като темплейта е с отворен код и всеки може да се включи в доразработването, се препоръчва да пишете плугини по определен начин, не че не можете да пишете както си искате, но ако решите да изпратите вашият плугин на разработчиците на Smarty които да го включат в следващата версия ще сеналожи да го преработите. Затова най-добре спазвайте изискванията, които са следните:
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?php
/**
* Smarty ИМЕ НА ПЛУГИНА modifier plugin
*
* Type: modifier
* Name: ИМЕ НА ПЛУГИНА
* Purpose: какво прави плугина
* version: 0.2 -- версия :)
* @param string -- тип на параметрите
* @return string -- тип на резултата
*/
function smarty_modifier_ИМЕ_НА_ПЛУГИНА($string)
{
return ФУНКЦИЯ($string);
}
?> |
Така написан плугина го поставяме в директорията libs/plugin на пакета Smarty, който сме инсталирали. За да ползваме в темплейта си този плугин ние го извиква ме по следния начин: {$promenliva|ИМЕ_НА_ПЛУГИНА}. Ако плугина ви приема и други параметри те се подават като след името на плугина се отделят с ":". Ето един примерен плугин, който приема повече от един параметри.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <?php
/**
* Smarty substr modifier plugin by PureEvil
*
* Type: modifier
* Name: substr
* Purpose: using substr function
* version: 0.1
* @param string, int, int
* @return string
*/
function smarty_modifier_substr($string, $start, $end = 0)
{
if ( strlen($string) < $start) {
$result = $string;
}
else {
(!$end ? $result = substr($string, $start) : $result = substr($string, $start, $end) );
}
return $result;
}
?> |
Така съсздадения плугин може да бъде приложен в темплайта към дадена променлива по следния начин: {$promenliva|substr:0:100} - така написано текста от променливата ще ни бъде отпечатан от 0 до 100 символ. Но нека вече преминем към създаването на bbCode-то.