Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kod php w pliku .tpl
Forum PHP.pl > Forum > PHP
livegfx
Mam CMS, wygląd strony oparty jest o pliki stylu (.tpl). Chcę umieścić na stronie rotację obraów (konkretnie: topów) w php:
  1. <?php
  2. $obrazki = array("top1.jpg", "top2.jpg", "top3.jpg", "top4.jpg");
  3.  
  4. srand ((float) microtime() * 10000000);
  5.  
  6. $obrazek = $obrazki[array_rand($obrazki)];
  7.  
  8. echo "<img src=$obrazek>";
  9. ?>

Gdy umieszczam ten kod w pliku .tpl odpowiedzialnym za wygląd strony głównej, kod nie jest przetwarzany (pojawia się w źródle strony w przeglądarce). Domyślam się, że kod php powinienem umieścić w pliku index.php (nie ma w nim elementów ustalających wygląd strony, sam kod). Jak to zrobić i co wówczas umieścić w pliku stylu?
zombie
Nie wiem jaka jest struktura Twojej strony, więc piszę raczej w ciemno.
Jeśli nie masz dostępu do konfiguracji serwera i nie masz wpływu na rozszerzenia plików parsowanych, możesz zmienić rozszerzenie tpl, na php.
livegfx
Zawartość index.php:

  1. <?php
  2.  
  3. if(is_file('administration/inc/config.php')) {
  4. require_once('administration/inc/config.php');
  5. }
  6.  
  7. if(!defined('CORE_INSTALLED')) {
  8. header('Location: install/install.php');
  9. }
  10.  
  11. require('inc/i18n.php');
  12. require('inc/common_lib.php');
  13. require('inc/main_lib.php');
  14.  
  15. define('PATH_TO_CLASSES', get_root() . '/administration/classes');
  16. define('PATH_TO_MODULES', 'modules');
  17.  
  18. require_once(PATH_TO_CLASSES. '/cls_db_mysql.php'); // dodawanie pliku konfigurujacego bibliotekę baz danych
  19. require_once(PATH_TO_CLASSES. '/cls_fast_template.php');
  20. require_once(PATH_TO_CLASSES. '/cls_calendar.php');
  21.  
  22. $rewrite = get_config('mod_rewrite'); // pobieranie informacji o uzyciu mod_rewrite
  23. $max_photo_width = get_config('max_photo_width'); //maksymalna szerokosc fotki
  24. $date_format = get_config('date_format'); //format daty
  25.  
  26. //inicjacja polaczenie z MySQL
  27. $db = new DB_Sql;
  28.  
  29. //licznik
  30. if(!isset($_COOKIE['devlog_counter'])){
  31.  
  32. @setcookie('devlog_counter', 'hit', time()+10800);
  33. set_config('counter', get_config('counter') + 1);
  34. }
  35.  
  36.  
  37. //konfiguracja szablonow i design switchera
  38. if(isset($_COOKIE['devlog_design']) && is_dir('./templates/' . $_COOKIE['devlog_design'] . '/tpl/')){
  39.  
  40. $theme = $_COOKIE['devlog_design'];
  41. } elseif(is_dir('./templates/main/tpl')) {
  42.  
  43. $theme = 'main';
  44. } else {
  45. printf('<div style="font-family: Arial, sans-serif; font-size: 16px; background-color: #ccc; border: 1px solid red; padding: 15px; text-align: center;">%s</div>', $i18n['index'][0]);
  46. }
  47.  
  48. @setcookie('devlog_design', $theme, time() + 3600 * 24 * 365);
  49.  
  50. // inicjowanie klasy, wkazanie katalogu przechowującego szablony
  51. $ft = new FastTemplate('./templates/' . $theme . '/tpl/');
  52.  
  53. $templates_dir = 'templates/';
  54. $read_dir = @dir($templates_dir);
  55.  
  56. $ft->define(array(
  57. 'main_page'  =>'main_page.tpl',
  58. 'note_main'  =>'note_main.tpl',
  59. 'main_denied'  =>'main_denied.tpl',
  60. 'rows' =>'default_rows.tpl',
  61. 'category_list'  =>'category_list.tpl',
  62. 'newsletter' =>'newsletter.tpl',
  63. 'query_failed' =>'query_failed.tpl'
  64. ));
  65.  
  66. // wartość poczatkowa zmiennej $start -> potrzebna przy stronnicowaniu
  67. $start = isset($_GET['start']) ? (int)$_GET['start'] : 0;
  68. $val = empty($val) ? '' : $val;
  69.  
  70. // generowanie linkow
  71. if ((bool)$rewrite) {
  72. $rss_link  = './rss';
  73. $rssc_link = './rsscomments';
  74. $search_link = 'index.search';
  75. $cat_all_link  = '1,0,all,item.html';
  76. } else {
  77. $rss_link  = './rss.php';
  78. $rssc_link = './rsscomments.php';
  79. $search_link = 'index.php?p=8';
  80. $cat_all_link  = 'index.php?p=all';
  81. }
  82.  
  83. $ft->assign(array(
  84. 'TITLE'  =>get_config('title_page'),
  85. 'STATISTICS' =>get_config('counter'),
  86. 'ENGINE_VERSION' =>$i18n['index'][1], 
  87. 'RSS_LINK' =>$rss_link,
  88. 'RSSCOMMENTS_LINK' =>$rssc_link, 
  89. 'SEARCH_LINK'  =>$search_link,
  90. 'CAT_ALL_LINK' =>$cat_all_link,
  91. 'CORE_VERSION' =>get_config('core_version')
  92. ));
  93.  
  94. if(!isset($_GET['p'])) {
  95.  
  96. $start_page_type = get_config('start_page_type');
  97. $start_page_id = get_config('start_page_id');
  98.  
  99. switch ($start_page_type) {
  100. case 'page': $p = 5;  break;
  101. case 'cat':  $p = 4;  break;
  102. case 'all':  $p = 'all'; break;
  103. default: $p = '';
  104. }
  105.  
  106. $id = $start_page_id;
  107. } else {
  108. $id = isset($_GET['id']) ? $_GET['id'] : '';
  109. $p = $_GET['p'];
  110. }
  111.  
  112. class loader {
  113.  
  114. var $mod = '';
  115. var $MODULE_EXTENSION = '.php';
  116.  
  117. // konstruktor
  118. function loader() {
  119.  
  120. global $p;
  121.  
  122. switch($p){
  123.  
  124. case '1' : $this->mod = 'alter_view'; break;
  125. case '2' : $this->mod = 'comments_view';  break;
  126. case '3' : $this->mod = 'comments_add'; break;
  127. case '4' : $this->mod = 'category_view';  break;
  128. case '5' : $this->mod = 'pages_view'; break;
  129. case '6' : $this->mod = 'articles_view';  break;
  130. case '7' : $this->mod = 'newsletter'; break;
  131. case '8' : $this->mod = 'search'; break;
  132. case '9' : $this->mod = 'date_view';  break;
  133.  
  134. default  : $this->mod = 'main_view';
  135. }
  136.  
  137. $this->mod = $this->name_cleaner($this->mod);
  138.  
  139. if($this->mod == "") {
  140. $this->return_dead();
  141. }
  142.  
  143. if(!@file_exists(PATH_TO_MODULES . '/' . $this->mod . $this->MODULE_EXTENSION)) {
  144. $this->return_dead();
  145. }
  146. }
  147.  
  148. function name_cleaner($name) {
  149.  
  150. return preg_replace("/[^a-zA-Z0-9-_]/", "", $name);
  151. }
  152.  
  153. function return_dead() {
  154. $this->mod = 'main_view';
  155. }
  156.  
  157. }
  158.  
  159. // wyznaczamy szablon jaki ma byc parsowany, sprawdzajac
  160. // czy faktycznie znajduje sie on w katalogu z szablonami
  161. if(!isset($assigned_tpl) || !file_exists('./templates/' . $theme . '/tpl/' . $assigned_tpl . '_page.tpl')) {
  162. $assigned_tpl = 'main_page';
  163. }
  164.  
  165. $ft->define_dynamic("alternate_design_row", $assigned_tpl);
  166.  
  167. while($d = $read_dir->read()) {
  168. if($d[0] != '.') {
  169.  
  170. // link do alternatywnego szablonu
  171. $template_link = (bool)$rewrite ? sprintf('2,%s,item.html', $d) : 'design.php?issue=' . $d;
  172.  
  173. $ft->assign(array(
  174. 'ALTERNATE_TEMPLATE' =>$d,
  175. 'TEMPLATE_LINK'  =>$template_link
  176. ));
  177. $ft->parse('ALTERNATE_DESIGN_ROW', ".alternate_design_row");
  178. }
  179. }
  180.  
  181. $loader = new loader();
  182. require_once(PATH_TO_MODULES . '/' . $loader->mod . $loader->MODULE_EXTENSION);
  183.  
  184. // tablica includowanych modulow
  185. $modules = array(
  186. 'category_list',
  187. 'pages_list',
  188. 'links_list'
  189. );
  190.  
  191. while(list($m) = each($modules)) {
  192. require_once PATH_TO_MODULES . '/' . $modules[$m] . '.php';
  193. }
  194.  
  195. $calendar = new calendar();
  196. $calendar->display_calendar();
  197.  
  198. $ft->parse('MAIN', $assigned_tpl);
  199. $ft->FastPrint();
  200.  
  201.  
  202.  
  203. ?>


