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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема со смарти

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Merty
Отправлено: 15 Марта, 2010 - 11:59:57
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Добрый день. Осваиваю 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
Или такое не возможно?
 
 Top
JustUserR
Отправлено: 15 Марта, 2010 - 15:26:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Merty пишет:
Сам вопрос: как мне передать, какой-либо параметр переменной page при нажатии на ссылку в index.tpl????
То есть вы хотите подключать файлы через include с передачей параметра - напрямую это не получится потому что происходит прямое считывание и интерпреация файла PHP - похожий метод бы работал в случае вывоза по CGI но не подключания файла а его исполнения
Чтобы передавтаь парамерты вы можете создать глобальную переменную и хранить данные в ней - либо же использовать переменную окружения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Merty
Отправлено: 16 Марта, 2010 - 01:01:29
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




JustUserR пишет:
Merty пишет:
Сам вопрос: как мне передать, какой-либо параметр переменной page при нажатии на ссылку в index.tpl????
То есть вы хотите подключать файлы через include с передачей параметра - напрямую это не получится потому что происходит прямое считывание и интерпреация файла PHP - похожий метод бы работал в случае вывоза по CGI но не подключания файла а его исполнения
Чтобы передавтаь парамерты вы можете создать глобальную переменную и хранить данные в ней - либо же использовать переменную окружения

А как этой самой переменой передать конкретное значение при нажатии на ссылку
 
 Top
JustUserR
Отправлено: 16 Марта, 2010 - 13:30:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Merty пишет:
А как этой самой переменой передать конкретное значение при нажатии на ссылку
Например пользовтля нажимает на ссылку и переадется get-переменная значение которой копируется в опредеелную глобальную прееменную и может использовать со всех подключаемый файлах (Лишь бы к моменту подключения этих файлов переменная была объявлена и определена Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ALEN
Отправлено: 16 Марта, 2010 - 16:41:41
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




суть в общем такая:
$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';
}
 
 Top
Merty
Отправлено: 16 Марта, 2010 - 16:52:03
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Окончательно затупил в своей безграмотности...
Вот более конкретный пример.
Заношу поля базы данных в массив.
После вывожу в 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}

И при нажатии на ссылку, надо чтобы отобразился другой шаблон, где будет инфа о конкретной компании...
Благодарю за помощь
 
 Top
JustUserR
Отправлено: 16 Марта, 2010 - 17:16:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Merty пишет:
И при нажатии на ссылку, надо чтобы отобразился другой шаблон, где будет инфа о конкретной компании...
Так делайте обычную проверку переменной с названием раздела и в заивсимости от него подключайте нужный файл - а если в подключаемый файл нужно "передать" данные то положите их в глобальную переменную


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Merty
Отправлено: 16 Марта, 2010 - 18:06:00
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Спасибо! Что-то наворотил.
В общем я получаю в index.php значение id
По умолчанию id=0 - главная
Если id не равен 0 то открывается шаблон с подробной информацией об организации, куда сейчас пытаюсь вывести информацию о конкретной организации))
 
 Top
ALEN
Отправлено: 16 Марта, 2010 - 18:56:50
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




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 - главное суть улови.

(Отредактировано автором: 16 Марта, 2010 - 18:58:10)

 
 Top
JustUserR
Отправлено: 16 Марта, 2010 - 20:56:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Merty пишет:
Спасибо! Что-то наворотил.
В общем я получаю в index.php значение id
По умолчанию id=0 - главная
Пожалуйста! Все действительно верно - если идентификатора страница нет или он неверный то выводим страницу по умолчанию
ALEN пишет:
// Подключаем нужный файл
include("page/".$page.".tpl");
Вы имеете в виду что tpl-файл содержит PHP-код и сам использует внешние переменные и в том числе сам делает вывод - вообще для шаблонизатора лучше делать хоь какой но разбор файла


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ALEN
Отправлено: 16 Марта, 2010 - 21:09:59
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




JustUserR
Я общий смысл, лень было расписывать все... описал только суть... естественно автору топика придется все равно под себя все делать, а тут просто пример того, как реализовать переключение шаблонов и т.д. с помощью ссылки. А что именно будет инклудится часть шаблона внутри шаблона смарти или дополнительный php код - думаю все когда учились перепробовали не один вариант.
 
 Top
Merty
Отправлено: 16 Марта, 2010 - 22:41:37
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Спасибо тем, кто откликнулся и за пример тоже. суть в общем-то понял
 
 Top
JustUserR
Отправлено: 17 Марта, 2010 - 09:10:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




ALEN пишет:
А что именно будет инклудится часть шаблона внутри шаблона смарти или дополнительный php код - думаю все когда учились перепробовали не один вариант
Согласен - но ИМХО все-таки включения исполняемого кода это уже не шаблонизация а разбивка на модули
Merty пишет:
Спасибо тем, кто откликнулся и за пример тоже. суть в общем-то понял
Пожалуйста! Если вас интересует шаблонизация далее то можете почитать книгу А Котерова Программирование на PHP - там есть пару глав посвященых созданию своего шаблонизатора Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB