Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> php код в smarty, передать выполненный код php в assign 
:(
    Опции темы
niaz
Дата 15.8.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.7.2006

Репутация: нет
Всего: нет



Уже давно не могу понять как рализовать 2 решения!

1) передавать в assign не переменню а код php чтобы он сначала выполнился передался шаблону для вывода:
(примерное такое)
Код

$smarty->assign("content", echo"test";);


1) передавать в assign не переменню а код php чтобы он выполнился в шаблоне:
(примерное такое)
Код

$smarty->assign("content", echo"test";);


Я знаю что можно добавить код php  в шаблон методом {php}{/php}. Но я же не могу воткнуть весь код сайта в шаблон.
PM MAIL ICQ   Вверх
Feldmarschall
Дата 15.8.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: нет
Всего: 32



код надо сначала выполнить, получить его результат в переменную, и эту переменную передавать в смарти.
неужели это не является очевидным при просмотре любых примеров приложений, работающих со смарти?

PM   Вверх
solenko
Дата 15.8.2008, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



1. Можете объяснить зачем вы используете smarty?
2. Можете привести реальный пример того, что вы спрашиваете?




--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
niaz
Дата 15.8.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.7.2006

Репутация: нет
Всего: нет



Цитата(Feldmarschall @ 15.8.2008,  08:38)
код надо сначала выполнить, получить его результат в переменную, и эту переменную передавать в смарти.
неужели это не является очевидным при просмотре любых примеров приложений, работающих со смарти?

Примеры приложений я не нашел.

Добавлено через 1 минуту и 45 секунд
Цитата(solenko @ 15.8.2008,  08:39)
1. Можете объяснить зачем вы используете smarty?
2. Можете привести реальный пример того, что вы спрашиваете?

1.) Смарти использую для шаблона своего портала. А вы что все делаете без шаблона? Можете привести пример?
2.) Пример я привел выше в первом посте.
PM MAIL ICQ   Вверх
solenko
Дата 15.8.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



niaz, А зачем вам шаблон? Я не использую шаблонов, но суть не в этом.
А в первом примере вы привели двух сферических коней. Например
Код

$smarty->assign("content", echo"test";);

эквивалентно
Код

echo "test";


Это сообщение отредактировал(а) solenko - 15.8.2008, 09:47


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 15.8.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: нет
Всего: 11



Цитата(niaz @  15.8.2008,  11:19 Найти цитируемый пост)
1) передавать в assign не переменню а код php чтобы он сначала выполнился передался шаблону для вывода:
(примерное такое)
код PHP
1:
    
$smarty->assign("content", echo"test";);

Смысла в echo "test" тут нет, нужно в php скрипте подготавливать данные для вывода в шаблон
Код

$smarty->assign("content","test");



Цитата(niaz @  15.8.2008,  11:19 Найти цитируемый пост)
1) передавать в assign не переменню а код php чтобы он выполнился в шаблоне:
(примерное такое)
Выделить всёкод PHP
1:
    
$smarty->assign("content", echo"test";);


Я знаю что можно добавить код php  в шаблон методом {php}{/php}. Но я же не могу воткнуть весь код сайта в шаблон. 

Чтобы код выполнился в шаблоне только через {php}{/php},  а вообще зачем он там нужен не хватает что ли конструкций смарти?  smile 



--------------------
PM WWW   Вверх
Feldmarschall
Дата 15.8.2008, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: нет
Всего: 32



niazhttp://www.smarty.net/manual/ru/
там есть примеры.

но суть я, по-моему, уже объяснил.

не 
Код

$smarty->assign("content", $r = mysql_query('SELECT * FROM имя_таблицы'); echo  mysql_num_rows($r););

а
Код

$r = mysql_query('SELECT * FROM имя_таблицы');
$num=mysql_num_rows($r);
$smarty->assign("content", $num);

это, надеюсь, не слишком сложно для понимания?

Это сообщение отредактировал(а) Feldmarschall - 15.8.2008, 11:21
PM   Вверх
niaz
Дата 15.8.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.7.2006

Репутация: нет
Всего: нет