Plik .tpl to przede wszysktim kod HTML, z tego typu wstawkami "{DAYS_CLASS}". Domyślam się, że taki kod powinien też wstawiać obrazki. Tylko jak zdefiniować go w index.php? W jaki sposób wstawić kod rotacji?

Jest to CMS Core, jeśli to pomoże winksmiley.jpg
Hiena
W szablonach Smarty kod php wstawia sie w specjalnych tagach, podobnie sie ma sprawa z wszelkimi rotacjami i petlami. Poczytaj dokumentacje tego CMS a napewno znajdziesz odpowiedz
karol_r
W pliku php wstaw to:

  1. <?php
  2.  
  3.  
  4. $obrazki = array("top1.jpg", "top2.jpg", "top3.jpg", "top4.jpg");
  5.  
  6. srand ((float) microtime() * 10000000);
  7.  
  8. $ft->assign('obrazek',$obrazki[array_rand($obrazki)]);
  9.  
  10.  
  11. ?>



a w pliku TPL to:

  1. <?php
  2.  
  3.  
  4. <img src={$obrazek}>
  5.  
  6.  
  7. ?>


Jeśli chodzi o "{$obrazek}" to musisz sprawdzic jak to dokladnie jest pisane w TPL, czy z dolarem czy bez ( np. {$obrazek} albo {obrazek} ), a moze jeszcze inaczej.


Powinno byc OK!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.