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

#71 2012.02.24 13:38

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

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

Код:

1
span style="color: #0000BB"><?php//До{if ! $pun_user.is_guest}{$pun_user.username|escape}{else}Guest{/if}//После{$pun_user.username|escape|default:'Guest'}

Отредактировано tipsun (2012.02.24 13:39)

Неактивен

#72 2012.02.24 14:23

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

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

Может быть или не быть.

Код:

1
span style="color: #0000BB"><?php/*Можно было бы при загрузке сразу1 раз определить тип аватарки изанести в базу в таблицу с юзерамив отдельное поле, типа 'avatar_type'.В шаблоне просто потом вывести:- - - -<img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$cur_post.poster_id}.{$cur_post.avatar_type}" alt="*" />- - - -*/if ($pun_config['o_avatars'] == 1 && $cur_post['use_avatar'] == 1 && $pun_user['show_avatars']) { if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.gif')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.gif" alt="*" />'; } else if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.jpg')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.jpg" alt="*" />'; } else if ($img_size = @getimagesize('../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.png')) { $user_avatar = '<img src="../'.$pun_config['o_avatars_dir'].'/'.$cur_post['poster_id'].'.png" alt="*" />'; }} else { $user_avatar = '';}

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

Неактивен

#73 2012.02.24 14:36

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

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

Не хочется начинать новые файлы переводить из-за того, что потом забудешь, что тут было.
А тут еще остались моменты.
Или сделать как получится и потом переделать?
Добавлено спустя   2 минуты  59 секунд:
user_title осталось, например.
Сейчас буду его искать.
Эта переменная нагде не выводится, чудеса епт.
- - - -
Или это $signature переменная...
Ибо <div class="hr">моя подпись высветилась</div>

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

Неактивен

#74 2012.02.24 15:08

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

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


» Get posts
» Do signature parsing/caching
» echo Signature

Сделал так:

/+
Наверно не зря фиксируется $signature_cache[$cur_post['poster_id']]
Видимо где-то заново фиксируется все это дело.
После цикла с постами, именно там все это происходит вроде.
А может и нет.
+/
<?php

// Get posts
$posts = $pids = array();
while ($cur_post = $db->fetch_assoc($result)) {
   
    // Do signature parsing/caching
    if ($cur_post['signature'] && $pun_user['show_sig']) {
        if (! isset($signature_cache[$cur_post['poster_id']])) {
            $signature_cache[$cur_post['poster_id']] = parse_signature($cur_post['signature']);
        }
    }
   
    $posts[] = $cur_post;
    $pids[] = $cur_post['id']; // Need to fetch attachments from db.
}
$db->free_result($result);

// Trololo smile

$smarty->assign('signature_cache', $signature_cache);

// TEMPLATE

/*
Промазал
<div class="hr">
{* Подпись пользователя *}
{if $cur_post.signature && $pun_user.show_sig}
    {$signature_cache[$cur_post.poster_id]}
{/if}
</div>
*/

{* Подпись пользователя *}
{if $cur_post.signature && $pun_user.show_sig}
<div class="hr">{$signature_cache[$cur_post.poster_id]}</div>
{/if}


Добавлено спустя   8 минут  57 секунд:

А елки, или это просто во время цикла вывода фиксируется 1 раз пользователь с подписью.
И потом если он встретиться еще раз, то не надо еще раз парсить, а просто вытащить готовое из массива, где ключ=идЗверя, значение=егоЗапарсервированнаяsmileПодпись.
Мдэ, сразу не догадался. sad

Отредактировано tipsun (2012.02.24 18:37)

Неактивен

#75 2012.02.24 18:56

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

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

Код:

1
span style="color: #0000BB"><?php{* Вне цикла надо, нет? *}{assign var='signature_cache' value=''}{* или *}{assign var='signature_cache' value=array()}{if $cur_post.signature && $pun_user.show_sig} {if ! isset($signature_cache[$cur_post.poster_id])} {$signature_cache[$cur_post.poster_id] = parse_signature($cur_post.signature)} {/if}<div class="hr">{$signature_cache[$cur_post.poster_id]}</div>{/if}

Отредактировано tipsun (2012.02.24 18:57)

Неактивен

#76 2012.02.24 21:15

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

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

Не могу найти где это выводится.
Вроде больше интимных мест не осталось.
wap/viewtopic.php#137
wap/viewtopic.php#187
wap/viewtopic.php#311
wap/viewtopic.php#339
wap/viewtopic.php#344

Отредактировано tipsun (2012.02.24 21:18)

Неактивен

#77 2012.02.24 23:43

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

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

а кстати, вполне возможно что в вап версии некоторые переменные и не используются.

Неактивен

#78 2012.02.24 23:46

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

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

