IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему

Drupal и Smarty


Vlad
сообщение 4.11.2008, 10:53
Сообщение #1


Автор сайта
*****

Группа: Администратор
Сообщений: 4476
Регистрация: 1.4.2006
Из: Красноярск
Пользователь №: 3



Для сайта webimg.ru, который построен на Друпале, использовал шаблонизатор Smarty. Однако столкнулся с некоторыми затруднениями. Дело в том, что в Друпале вид различных элементов дизайна прошит в ядре и чтобы поменять их на свой лад применяется набор шаблонов и PHP-файлов. Однако для Smarty многие вещи просто не работают. Пришлось перевести свою тему на PHPTemplate, встроенную по умолчанию, благо штука простая. После чего сайт стал работать быстрее, потому как Друпал криво кэшировал шаблоны Smarty, да и остальные фичи заработали. Обзор вопроса выявил, что хотя Smarty действительно можно подключать, это еще не гарантирует, что сайт будет полностью поддерживать все возможности этого шаблонизатора. Так что у кого сайт на Друпале (такие надеюсь имеются), юзайте PHPTemplate.


--------------------
Влад Мержевич
Перейти в начало страницы
 
+Цитировать сообщение
Ялекс
сообщение 5.11.2008, 0:02
Сообщение #2


psd, html, js, php, xml
*****

Группа: Пользователь
Сообщений: 729
Регистрация: 4.9.2008
Пользователь №: 7607



Решил вообще отказаться от шаблонизатаров.

Для людей конечно понятней, но так как проекты веду преимущественно сам, то решил, что это лишнее.

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

Я пользуюсь своим простым классом:
Код
class View {
  private $vars = array();
  private $view = '';
  
  function __construct($view='', $vars = array(), $display_now = false){
    $this->view = $view;
    $this->setVars($vars);
    
    if($display_now) $this->display();
  }
  
  function setVar($name, $value){
    $this->vars[$name] = $value;
  }
  
  function setVars($vars){
    if(empty($vars)) return;
  
    foreach($vars as $key => $value){
      $this->vars[$key] = $value;
    }
  }
  
  function getVar($name){
    return $this->vars[$name];
  }
  
  function output($view = ''){
    
    $file = VIEWS . '/' . (empty($view) ? $this->view : $view ) . '.php';

    if(file_exists($file)){
    
        extract($this->vars);
    
        ob_start();
      
        require($file);
        
        $return = ob_get_contents();
        
        ob_end_clean();

        return $return;
    }else{
        return 'View file not fond!';
    }
  }
  
  function display($view = ''){
    echo($this->output($view));
  }
}

/* Примеры вызовов */

new View('normal', array(
'title' => $page_title,
'content' => $page_content
), true);

$v = new View('normal');
$v->setVar('title', $page_title);
$v->setVar('content', $page_content);
$v->display();

$v = new View();
$v->setVars( $pdo->query('SELECT * FROM table')->fetch() );
$v->display('normal');


В шаблоне максимум, что использую, так это if в одну проверку, while, foreach.

Ведь есть прекрасные сокращения PHP:
Код
<? if($var): ?> Текст <? endif; ?>

<? while($var = $pdoobject->fetch()): ?> Цикл <? endforeach; ?>

<? foreach($array as $item): ?>List array items<? endforeach; ?>

<?=$var?>


Достаточно понять зачем это все нужно, и вопросы с шаблонизатором отпадут.

Сообщение отредактировал Ялекс - 5.11.2008, 0:09


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
Usename
сообщение 26.7.2009, 22:47
Сообщение #3


Неофит
*

Группа: Новенький
Сообщений: 3
Регистрация: 26.7.2009
Пользователь №: 11151



script contribute Smarty with itselft - you dont need to install Smarty as theme engine for Drupal.

TUFaT dont support different template engines.

Commonly TUFaT use smarty->display, you can to use smarty->fetch to integrated some part of TUFaT with Drupal.
Перейти в начало страницы
 
+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему

 



Текстовая версия Сейчас: 9.2.2010, 14:55