Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > [templates] Разделение шаблона на 2 части


Автор: xoslv 16.1.2007, 14:29
У меня есть шаблон:
Код

<table width="100%"  border="0" cellspacing="0" cellpadding="0">
<!--// Begin Names of colums /-->
  <tr>
    <th scope="col" class="sp_td">{name}</th>
    <th scope="col" class="sp_td">{sname}</th>
    <th scope="col" class="sp_td">{per kod}</th>
    <th scope="col" class="sp_td">{mail}</th>
    <th scope="col" class="sp_td">{last login}</th>
    <th scope="col" class="sp_td">{events}</th>
  </tr>
<!--// End of colums names //-->
<!--// Begin of userlist //-->
  <tr>
    <td class="sp_td">&nbsp;</td>
    <td class="sp_td">&nbsp;</td>
    <td class="sp_td">&nbsp;</td>
    <td class="sp_td">&nbsp;</td>
    <td class="sp_td">&nbsp;</td>
    <td class="sp_td">&nbsp;</td>
  </tr>
 <!--// End of userlist //-->
</table>

Каким образом можно сделать, чтобы PHP в одной функции использовал первую часть шаблона, а в другой функции фторую половину!?
 smile  smile 
Зарание спасибо!


M
Mal Hack
Название темы должно отражать ее суть
Для подобной тематике топике существует форум "PHP: Тексты"

Автор: SamDark 16.1.2007, 16:08
xoslv, 
Проще и лучше всего разделить на два шаблона.

Автор: Mal Hack 16.1.2007, 16:09
Я бы разделил на два шаблона. А еще лучше вторую часть выкинуть вообще.
Т.е. что-то вроде:
Код
<?php

function get_template( $data )
{
    return <<<EOF
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col" class="sp_td">{$data['name']}</th>
    <th scope="col" class="sp_td">{$data['sname']}</th>
    <th scope="col" class="sp_td">{$data['per_kod']}</th>
    <th scope="col" class="sp_td">{$data['mail']}</th>
    <th scope="col" class="sp_td">{$data['last_login']}</th>
    <th scope="col" class="sp_td">{$data['events']}</th>
  </tr>
</table>
EOF;
}

$data = array("name" => "" , "sname" => "" , "pre_cod" => "" , "last_login" => "" , "mail" => "" , "events" => "" ,)

if ( est infa o polzovatele )
{
    $data = poluchaem_infu_naprimer_iz_bd();
    print get_template( $data );
}
else
{    print get_template( $data );    }


?>

Все получается просто и быстро, особенно, если при получении инфы из базы, имена полей базы совпадают с индексами массива

Автор: alexu_id 18.1.2007, 09:15
использовать регулярные выражения для того что бы после загрузки выделить части шаблона


Код

//пример для выделения первой части
$template = " ... "

$pattern = "/<!--\/\/ Begin Names of colums \/-->.*?<!--\/\/ Begin Names of colums \/-->/sim"; 
preg_match( $pattern, $template, $matches );

if( count( $matches ) ){

   // вызов функции с передачей контента...
   $replacement = doSomeThing( $matches[0] );

    // замена оригинального текста обработанным
    preg_replace($pattern, $replacement, $template);
}

// аналогично и для второй части...


эффективней будет разбить на два шаблона

Автор: Mal Hack 18.1.2007, 16:41
И зачем так нагружать скрипт, когда есть вариант проще и логичнее понятнее (см. выше)?

Автор: SamDark 19.1.2007, 10:09
Если хочется совсем красиво и без замедления - использовать http://smarty.php.net/. Но на его изучения может уйти неделя-другая.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)