Нверное я неправильно выразился! Ну ладно попробую еще раз все обьяснить:
Вот сам код шаблона:
Код

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>{$title}</title>
<META name="DESCRIPTION" content="{$description}">
<META name="KEYWORDS" content="{$keywords}">

<link href="/my.css" rel="stylesheet" type="text/css">

</head>

<body>
      {$content} 
</body>
</html>


А вот теперь сам код сценария smarty:

Код

<?php

require './Smarty/Smarty.class.php';

$smarty = new Smarty;

$smarty->compile_check = true;
$smarty->debugging = false;

$smarty->assign("title",'Мой сайт');

$smarty->assign("description",'сайт');

$smarty->assign("keywords",'познавательный сайт');

$smarty->config_load('site.conf','my');

$smarty->assign("glava",'раздел');

$smarty->assign("content", "мой php код");

$smarty->display('index.tpl');

?>


Мне охота выполнить в сценарии какой либо код либо функцию, чтобы результат вышел в шаблоне в блоке ($content). Код может быть любой: данные из базы, или отправка почты и .т .п. У меня есть страницы статистические, т.е. содержание не меняется, тогда я просто через:

Код

$smarty->assign("content", "html");


просто передаю весь html теги данных и все.

если я в шаблоне укажу {php}{/php} то ведь шаблон будет расти, и у страниц ведь разные коды. Точнее говоря я пишу портал: там есть обьявления, новости, фотки и все такое. А шаблон ведь один. Я же не могу весь код портала занести в {php}{/php} в шаблоне. Сами подумайте что тогда получиться. Пожалуйста обьясните по подробней.

Это сообщение отредактировал(а) niaz - 15.8.2008, 11:33
PM MAIL ICQ   Вверх
Feldmarschall
Дата 15.8.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: нет
Всего: 32



Ты не ответил на вопрос, зачем тебе смарти.
"он мне нужен для шаблона" - это не ответ.
судя по всему, ты не понимаешь, для чего нужны шаблоны. В этом случае тебе вообще не нужно ими пользоваться.
"шаблон" тебе нужен для того, чтобы не писать 10 раз <html xmlns="http://www.w3.org/1999/xhtml">?

ну так возьми свой "шаблон", пропиши в него все свои титлы и кейворды, и просто инклюдь в свой портал.
Код

include "shablon.html";

вот и все.


PM   Вверх
niaz
Дата 15.8.2008, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.7.2006

Репутация: нет
Всего: нет



Цитата(Feldmarschall @ 15.8.2008,  12:10)
Ты не ответил на вопрос, зачем тебе смарти.

Шаблон мне нужен чтобы дизайн страниц был одинаков. Прикинь если на сайте 200 страниц и в каждом прописан дизайн. А если захочешь поменять стиль одной буквы или таблицы, тогда ваще пипец. Вот и использую чтобы дизайн отделить от програмного кода пхп. Можно уже дизайн менять одним кликом если нужно. А ты сам как делаешь? Или ваще ничего сам не пробовал создавать?
PM MAIL ICQ   Вверх
niaz
Дата 18.8.2008, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.7.2006

Репутация: нет
Всего: нет



вы не поняли меня! Повторю вопрос снова!
Вот приведу пример синтаксиса Smarty:

Код

<?php

require './Smarty/Smarty.class.php';

$smarty = new Smarty;

$smarty->compile_check = true;
$smarty->debugging = false;

$smarty->config_load('my.conf','test');

$smarty->assign("title",'Мой сайт');

$smarty->assign("description",'Описание');

$smarty->assign("keywords",'ключи');


function test()
{
echo 'test';
}

$smarty->display('index.tpl');

?>


и приведу код шаблона.

Код

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>{$title}</title>
<META name="DESCRIPTION" content="{$description}">
<META name="KEYWORDS" content="{$keywords}">

<link href="/my.css" rel="stylesheet" type="text/css">


</head>

<body>

{$content}

</body>
</html>


мне охота чтобы функция test() выполнилась и результат отображался в шаблоне в переменной {$content}

Добавлено через 3 минуты и 48 секунд
Не уж то в Smarty нет простого решения. Как тогда пользуется весь мир? Вроде внимательно прочитал весь мануал!

Наверное есть один выход, написать свой шаблонизатор! Раньше так и делал. Не надо было переходить в Смарти.
PM MAIL ICQ   Вверх
solenko
Дата 18.8.2008, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Код

$smaty->assigne('content', test());
function test() {
  return 'test';
}


Код

ob_start();
test();
function test() {
  echo 'test';
}
$smaty->assigne('content', ob_get_contents());


Добавлено через 2 минуты и 10 секунд
Цитата(niaz @  18.8.2008,  08:14 Найти цитируемый пост)
Наверное есть один выход, написать свой шаблонизатор! Раньше так и делал. Не надо было переходить в Смарти.

Есть еще более верное решение -- написать свой php


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Feldmarschall
Дата 18.8.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: нет
Всего: 32



solenko, очень, очень умное решение. Шаблоны и буфферинг только для этого и придуманы были. 
PM   Вверх
niaz
Дата 18.8.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.7.2006

Репутация: нет
Всего: нет



а как передать такой код? ob_get_contents() - ом не получается, почему то код выполняется 2 раза!
Код

if(isset($Submit))
{
send_mail();
}
else
{
form_mail();
}

function send_mail()
{
$to_email="[email protected]";
$subject=$_POST['subject'];
$msg=$_POST['msg'];
$email=$_POST['email'];

   if(eregi("^[a-zA-Z0-9\._-]+@[a-z0-9\._-]+\.[a-z]{2,4}\$",$email))
   { 
             if(empty($subject))
             {
             echo '<div align="center">Введите ваше имя</div></br>';
             form_mail();
             }
             else 
             { 
                             if(empty($msg))
                             {
                             echo '<div align="center">Введите текст сообщения</div></br>';
                             }
                             else
                             { 
                                mail ($to_email,$subject,$msg,
                                "Content-type: text/html; charset=windows-1251\n". 
                                "From: $email\n".                                
                                "Reply-To: $emaip\n".
                                "Content-type: text/html; charset=windows-1251"
                                );
                                echo '<div align="center">Ваше письмо отправлено!</div></br>';
                                form_mail();
                             }
             }
             
   } 
   else
   {
   echo '<div align="center">E-mail неправильно введен или содержит недопустимые символы. Пожалуйста вернитесь и заполните все поля правильно</div></br>';
   form_mail();
   }

}

function form_mail()
{
echo'
<table width="97%" cellpadding="5" cellspacing="0">
          <tr>
            <td width="14%"></td>
            <td valign="top"><p align="left">Ваши вопросы.</p>
                <form name="form1" method="post" action="">
                  <table width="300">
                    <tr>
                      <td>Ваше имя: </td>
                    </tr>
                    <tr>
                      <td><input name="subject" type="text"></td>
                    </tr>
                    <tr>
                      <td>Ваш e-mail:</td>
                    </tr>
                    <tr>
                      <td><input type="text" name="email"></td>
                    </tr>
                    <tr>
                      <td>Текст письма: </td>
                    </tr>
                    <tr>
                      <td><textarea name="msg" cols="60" rows="10"></textarea></td>
                    </tr>
                    <tr>
                      <td height="5">&nbsp;</td>
                    </tr>
                    <tr>
                      <td><input type="submit" name="Submit" value="Отправить"></td>
                    </tr>
                  </table>
                </form><p align="justify">&nbsp;</p></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td valign="top">&nbsp;</td>
          </tr>

        </table>';
}



PM MAIL ICQ   Вверх
solenko
Дата 18.8.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: нет
Всего: 67



Feldmarschall, естественно для этого! А вы сомневались? А что, их можно еще для чего-то использовать?
Выше 10 упоминаний того, как сделать правильно. В моем последнем посте одно упоминание того как сделать правильно. Человек хочет  делать неправильно -- это его проблеммы.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Страницы: (3) Все [1] 2 3 
Закрытая темаСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Libraries | Следующая тема »


 




[ Время генерации скрипта: 0.0900 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.