• Главная
  • » PHP
  • » Smarty на примере модификации форума PunBB

#161 2012.04.07 11:51

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

Нет.

Неактивен

#162 2012.04.07 14:51

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

Обновился.
Добавлено спустя   6 минут  3 секунды:
Проблема с инклудом файла из кеша.

Код:

1
span style="color: #0000BB"><?php{if $pun_config.o_quickjump == 1 and $basename == 'viewforum.php' || $basename == 'viewtopic.php'} {fetch file="{$smarty.const.PUN_ROOT}cache/cache_wap_quickjump_{$forum_id}.php"}{/if}

.
В конце остается это: '; ?>

Отредактировано tipsun (2012.04.07 14:58)

Неактивен

#163 2012.04.07 15:09

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

Вроде синкаксических ошибок в новом шаблоне moderate.tpl нет.

Отредактировано tipsun (2012.04.07 15:10)

Неактивен

#164 2012.04.07 16:10

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Smarty на примере модификации форума PunBB

шаблон покажи

Неактивен

#165 2012.04.07 19:06

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

moderate.tpl

Код:

1
span style="color: #0000BB"><?php{include file='header.tpl'}{* Навигация: Главная / Форум / Тема *}<div class="inbox"> <a href="index.php">{$lang_common.Index}</a> » {$cur_forum.forum_name|escape}</div><form method="post" action="moderate.php?fid={$fid}">{assign var='date_format' value='%d/%m/%y %H:%I:%S'}{assign var='Post_topic' value='Post topic'}{assign var='Empty_forum' value='Empty forum'}{assign var='Closed_icon_m' value='Closed icon_m'}{assign var='New_icon_m' value='New icon_m'}{assign var='Normal_icon' value='Normal icon'}{assign var='j' value='false'}{foreach from=$topics item=cur_topic}<div class="{if ($j = ! $j)}msg{else}msg2{/if}"><input type="checkbox" name="topics[{$cur_topic.id}]" value="1" />{* +SUBJECT *}<strong>{if $cur_topic.moved_to} {$lang_forum.Moved_m}{elseif $cur_topic.closed} {$lang_common.$Closed_icon_m}{else} {$lang_common.$Normal_icon}{/if} {if $pun_config.poll_enabled == 1 && $cur_topic.has_poll} {$lang_forum.poll_m}{/if}{if $cur_topic.sticky == 1} {$lang_forum.Sticky_m}{/if}</strong>{* // Should we display the dot or not? :) *}{if ! $pun_user.is_guest && $pun_config.o_show_dot == 1 and $cur_topic.has_posted == $pun_user.id}<strong>·</strong>{/if}<a href="viewtopic.php?id={$cur_topic.moved_to|default:$cur_topic.id}">{if $pun_config.o_censoring == 1} {censor_words($cur_topic.subject)|escape}{else} {$cur_topic.subject|escape}{/if}</a>{if $cur_topic.num_pages_topic > 1}[{paginate($cur_topic.num_pages_topic, -1, "viewtopic.php?id={$cur_topic.id}")}]{/if} {$lang_common.by} {$cur_topic.poster|escape}{* -SUBJECT *}{if ! $cur_topic.moved_to} ({$cur_topic.num_replies}/{$cur_topic.num_views}){* ! $cur_topic.moved_to &&*}{if $cur_topic.last_post > $pun_user.last_visit} <span class="red">{$lang_common.$New_icon_m}</span>{/if}<br/><span class="sub">» <a href="viewtopic.php?pid={$cur_topic.last_post_id}#p{$cur_topic.last_post_id}">{$cur_topic.last_post|date_format:$date_format}</a> {$lang_common.by} {$cur_topic.last_poster|escape};</span>{/if}</div>{foreachelse}{assign var='button_status' value='1'}<div class="in">{$lang_forum.$Empty_forum}</div>{/foreach}<div class="con">{$paging_links}</div>{if (! $cur_forum.post_topics && $pun_user.g_post_topics == 1) || $cur_forum.post_topics == 1 || $is_admmod}<div class="go_to"><input type="submit" name="move_topics" value="{$lang_misc.Move}" {if $button_status}disabled="disabled"{/if} /><input type="submit" name="delete_topics" value="{$lang_misc.Delete}" {if $button_status}disabled="disabled"{/if} /><input type="submit" name="open" value="{$lang_misc.Open}" {if $button_status}disabled="disabled"{/if} /><input type="submit" name="close" value="{$lang_misc.Close}" {if $button_status}disabled="disabled"{/if} /></div></form>{/if}{include file='footer.tpl'}

Отредактировано tipsun (2012.04.07 19:07)

Неактивен

#166 2012.04.07 20:23

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Smarty на примере модификации форума PunBB

эээ, так через fetch не выйдет. думаю, нужно сам кэш генерить не в виде php файла, а статичной html-ки уже.

Неактивен

#167 2012.04.07 20:31

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

Тогда сюда надо смотреть.
Добавлено спустя   6 минут  32 секунды:
А, у меня оказывается уже все сделано. Просто файл 1 раз сгенерился и остался.

Вот вроде:

Код:

1
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__); }//тут..............v....................................................................v $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']) ? ' &gt;&gt;&gt;' : ''; $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); }}

Неактивен

#168 2012.04.07 21:20

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Smarty на примере модификации форума PunBB

ну так да, метод нужно менять

Неактивен

#169 2012.04.10 17:56

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

[Ошибка: этот матюк невозможно отобразить буквами]

Ну никак не работала система cache_quickjump.
И так пробовал и сяк.
Я думаю ну что такое же.
Потом уже потеряв надежду поменял require_once на include и заработало. o(o_O)o
Еще поправил условие.
wap/footer.php

Код:

1
span style="color: #0000BB"><?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();//...................................vif ('viewtopic.php' == $basename or 'viewforum.php' == $basename and $pun_config['o_quickjump'] == 1) { // Load cached quickjump // included quickjump ob_start(); @include PUN_ROOT . 'cache/cache_wap_quickjump_' . $id . '.php'; ob_end_clean(); if (! defined('PUN_QJ_LOADED')) { include PUN_ROOT . 'include/quickjump.php'; }}

Новый файл вроде, я его раньше не замечал.
include/quickjump.php

Код:

1
span style="color: #0000BB"><?php$group_id = $id;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 themwhile (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']) ? ' &gt;&gt;&gt;' : ''; $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.04.10 17:59)

Неактивен

#170 2012.04.10 19:58

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2277
Карма: 19
Профиль

Re: Smarty на примере модификации форума PunBB

Получается, что require_once при отсутствии файла останавливает работу а include нет?

Отредактировано tipsun (2012.04.10 19:59)

Неактивен

  • Главная
  • » PHP
  • » Smarty на примере модификации форума PunBB

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.016 s