Вы не зашли.
Главная »
PHP » Smarty на примере модификации форума PunBB
По-моему все эти условия тоже не стоит переносить в шаблон.
Только самое нужное.
Все условия скорее всего надо держать в логике, потом только передать типа:
В шаблоне уже элементарные условия, определяющие показать или нет.
Код:
span style="color: #0000BB"><?phpif (/* условия */) {$smarty->assign('isset_new_message', true);}{if $isset_new_message}<div class="mail">{$check_mail_box}</div>{/if} |
Отредактировано tipsun (2012.02.25 21:09)
»
include/pms/wap_header_new_messages.php используется в wap/header.php
Код:
span style="color: #0000BB"><?phpif (! $pun_user['is_guest'] && $pun_user['g_pm'] == 1 && $pun_config['o_pms_enabled'] && $pun_user['messages_enable'] == 1) { // Check for new messages $result_messages = $db->query('SELECT COUNT(1) FROM '.$db->prefix.'messages WHERE showed=0 AND owner='.$pun_user['id']) or error('Unable to check for new messages', __FILE__, __LINE__, $db->error()); $new_msg = $db->fetch_row($result_messages); if ($new_msg[0] > 0) { $condition['count_new_msgs'] = $new_msg[0]; } // Check if the inbox is full $result = $db->query('SELECT COUNT(1) FROM '.$db->prefix.'messages WHERE owner='.$pun_user['id']) or error('Unable to test if the message-box is full', __FILE__, __LINE__, $db->error()); $count = $db->fetch_row($result); if ($count[0] >= $pun_user['g_pm_limit']) { $condition['full_inbox'] = true; }} |
Отредактировано tipsun (2012.02.28 23:11)
Может что-то типа такого, или лучше можно сделать.
Или, как в мануале, сделать класс загрузки Smarty
»
wap/header.phpКод:
span style="color: #0000BB"><?phpif (! defined('PUN') or ! defined('PUN_ROOT')) exit(); define('PUN_HEADER', 1);if (defined('SMARTY')) { define('SMARTY_DIR', PUN_ROOT . 'include/Smarty/'); require_once SMARTY_DIR . 'Smarty.class.php'; $smarty = new Smarty(); define('THEME_DIR', PUN_ROOT . 'include/template/wap/' . $pun_user['style_wap'] . '/'); $smarty->template_dir = THEME_DIR . 'tpls/'; $smarty->compile_dir = THEME_DIR . 'compiled/'; $smarty->config_dir = THEME_DIR . 'configs/'; $smarty->cache_dir = THEME_DIR . 'cache/';}if ($pun_user['g_id'] < PUN_GUEST) { $result_header = $db->query('SELECT COUNT(1) FROM `' . $db->prefix . 'reports` WHERE `zapped` IS NULL') or error('Unable to fetch reports info', __FILE__, __LINE__, $db->error()); if ($db->result($result_header)) { $condition['reports'] = true; }}require PUN_ROOT . 'include/pms/wap_header_new_messages.php';//Уже в конце://$smarty->assign('conditions', $conditions);$smarty->assign('condition', $condition);$smarty->display('some.tpl'); |
Отредактировано tipsun (2012.02.28 23:11)
а как в мануале? я давненько со смарти не работал. вообще по логике да, нужно делать класс обертку.
типа PunTemplate extends Smarty {}
ну так да, об этом и речь)
Хотя в принципе так тоже удобно запускать Smarty, не?
Код:
span style="color: #0000BB"><?php//define('SMARTY', 1);define('PUN_TEMPLATE', 1);require_once PUN_ROOT . 'wap/header.php'; |
. . . .
Есть такое в footer.php
Как с этим быть я не знаю.
Генерирует файл, который потом инклудится в footer.php.
Код:
span style="color: #0000BB"><?php//// Generate WAP quickjump cache PHP scripts//function generate_wap_quickjump_cache($group_id = false){ global $db, $lang_common, $pun_config; // If a group_id was supplied, we generate the quickjump cache for that group only if ($group_id !== false) { $groups[0] = $group_id; } else { // A group_id was now supplied, so we generate the quickjump cache for all groups $result = $db->query('SELECT g_id FROM ' . $db->prefix . 'groups') or error('Unable to fetch user group list', __FILE__, __LINE__, $db->error()); $num_groups = $db->num_rows($result); for ($i = 0; $i < $num_groups; ++$i) { $groups[] = $db->result($result, $i); } } // Loop through the groups in $groups and output the cache for each of them while (list(, $group_id) = @each($groups)) { // Output wap quickjump as PHP code $fh = @fopen(PUN_ROOT . 'cache/cache_wap_quickjump_' . $group_id . '.php', 'wb'); if (!$fh) { error('Unable to write quickjump cache file to cache directory. Please make sure PHP has write access to the directory "cache"', __FILE__, __LINE__); } $output = '<?php if (! defined(\'PUN\')) exit(); define(\'PUN_QJ_LOADED\', 1); ?>' . '<form id="qjump" method="get" action="viewforum.php">' . '<div class="inbox">' . '<label>' . $lang_common['Jump to'] . '<br />' . '<select name="id" onchange="window.location.href=\\\'' . $pun_config['o_base_url'] . '/wap/viewforum.php?id=\\\'+this.options[this.selectedIndex].value;">'; $result = $db->query('SELECT c.id AS cid, c.cat_name, f.id AS fid, f.forum_name, f.redirect_url FROM '.$db->prefix.'categories AS c INNER JOIN '.$db->prefix.'forums AS f ON c.id=f.cat_id LEFT JOIN '.$db->prefix.'forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id='.$group_id.') WHERE fp.read_forum IS NULL OR fp.read_forum=1 ORDER BY c.disp_position, c.id, f.disp_position', true) or error('Unable to fetch category/forum list', __FILE__, __LINE__, $db->error()); $cur_category = 0; while ($cur_forum = $db->fetch_assoc($result)) { // A new category since last iteration? if ($cur_forum['cid'] != $cur_category) { if ($cur_category) { $output .= '</optgroup>'; } $output .= '<optgroup label="' . pun_htmlspecialchars($cur_forum['cat_name']) . '">'; $cur_category = $cur_forum['cid']; } $redirect_tag = ($cur_forum['redirect_url']) ? ' >>>' : ''; $output .= '<option value="' . $cur_forum['fid'] . '"'; if ($group_id == $cur_forum['fid']) { $output .= ' selected="selected"'; } $output .= '>' . pun_htmlspecialchars($cur_forum['forum_name']) . $redirect_tag . '</option>'; } $output .= '</optgroup>' . '</select>' . '<input type="submit" value="' . $lang_common['Go'] . '" accesskey="g" />' . '</label>' . '</div>' . '</form>'; fputs($fh, $output); fclose($fh); }} |
Отредактировано tipsun (2012.02.29 16:04)
tipsun написал:
Хотя в принципе так тоже удобно запускать Smarty, не?
как так? я не понял.
насчет статичного файла - наверное, просто {include file='cache/cache_wap_quickjump_' . $group_id . '.php'} пока делай. $group_id должна быть в шаблоне
Сначала
#83 в шапке или где удобно, что обычно в любом случае инклудится, расположить.
Потом вызывать так типа:
Код:
span style="color: #0000BB"><?php define('SMARTY', 1);require_once PUN_ROOT . 'wap/header.php'; |
Короче. Дальше потихоньку пойду.
Отредактировано tipsun (2012.02.29 20:08)
не-не-не, класс прослойка над Smarty должен быть обязательно.