Ну наверно. Я ни в header.php, ни в footer.php не нашел таких переменных.
Я сейчас их буду подробней рассматривать. Наброски то уже есть.

Отредактировано tipsun (2012.02.24 23:48)

Неактивен

#79 2012.02.25 14:38

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

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

wap/footer.php#9 :: include/functions.php#289

Еще другой в другой функции есть кусок этот.

Код:

1
span style="color: #0000BB"><?php// Are there any additional navlinks we should insert into the array before imploding it?if ($pun_config['o_additional_navlinks']) { if (preg_match_all('#([0-9]+)\s*=\s*(.*?)\n#s', $pun_config['o_additional_navlinks'], $extra_links)) { // Insert any additional links into the $links array (at the correct index) for ($i = 0, $all = sizeof($extra_links[1]); $i < $all; ++$i) { if (preg_match('!<a[^>]+href="?\'?([^ "\'>]+)"?\'?[^>]*>([^<>]*?)</a>!is', $extra_links[2][$i], $row)) { array_splice($out, $extra_links[1][$i], 0, array('<option value="' . $row[1] . '">' . $row[2] . '</option>')); } } }}

Неактивен

#80 2012.02.25 20:28

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

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

Интимные места, как всегда.
- Выкинул запрос в базу.
* Проигнорировал инклуд.
- Не обратил внимание на развилку wap_main и help.

Код:

1
span style="color: #0000BB"><?php{assign var='Not_logged_in' value='Not logged in'}{assign var='New_reports' value='New reports'}{assign var='Full_inbox' value='Full inbox'}{assign var='New_messages' value='Почта'}{* assign var='New_messages' value='New messages' *}<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"> <head> <meta http-equiv="Expires" content="Thu, 21 Jul 1977 07:30:00 GMT" /> <meta http-equiv="Last-Modified" content="{$smarty.now|date_format:'r'} GMT" /> <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" /> <meta http-equiv="Pragma" content="no-cache" /> {* <pun_char_encoding> *} <meta http-equiv="Content-Type" content="text/html; charset={$lang_common.lang_encoding}" /> {*+ <pun_head> *} <title>{$page_title|escape}</title> <link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}style.css" /> {*- <pun_head> *} {* <pun_rssname> *} {* <pun_rss> *} <link rel="alternate" type="application/rss+xml" title="{$pun_config.o_board_title}" href="{$smarty.const.PUN_ROOT}rss.xml" /> </head> <body> {if $basename == 'index.php'} {* <pun_hd> *} <div class="hd"> <img src="{$smarty.const.THEME_DIR}imgs/logo.gif" title="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" alt="{$lang_common.Forum} {$smarty.server.HTTP_HOST}" /> </div> {if $pun_config.o_board_desc} {* <pun_desc> *} <div class="hd_bott"> {$pun_config.o_board_desc} </div> {/if} {*+ <pun_status> *} {if $pun_user.is_guest} <div class="con"> {$lang_common.$Not_logged_in} </div> {/if} {if $pun_user.g_id < $smarty.const.PUN_GUEST} {if $result_header} {* Query to db *} <div class="con"> <a href="{$smarty.const.PUN_ROOT}admin_reports.php">{$lang_admin.$New_reports}</a> </div> {/if} {if $pun_config.o_maintenance == 1} <div class="con"> <a href="{$smarty.const.PUN_ROOT}admin_options.php#maintenance">{$lang_admin.maintenance}</a> </div> {/if} {/if} {* require PUN_ROOT . 'include/pms/wap_header_new_messages.php'; *} {* ЛС *} {if $isset_new_message} <div class="info"> <a href="message_list.php"> {$New_messages} {* $lang_pms.$New_messages *} </a> </div> {if $count[0] >= $pun_user.g_pm_limit} <div class="red"> <a href="message_list.php">{$lang_pms.$Full_inbox}</a> </div> {/if} {/if} {*- <pun_status> *} {/if} <div class="in"> <div> <a href="{$smarty.const.PUN_ROOT}rss.xml">RSS</a> </div> </div> {if $basename == 'index.php' && $pun_config.o_announcement == 1} {* <pun_announcement> *} <div class="incqbox"> {$lang_common.Announcement} </div> <div class="msg"> {$pun_config.o_announcement_message} </div> {/if} {if $basename == 'profile.php' || $basename == 'search.php' || $basename == 'userlist.php' || $basename == 'message_list.php' || $basename == 'message_send.php' || $basename == 'message_delete.php' || $basename == 'misc.php' || $basename == 'filemap.php' || $basename == 'karma.php'} <div class="inbox"> <a href="index.php">{$lang_common.Index}</a> </div> {/if}

Отредактировано tipsun (2012.02.25 20:53)

Неактивен

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

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

forum.wapinet.ru

PunBB Mod v0.6.2
0.016 s