Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: tpl логика и реализация.

Сообщения:  [1-10]   [11-20] 

 
 автор: nikita2206   (01.07.2009 в 15:32)   письмо автору
 
   для: Рома   (30.06.2009 в 22:21)
 

нас много

  Ответить  
 
 автор: werd   (01.07.2009 в 03:41)   письмо автору
 
   для: nikita2206   (29.06.2009 в 18:16)
 

В конце сделал так


templ_creator.php



<?
class templ{

    public 
$tr_found 0;
    public 
$replace;
    public 
$tpl;
    public 
$result;

    private 
$top;
    private 
$down;
    private 
$constructor;
    private 
$center;

    public function 
__construct($tplDir,$tplFile){
        
$this->tplDir $tplDir;
        
$this->tplFile $tplFile;
    }

    public function 
set($value NULL){
        
$this->replace[$this->tr_found] = $value;
        
$this->tr_found += 1;
    }

    public function 
Counstruct(){
        
$this->tpl file_get_contents($this->tplDir.$this->tplFile.'.tpl');

        
preg_match_all('|(.+?){foreach}(.+?){/foreach}(.*)|s'$this->tpl$cycles);
        
$this->top=$cycles[1][0];
        
$this->constructor=$cycles[2][0];
        
$this->down=$cycles[3][0];

        
$cycles null;
        
preg_match_all('|({\$\d})|s',  $this->constructor$cycles);
        
$count count($cycles[0]);
        for(
$a=0;$a<$this->tr_found;$a++){
            
$shab =$this->constructor;
            for(
$i 0$i $count$i++){
                 
$shab =  str_replace($cycles[0][$i], $this->replace[$a][$i] ,$shab);
            }
            
$this->center .=  $shab;
        }
        
$this->result $this->top.$this->center.$this->down;
        return 
$this->result;
    }
}
?>




question_list.php


<table title="Some text" width="100%" rules="rows">
<tr>
    <td title="&#1505;&#1496;&#1496;&#1493;&#1505;" width="1%"></td>
    <td title="Some text"><strong title="Some text">Some text</strong></td>
    <td title="Some text" width="1%"></td>
    <td title="Some text" width="2%"></td>
    <td title="Some text" width="5%"><strong title="Some text">Some text</strong></td>
    <td title="Some text" width="3%"><strong title="Some text">Some text</strong></td>
    <td title="Some text" width="1%"><strong title="Some text">Some text</strong></td>
</tr>
{foreach}
<tr title="{$0}" style="border-bottom-style:1px solid;border-bottom-color: #99CCCC;">
<td><span class="{$1}" dir="ltr"></span></td>
<td nowrap="nowrap"><span onclick="javascript: window.location='?vio=1&amp;act=view&amp;id={$2}'" style="font-weight:bold;">{$3}</span></td>
<td><span class="star" dir="ltr"></span></td>
<td><span dir="ltr">{$4}</span></td>
<td><span>{$5}</span></td>
<td><span dir="ltr"><strong>{$6}</strong></span></td>
<td><span dir="ltr">{$7}</span></td>
</tr>
{/foreach}
</table>
<br />




<?
require_once 'templ_creator.php';  
$templator = new templ('tample/vio/','question_list');   
$templator->set(array(
                
$f[id_subj],
                
$pic_class,
                
$f[id],
                
mb_substr($f[id_subj],0,122),
                
$f[id_ball],
                
get_name($f[id_user]),
                
$f[id_answers],
                
gmdate(' H:i',$f[id_date]),
                ));


 echo 
$templator->Counstruct();
?>

  Ответить  
 
 автор: werd   (30.06.2009 в 22:24)   письмо автору
 
   для: golovdinov   (30.06.2009 в 21:24)
 

Да с телефона писать неудобно.
То есть двух шаблонов не исбежать? Фигово. Но всё же я попробую покрутить выше приведённый скрипт :-) всего то надо массив ещё один добавить или сделать его войнным.

  Ответить  
 
 автор: Рома   (30.06.2009 в 22:21)   письмо автору
 
   для: werd   (30.06.2009 в 14:54)
 

Правильно говоришь, я тоже предпочитаю разбираться в каждом кусочке своего кода.

  Ответить  
 
 автор: golovdinov   (30.06.2009 в 21:24)   письмо автору
 
   для: werd   (30.06.2009 в 20:46)
 

Этого не избежать, т.к. вышеприведенный принцип применяется абсолютно везде (Smarty, XSLT и т.д.). Если записей неограниченное количество, то по другому никак. Тем более, что недостатков в таком подходе минимум.

PS: п*здец у тебя грамматика с орфографией :)

  Ответить  
 
 автор: werd   (30.06.2009 в 20:46)   письмо автору
 
   для: golovdinov   (30.06.2009 в 18:39)
 

Это имено то чего нехочу.

  Ответить  
 
 автор: werd   (30.06.2009 в 20:43)   письмо автору
 
   для: GeorgeIV   (30.06.2009 в 19:38)
 

Это да :-)
Большой проект другой разговор , даже 2 разработчика уже другое дело. Но я один. И за принцип взял сам все разработывать.

  Ответить  
 
 автор: GeorgeIV   (30.06.2009 в 19:38)   письмо автору
 
   для: werd   (30.06.2009 в 14:54)
 

все это хорошо, когда балуешься со своей страничкой и неприемлемо в больших проектах

  Ответить  
 
 автор: golovdinov   (30.06.2009 в 18:39)   письмо автору
 
   для: werd   (29.06.2009 в 06:34)
 

<?php

$templateTable 
= <<<HTML
<table>{rows}</table>
HTML;

$templateRow = <<<HTML
<tr>
    <td>{val1}</td>
    <td>{val2}</td>
    <td>{val3}</td>
</tr>
HTML;

$data = array (
    array (
1,2,3),
    array (
4,5,6),
    array (
7,8,9)
);

$sRows "";

foreach (
$data as $rowData) {
    
$sRow $templateRow;
    
$sRow str_replace ("{val1}"$rowData[0], $sRow);
    
$sRow str_replace ("{val2}"$rowData[1], $sRow);
    
$sRow str_replace ("{val3}"$rowData[2], $sRow);
    
$sRows .= $sRow;
}

$result str_replace ("{rows}"$sRows$templateTable);

?>


Суть проста: есть шаблон таблицы и шаблон строки (<tr>), складываем несколько обработанных шаблонов строки и вставляем в таблицу.

  Ответить  
 
 автор: werd   (30.06.2009 в 14:54)   письмо автору
 
   для: GeorgeIV   (30.06.2009 в 10:57)
 

да нет, это всего лишь называется работать своими мозгами.

Я предпочитаю понимать каждую функцию в своём коде. Нежели лазить по мануалам других разработчиков

  Ответить  

Сообщения:  [1-10]   [11-20] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования