Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Проблема со смарти
Форумы портала PHP.SU » PHP » Программирование на PHP » Проблема со смарти

Страниц (1): [1]
 

1. Merty - 15 Марта, 2010 - 11:59:57 - перейти к сообщению
Добрый день. Осваиваю PHP и использую smarty ва данный момент.
Вот столкнулся с такйо проблемой.
В Index.php я подключаю шаблон index.tpl
В самом шаблоне в <div class="cont"> хочу выводить подключать шаблон в зависимости от нажатой ссылки
Для примера выглядеть это будет так:
{if $page=='view'}
{include file="add.tpl"}
{else}
{include file="cont/main.tpl"}
{/if}

По умолчанию page задана в index.php

Сам вопрос: как мне передать, какой-либо параметр переменной page при нажатии на ссылку в index.tpl????

Грубо говоря мне нужно, что бы скажем при нажатии на ссылку Главная в page заносилось index, при нажатии на Добавить - add
Или такое не возможно?
2. JustUserR - 15 Марта, 2010 - 15:26:09 - перейти к сообщению
Merty пишет:
Сам вопрос: как мне передать, какой-либо параметр переменной page при нажатии на ссылку в index.tpl????
То есть вы хотите подключать файлы через include с передачей параметра - напрямую это не получится потому что происходит прямое считывание и интерпреация файла PHP - похожий метод бы работал в случае вывоза по CGI но не подключания файла а его исполнения
Чтобы передавтаь парамерты вы можете создать глобальную переменную и хранить данные в ней - либо же использовать переменную окружения
3. Merty - 16 Марта, 2010 - 01:01:29 - перейти к сообщению
JustUserR пишет:
Merty пишет:
Сам вопрос: как мне передать, какой-либо параметр переменной page при нажатии на ссылку в index.tpl????
То есть вы хотите подключать файлы через include с передачей параметра - напрямую это не получится потому что происходит прямое считывание и интерпреация файла PHP - похожий метод бы работал в случае вывоза по CGI но не подключания файла а его исполнения
Чтобы передавтаь парамерты вы можете создать глобальную переменную и хранить данные в ней - либо же использовать переменную окружения

А как этой самой переменой передать конкретное значение при нажатии на ссылку
4. JustUserR - 16 Марта, 2010 - 13:30:07 - перейти к сообщению
Merty пишет:
А как этой самой переменой передать конкретное значение при нажатии на ссылку
Например пользовтля нажимает на ссылку и переадется get-переменная значение которой копируется в опредеелную глобальную прееменную и может использовать со всех подключаемый файлах (Лишь бы к моменту подключения этих файлов переменная была объявлена и определена Улыбка
5. ALEN - 16 Марта, 2010 - 16:41:41 - перейти к сообщению
суть в общем такая:
$page=$_GET['page'];

а вот ссылка например:
index.php?page=add
index.php?page=index
и т.д.
Чтоб было проще разбираться, то советую файлы прикрепляемые таким образом называть так же, т.е. в данном случае:
add.tpl
index.tpl

Это чтоб в шаблоне просто вставлять:
{include file=$page.".tpl"}
но тогда по умолчанию проверяйте переменную page:
if(isset($_GET['page'])==TRUE&&$_GET['page']!=''){
$page=$_GET['page'];
} else {
$page='index';
}
6. Merty - 16 Марта, 2010 - 16:52:03 - перейти к сообщению
Окончательно затупил в своей безграмотности...
Вот более конкретный пример.
Заношу поля базы данных в массив.
После вывожу в main.tpl
{foreach from=$news item=item}
<tr>
<td>{$i++}</td>
<td> <a href="index.php?id={$item.id}">{$item.name} </a></td>
<td>{$item.rodwork}</td>
<td>{$item.datecreate}</td>
</tr>

{/foreach}

И при нажатии на ссылку, надо чтобы отобразился другой шаблон, где будет инфа о конкретной компании...
Благодарю за помощь
7. JustUserR - 16 Марта, 2010 - 17:16:49 - перейти к сообщению
Merty пишет:
И при нажатии на ссылку, надо чтобы отобразился другой шаблон, где будет инфа о конкретной компании...
Так делайте обычную проверку переменной с названием раздела и в заивсимости от него подключайте нужный файл - а если в подключаемый файл нужно "передать" данные то положите их в глобальную переменную
8. Merty - 16 Марта, 2010 - 18:06:00 - перейти к сообщению
Спасибо! Что-то наворотил.
В общем я получаю в index.php значение id
По умолчанию id=0 - главная
Если id не равен 0 то открывается шаблон с подробной информацией об организации, куда сейчас пытаюсь вывести информацию о конкретной организации))
9. ALEN - 16 Марта, 2010 - 18:56:50 - перейти к сообщению
Merty
Скажу так, по всей видимости еще не определился что тебе нужно. Для начала пойми, если тебе нужно научится, то учи php а потом javascript и сможешь на лету переключать страницы. В общем совет, можно передавать любые параметры, но переключение страниц - это GET тебе нужно листать.
Сейчас распишу маленький пример, а ты его перепишешь себе под смарти естественно:

1) Создаешь папку page/ в корне сайта, в нее помещаешь 3 файлика 1) index.tpl 2) info.tpl 3) contact.tpl
2) Создаешь в корне файл index.php , со следующи содержимым:
PHP:
скопировать код в буфер обмена
  1.  
  2. <a href="/index.php?page=index">Главная</a><br/>
  3. <a href="/index.php?page=info">Информация</a><br/>
  4. <a href="/index.php?page=contact">Контакты</a><br/>
  5. <br/><br/>
  6. <?PHP
  7. // Определяем значение переменной page для присоединения нужного файла
  8. // если параметр в ссылке не указан то нам нужно брать главную страницу ,
  9. // т.е. по умолчанию параметр index
  10. if(isset($_GET['page'])==TRUE&&$_GET['page']!=''){
  11. $page=$_GET['page'];
  12. } else {
  13. $page='index';
  14. }
  15. // Подключаем нужный файл
  16. include("page/".$page.".tpl");
  17. ?>
  18.  


Ну вот тебе и простой пример CMS - главное суть улови.
10. JustUserR - 16 Марта, 2010 - 20:56:59 - перейти к сообщению
Merty пишет:
Спасибо! Что-то наворотил.
В общем я получаю в index.php значение id
По умолчанию id=0 - главная
Пожалуйста! Все действительно верно - если идентификатора страница нет или он неверный то выводим страницу по умолчанию
ALEN пишет:
// Подключаем нужный файл
include("page/".$page.".tpl");
Вы имеете в виду что tpl-файл содержит PHP-код и сам использует внешние переменные и в том числе сам делает вывод - вообще для шаблонизатора лучше делать хоь какой но разбор файла
11. ALEN - 16 Марта, 2010 - 21:09:59 - перейти к сообщению
JustUserR
Я общий смысл, лень было расписывать все... описал только суть... естественно автору топика придется все равно под себя все делать, а тут просто пример того, как реализовать переключение шаблонов и т.д. с помощью ссылки. А что именно будет инклудится часть шаблона внутри шаблона смарти или дополнительный php код - думаю все когда учились перепробовали не один вариант.
12. Merty - 16 Марта, 2010 - 22:41:37 - перейти к сообщению
Спасибо тем, кто откликнулся и за пример тоже. суть в общем-то понял
13. JustUserR - 17 Марта, 2010 - 09:10:03 - перейти к сообщению
ALEN пишет:
А что именно будет инклудится часть шаблона внутри шаблона смарти или дополнительный php код - думаю все когда учились перепробовали не один вариант
Согласен - но ИМХО все-таки включения исполняемого кода это уже не шаблонизация а разбивка на модули
Merty пишет:
Спасибо тем, кто откликнулся и за пример тоже. суть в общем-то понял
Пожалуйста! Если вас интересует шаблонизация далее то можете почитать книгу А Котерова Программирование на PHP - там есть пару глав посвященых созданию своего шаблонизатора Улыбка

 

Powered by ExBB FM 1.0 RC1