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

#1 2012.02.17 14:56

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$posts $pids = array();
while ($cur_post $db->fetch_assoc($result)) {
    $posts[] = $cur_post;
    $pids[] = $cur_post['id'];
}
$db->free_result($result);
 
//Trololo
//Я бы все заменил на $smarty->assign('posts', $db->fetchAll());
//Но там везде $posts и $pids используются
$smarty->assign('posts'$posts);

Отредактировано tipsun (2012.02.17 16:02)

Неактивен

#2 2012.02.17 15:41

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

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

Что делать, если ключ массива задан с пробелом?

Код:

1
2
3
4
{if $quickpost}
<div>
<strong>{$lang_topic['Quick post']}</strong>
</div>

Добавлено спустя   9 минут  7 секунд:
Что-то типа такого можно?

Код:

1
<input type="hidden" name="form_user" value="{$pun_user.username ? $pun_user.username : 'Guest'}" />

Или так надо?

Код:

1
<input type="hidden" name="form_user" value="{if $pun_user.username} {$pun_user.username} {else} Guest {/if}" />

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

Неактивен

#3 2012.02.17 16:09

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

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

В файле viewtopic я почти всю разметку занес в шаблон. То, что в гигантском цикле foreach осталось. Все остальное не трогаю.

Отредактировано tipsun (2012.02.17 16:09)

Неактивен

#4 2012.02.17 16:21

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

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

я не помню уже. на счет тернарного оператора.

Неактивен

#5 2012.02.17 16:50

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

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

Карма
Не лучше ли сразу?

Код:

1
2
3
4
5
6
7
8
9
<?php
 
$posts $pids = array();
while ($cur_post $db->fetch_assoc($result)) {
    $cur_post['karma'] = $db->fetch_row($db->query('SELECT SUM(`vote`), (SELECT 1 FROM `'.$db->prefix.'karma` WHERE `id`='.$pun_user['id'].' AND `to`='.$cur_post['poster_id'].' LIMIT 1) FROM `'.$db->prefix.'karma` WHERE `to` = '.$cur_post['poster_id'], false));;
    $posts[] = $cur_post;
$db->free_result($result);
//tpl: posts[i].karma[0]
//tpl: posts[i].karma[1]

Отредактировано tipsun (2012.02.17 16:51)

Неактивен

#6 2012.02.17 20:31

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

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

У меня руки кривые?
Или это проделки самописного MySQLi?
Там посмотрел, видимо сбивает предыдущий запрос.

Код:

1
2
3
4
5
6
7
8
9
10
<?php
 
$posts $pids = array();
while ($cur_post $db->fetch_assoc($result)) {
    $karma $db->query('SELECT SUM(`vote`), (SELECT 1 FROM `'.$db->prefix.'karma` WHERE `id`='.$pun_user['id'].' AND `to`='.$cur_post['poster_id'].' LIMIT 1) FROM `'.$db->prefix.'karma` WHERE `to` = '.$cur_post['poster_id'], false)
    $cur_post['karma'] = $db->fetch_row($karma);
    $posts[] = $cur_post;
    $pids[] = $cur_post['id'];
}
$db->free_result($result);

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

Неактивен

#7 2012.02.17 21:35

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

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

Просто я думал в один массив все слить, потом его в смарти загнать и уже в шаблоне через фореач все допилить.

Неактивен

#8 2012.02.17 22:00

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

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

Вот за сегодня чего получилось.
Не добил пока еще sad
Там еще запутанно с выводом для Пользователя и Гостя

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
 
<!-- viewtopic template -->
<div class="con">
<a href="index.php">{$lang_common.Index}</a> / <a href="viewforum.php?id={$cur_topic.forum_id}">{$cur_topic.forum_name}</a> / {$cur_topic.subject}
</div>
 
<!-- +FOREACH -->
{foreach from=$posts item=$cur_post}
 
<!-- <a href="profile.php?id={$cur_post.poster_id}">{$cur_post.username}</a> -->
<table class="msg2">
    <tr>
        <td>
            <div id="p{$cur_post.id}">
                <a href="viewtopic.php?pid={$cur_post.id}#p{$cur_post.id}">#{$start_from + $post_count}</a><br/>
                {format_time($cur_post['posted'])}<br/>
                <strong>{$username}</strong>
                
                {if $pun_config.o_show_post_karma == || $pun_user.g_id < {PUN_GUEST}}
                
                {if $pun_user.is_guest || $karma[1]}
                {$karma[0]}
                {else}
                (<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a> {$cur_post.karma[0]} <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>)
                {/if}
                
                {/if}
                
                {if $cur_post.poster_id && $cur_post.is_online == $cur_post.poster_id}
                <br/>
                <span class="green">{$lang_topic.Online}</span>
                {/if}
            </div>
        </td>
        <!-- user avatar -->
        {if $cur_post.poster_id && $pun_config.o_avatars == && $cur_post.use_avatar == && $pun_user.show_avatars}
        <td>
            <img src="../{$pun_config.o_avatars_dir}/{$cur_post.poster_id}.gif" alt="*" />
        </td>
        {else}
        
        {/if}
    </tr>
</table>
{/foreach}
 
<!-- -FOREACH -->
<class="con">{$paging_links}</p>
 
{if $pun_user.g_post_replies}
<div class="blocktable">
    <strong><class="in" href="post.php?tid={$id}">{$lang_topic.`Post reply`}</a></strong>
</div>
{/if}
 
{if $quickpost}
<div>
    <strong>{$lang_topic.`Quick post`}</strong>
</div>
 
<div class="input">
    <form method="post" action="post.php?tid={$id}">
    <div>
        <fieldset>
        <legend>{$lang_common.`Write message legend`}</legend>
        
        {if $pun_config.o_antiflood}
        <input type="hidden" name="form_t" value="{$smarty.server.REQUEST_TIME}/>
        <input type="hidden" name="form_sent" value="1" />
        <input type="hidden" name="form_user" value="{if $pun_user.username}{$pun_user.username}{else}Guest{/if}" />
        {/if}
        <!-- Ввод имени для гостей -->
        {if $pun_user.is_guest}
        {$lang_common.Username}<br/>
        <input type="text" name="req_username" tabindex="1" /><br/>
        {/if}
        <textarea name="req_message" rows="4" cols="24" tabindex="1"></textarea><br/>
        {if $is_admmod}
        <input type="checkbox" name="merge" value="1" checked="checked" /> {$lang_post.`Merge posts`}
        {/if}
        </fieldset><br/><input type="submit" name="submit" tabindex="2" value="{$lang_common.Submit}accesskey="s" />
    </div>
    </form>
</div>
{/if}

Отредактировано tipsun (2012.02.17 22:03)

Неактивен

#9 2012.02.18 12:13

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

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

tipsun, я не понял на счет кармы. Покажи как сейчас и что тебе не нравится. Я на память весь код не помню.
Вообще не переживай если код в шаблонах громоздкий получается. Само то, что верстка будет вынесена уже само по себе очень большой плюс.
По поводу разных шаблонов для пользователя и гостя - есть смысл. Но еще же есть модераторы и админы. Там  тоже немного отличается внешний вид.

Неактивен

#10 2012.02.18 12:17

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

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

Неправильно я там сделал.
Забыл про условие {if $cur_post.poster_id > 1} надо во все остальные условия подставлять, где эти условия в само условие входили smile
- - - -
Сейчас карму покажу

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
<!-- template -->
 
{foreach from=$posts item=$cur_post}
 
<table class="msg2">
    <tr>
        <td>
            <div id="p{$cur_post.id}">
                <a href="viewtopic.php?pid={$cur_post.id}#p{$cur_post.id}">#{$start_from + $post_count}</a><br/>
                {$cur_post.posted|date:%d/%m/%%h:%i:%s}<br/>
                <!-- User or Guest -->
                <strong>{if $cur_post.poster_id 1}<a href="profile.php?id={$cur_post.poster_id}">{$cur_post.username}</a>{else}{$cur_post.username}{/if}</strong>
                
                {if $cur_post['poster_id'] > && $pun_config.o_show_post_karma == || $pun_user.g_id < {PUN_GUEST}}
                {if $pun_user.is_guest || $karma[1]}
                {$cur_post.karma[0]}
                {else}
                (<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a> {$cur_post.karma[0]} <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>)
                {/if}
                {/if}

* * * *
Чтоб её узнать, надо запрос из шаблона делать или в логике пройтись по готовому массиву с сообщениями и определить карму.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
foreach ($posts as $cur_post) {
    $post_count++;
    $signature $is_online $user_avatar '';
    $post_actions $user_contacts $user_info = array();
    
    // If the poster is a registered user.
    $karma '';
    if ($cur_post['poster_id'] > 1) {
    
        if ($pun_config['o_show_post_karma'] == || $pun_user['g_id'] < PUN_GUEST) {
        
            $karma $db->fetch_row($db->query('SELECT SUM(`vote`), (SELECT 1 FROM `'.$db->prefix.'karma` WHERE `id`='.$pun_user['id'].' AND `to`='.$cur_post['poster_id'].' LIMIT 1) FROM `'.$db->prefix.'karma` WHERE `to` = '.$cur_post['poster_id'], false));
            $karma[0] = intval($karma[0]);
            
            if ($pun_user['is_guest'] || $karma[1]) {
                $karma ' ('.$karma[0].')';
            } else {
                $karma ' ('.$karma[0].') <a href="karma.php?to='.$cur_post['poster_id'].'&amp;vote=1&amp;pid='.$cur_post['id'].'">+</a>/<a href="karma.php?to='.$cur_post['poster_id'].'&amp;vote=-1&amp;pid='.$cur_post['id'].'">-</a>';
            }
            
        }

Добавлено спустя   6 минут  45 секунд:
У меня пока там ошибки и т.д. Потом когда полностью готов шаблон будет, уже можно будет отладить.
Вообщем насчет кармы:
Там сначала посты через цикл вытаскиваются, потом через второй цикл определяется карма каждого постера.
Удобней было бы сразу в одном цикле это сделать и потом в шаблоне через цикл вывести без всяко запросов.

Отредактировано tipsun (2012.02.18 12:35)

Неактивен

#11 2012.02.18 15:21

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

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

Не хочет ничего показывать, почему?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
define('SMARTY_DIR'PUN_ROOT 'plugins/Smarty/');
require_once(SMARTY_DIR 'Smarty.class.php');
 
$smarty = new Smarty();
 
$smarty->template_dir PUN_ROOT 'themes/wap/templates/';
$smarty->compile_dir  PUN_ROOT 'themes/wap/compile/';
$smarty->config_dir   PUN_ROOT 'themes/wap/configs/';
$smarty->cache_dir    PUN_ROOT 'themes/wap/cache/';
 
$smarty->assign('paging_links'$paging_links);
$smarty->assign('posts'$paging_links);
$smarty->assign('pun_config'$pun_config);
$smarty->assign('pun_user'$pun_user);
$smarty->assign('posts'$posts);
 
//$smarty->debugging = true;
$smarty->display('viewtopic.tpl');

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

Неактивен

#12 2012.02.18 17:46

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

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

Так видно что класс загрузился.

Код:

1
2
3
<?php
 
var_dump($smarty);

Добавлено спустя   6 минут  33 секунды:
А, шаблон битый. Неправильно что-то написал.
Другой, простой-тестовый, загрузило-показало.

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

Неактивен

#13 2012.02.18 18:03

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

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

Короче массивы с ключами, содержащими пробелы надо писать как обычно, видимо.

Код:

1
{$lang_topic['Quick post']}

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

Неактивен

#14 2012.02.18 18:56

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

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

Ну сейчас совсем другое дело. Вживую собирать (смотреть на результат) гораздо приятнее smile
Хоть видно, что вроде получается.

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

Неактивен

#15 2012.02.18 19:33

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

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

Я вот подумал, зачем я тогда время трачу на обработку этих $cur_post['edit'] -> $cur_post.edit
Может как есть оставлять?

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

Неактивен

#16 2012.02.18 21:03

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

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

За сегодня.
Ошибок в компиляции нет.
Пропустил некоторые функции типа антиспам, счетчик сообщений, сигнатура итд.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
{include file='header.tpl'}
<div class="con">
    <a href="index.php">{$lang_common.Index}</a> / <a href="viewforum.php?id={$cur_topic.forum_id}">{$cur_topic.forum_name}</a> / {$cur_topic.subject}
</div>
 
{foreach from=$posts item=cur_post}
<table class="msg2">
    <tr>
        <td>
            <div id="p{$cur_post.id}">
                <a href="viewtopic.php?pid={$cur_post.id}#p{$cur_post.id}">#{$start_from + $post_count}</a><br/>
                {$cur_post.posted|date_format:"%d/%m/%y %H:%I:%S"}<br/>
                <strong>
                    <!-- Name -->
                    {if $cur_post.poster_id 1}
                        <a href="profile.php?id={$cur_post.poster_id}">{$cur_post.username}</a>
                    {else}
                        {$cur_post.username}
                    {/if}
                    {if $cur_post.poster_id 1}                        
                        {if $pun_config.o_show_post_karma == || $pun_user.g_id $smarty.const.PUN_GUEST}
                            {if $pun_user.is_guest || $cur_post.karma[1]}
                                {$cur_post.karma[0]}
                            {else}
                                (<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a>
                                {$cur_post.karma[0]}
                                <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>)
                            {/if}
                        {/if}
                    {/if}
                </strong>
                {if $cur_post.poster_id && $cur_post.is_online == $cur_post.poster_id}
                <b>On</b>
                {else}
                Off
                {/if}
            </div>
        </td>
        {if $cur_post.poster_id && ($pun_config.o_avatars == && $cur_post.use_avatar == && $pun_user.show_avatars)}
        <td>
            <img src="../{$pun_config['o_avatars_dir']}/{$cur_post.poster_id}.gif" alt="Avatar" />
        </td>
        {/if}
    </tr>
</table>
<table class="msg">
    <tr>
        <td>{$cur_post.message}</td>
    </tr>
    <tr>
        <td>
            <!-- Antispam missing -->
            {if $cur_post.edited}
                <div>
                    <em>{$lang_topic['Last edit']} {$cur_post.edited_by} ({$cur_post.edited|date_format:"%d/%m/%y %H:%I:%S"})</em>
                </div>
            {/if}
            
            {if $signature}
            <div>
                <hr />{$signature}
            </div>
            {/if}
        </td>
    </tr>
</table>
<div class="con">
{if ! $is_admmod}
    {if ! $cur_topic.closed}
        {if $cur_post.poster_id == $pun_user.id}
            {if (($start_from $post_count) == && $pun_user.g_delete_topics == 1) || (($start_from $post_count) > && $pun_user.g_delete_posts == 1)}
            <a href="delete.php?id={$cur_post.id}">{$lang_topic.Delete}</a>
            {/if}
 
            {if $pun_user.g_edit_posts == 1}
            <a href="edit.php?id={$cur_post.id}">{$lang_topic.Edit}</a>
            {/if}
        {/if}
        
        {if (! $cur_topic.post_replies && $pun_user.g_post_replies == 1) || $cur_topic.post_replies == 1}
        <a href="post.php?tid={$id}&amp;qid={$cur_post.id}">{$lang_topic['Post reply']}</a>
        {/if}
    {/if}
{else}
    <a href="delete.php?id={$cur_post.id}">{$lang_topic.Delete}</a><br/>
    <a href="edit.php?id={$cur_post.id}">{$lang_topic.Edit}</a><br/>
    <a href="post.php?tid={$id}&amp;qid={$cur_post.id}">{$lang_topic['Post reply']}</a>
{/if}
</div>
{/foreach}
 
<class="con">{$paging_links}</p>
 
{if $pun_user.g_post_replies}
<div class="blocktable">
    <strong><class="in" href="post.php?tid={$id}">{$lang_topic['Post reply']}</a></strong>
</div>
{/if}
 
{if $quickpost}
<div>
    <strong>{$lang_topic['Quick post']}</strong>
</div>
 
<div class="input">
    <form method="post" action="post.php?tid={$id}">
    <div>
        <fieldset>
        <legend>{$lang_common['Write message legend']}</legend>
        
        {if $pun_config.o_antiflood}
            <input type="hidden" name="form_t" value="{$smarty.server.REQUEST_TIME}/>
            <input type="hidden" name="form_sent" value="1" />
            <input type="hidden" name="form_user" value="{if ! $pun_user.is_guest}{$pun_user.username}{else}Guest{/if}" />
        {/if}
        <!-- +Guest name -->
        {if $pun_user.is_guest}
            {$lang_common.Username}<br/>
            <input type="text" name="req_username" tabindex="1" /><br/>
        {/if}
        <!-- -Guest name -->
        <textarea name="req_message" rows="4" cols="24" tabindex="1"></textarea><br/>
        {if $is_admmod}
            <input type="checkbox" name="merge" value="1" checked="checked" /> {$lang_post['Merge posts']}
        {/if}
        </fieldset><br/>
        <input type="submit" name="submit" tabindex="2" value="{$lang_common.Submit}accesskey="s" />
    </div>
    </form>
</div>
{/if}
{include file='footer.tpl'}

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

Неактивен

#17 2012.02.18 23:20

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

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

tipsun, а ты откуда форум брал-то...? что-то у меня подозрение что ты его не из свн брал?

Неактивен

#18 2012.02.18 23:21

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

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

Нет. На свн ссылки нет. Я отсюда (вапинет-скрипты) взял.
Добавлено спустя   1 минуту  13 секунд:
Я вообще думал присоединиться туда, но чет не разобрался как.

Неактивен

#19 2012.02.18 23:25

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

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

tipsun, ох блин... придется тебе переписывать код..)
давай присоединяйся к командной разработке в свн.
Добавлено спустя    55 секунд:
ссылка на репозиторий тут в 1 посте http://wapinet.ru/forum/viewtopic.php?id=69

Неактивен

#20 2012.02.19 11:00

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

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

$pun_user.g_id - такой синтаксис ведь не обязателен?
$pun_user['g_id'] - можно же как обычно?

Отредактировано tipsun (2012.02.19 11:01)

Неактивен

#21 2012.02.19 11:36

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

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

на сколько я помню, желателен именно $pun_user.g_id

Неактивен

#22 2012.02.19 11:41

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

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

Ок. Но с пробелами ключи придется писать так: $lang_pack['tro lolo']

Отредактировано tipsun (2012.02.19 11:41)

Неактивен

#23 2012.02.19 12:35

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

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

погуглил. действительно частая проблема.
реашают заданием временной переменной в шаблоне.

Код:

1
2
{assign var=index value="tro lolo"}
$lang_pack.$index

Неактивен

#24 2012.02.19 12:45

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

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

Ок. Спс.

Неактивен

#25 2012.02.19 13:50

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

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

Скачал форум.
Добавлено спустя   4 минуты  13 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    if ($cur_post['poster_id'] > 1) {
        if ($pun_config['o_avatars'] == && $cur_post['use_avatar'] == && $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 '';
        }
    }

Код:

1
2
3
4
5
<!-- +Avatar -->
{if $cur_post.poster_id > 1 and $pun_config.o_avatars == 1 && $cur_post.use_avatar == 1 && $pun_user.show_avatars}
<img src="../{$pun_config.o_avatars_dir}/{$cur_post.poster_id}.gif" alt="*" />
{/if}
<!-- -Avatar -->

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

Неактивен

#26 2012.02.19 16:53

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

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

Фух. Там только интимные места остались. big_smile

Неактивен

#27 2012.02.19 16:57

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

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

расскажи вообще про структуру, как ты смарти прикручиваешь

Неактивен

#28 2012.02.19 17:56

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

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

Я пока просто шаблоны делаю.
Я только вчера со smarty познакомился, а тут уже структура итд smile

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

Неактивен

#29 2012.02.20 13:52

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

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

Gemorroj, Если я выложу код на SVN, то могу случайно что-то заменить? После чего невозможно будет это восстановить?

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

Неактивен

#30 2012.02.20 13:54

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

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

можно откатить будет. но сейчас у тебя нет прав на заливку кода в свн. только на скачивание.
расскажи про архитектуру, как ты прикручиваешь смарти.

Неактивен

#31 2012.02.20 14:00

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

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

В архиве все.


Вложения

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

Неактивен

#32 2012.02.20 15:19

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

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

эм нет. в папке include/template есть уже несколько шаблонов, нужно развивать их там дальше.
сам Smarty тоже стоит положить в includes. themes положить в include/template

Неактивен

#33 2012.02.20 15:46

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

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

Это получится так типа:

- include/template/themes/THEME_NAME/templates/TPL_NAME.tpl
- include/template/themes/THEME_NAME/compiled/~
- include/template/themes/THEME_NAME/cache/~
- include/template/themes/THEME_NAME/configs/~
- include/template/themes/THEME_NAME/style.css

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

Неактивен

#34 2012.02.20 15:48

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

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

еще даже можно, наверн в themes 2 подпапки добавить wap и web и в них ложить темы для того и другого отдельно

Неактивен

#35 2012.02.20 15:50

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

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

Ок.
Я в dcms видел, что они просто префикс добавляли: "wap_", "pda_", "web_".
Поэтому думал, может так и сделать.
Добавлено спустя   6 минут  26 секунд:
Еще надо будет в верстке указывать (через переменную можно):

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
$smarty->template_dir PUN_ROOT 'include/template/themes/wap/' $pun_user['style_wap'] . '/tpls/';
$smarty->compile_dir  PUN_ROOT 'include/template/themes/wap/' $pun_user['style_wap'] . '/compiled/';
$smarty->config_dir   PUN_ROOT 'include/template/themes/wap/' $pun_user['style_wap'] . '/configs/';
$smarty->cache_dir    PUN_ROOT 'include/template/themes/wap/' $pun_user['style_wap'] . '/cache/';
 
/*
$smarty->template_dir = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/tpls/';
$smarty->compile_dir  = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/compiled/';
$smarty->config_dir   = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/configs/';
$smarty->cache_dir    = PUN_ROOT . 'include/template/themes/' . $pun_user['style_wap'] . '/cache/';
*/
 
//<!-- +TEMPLATE -->
    <head>
        <title>{$page_title|escape}</title>
        <link rel="stylesheet" type="text/css" href="/include/template/themes/wap/{$pun_user.style_wap}/style.css" />
        //<!-- <link rel="stylesheet" type="text/css" href="/include/template/themes/{$pun_user.style_wap}/style.css" /> -->
    </head>
//<!-- -TEMPLATE -->

Отредактировано tipsun (2012.02.20 16:03)

Неактивен

#36 2012.02.20 16:18

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

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

А если включить мозги, то так можно:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
//без слеша впереди, потом можно добавить в "подключении" css.
define('THEME_DIR''include/template/themes/wap/' $pun_user['style_wap'] . '/');
 
$smarty->template_dir PUN_ROOT THEME_DIR '/tpls/';
$smarty->compile_dir  PUN_ROOT THEME_DIR '/compiled/';
$smarty->config_dir   PUN_ROOT THEME_DIR '/configs/';
$smarty->cache_dir    PUN_ROOT THEME_DIR '/cache/';
 
/* HTML
<link rel="stylesheet" type="text/css" href="/{$smarty.const.THEME_DIR}/style.css" />
*/

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

Неактивен

#37 2012.02.20 16:45

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

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
 
//Пост должен содержать типа такого.
$cur_post['karma']['val'] = 'integer karma';
 
        if ($pun_config['o_show_post_karma'] == || $pun_user['g_id'] < PUN_GUEST) {
            
            $q $db->fetch_row($db->query('
                SELECT COUNT(1),
                (SELECT COUNT(1) FROM `' $db->prefix 'karma` WHERE `vote` = "-1" AND `to` = ' $cur_post['poster_id'] . ')
                FROM `' $db->prefix 'karma`
                WHERE `vote` = "1"
                AND `to` = ' $cur_post['poster_id']
            ));
 
            $karma['plus'] = intval($q[0]);
            $karma['minus'] = intval($q[1]);
            $karma['karma'] = $karma['plus'] - $karma['minus'];
            unset($q);
 
            if ($pun_user['is_guest']) {
                $karma ' (' $karma['karma'] . ')';
            } else if ($db->num_rows($db->query('SELECT 1 FROM `' $db->prefix 'karma` WHERE `id`=' $pun_user['id'] . ' AND `to`=' $cur_post['poster_id'] . ' LIMIT 1'))) {
                $karma ' (' $karma['karma'] . ')';
            } else {
                $karma ' (' $karma['karma'] . ') <a href="karma.php?to=' $cur_post['poster_id'] . '&amp;vote=1&amp;pid=' $cur_post['id'] . '">+</a>/<a href="karma.php?to=' $cur_post['poster_id'] . '&amp;vote=-1&amp;pid=' $cur_post['id'] . '">-</a>';
            }
        }
 
    //Template
    //<!-- +Karma -->
    {if $cur_post.karma.val and $pun_config.o_show_post_karma == || $pun_user.g_id $smarty.const.PUN_GUEST}
        &#160;({$cur_post.karma.val})
        {if ! $pun_user.is_guest}
            &#160;<a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>/<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a>
        {/if}
    {/if}
    //<!-- -Karma -->

Отредактировано tipsun (2012.02.20 16:52)

Неактивен

#38 2012.02.20 16:57

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

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

Нет, надо было оставить "used".

$cur_post['karma']['val'] - значение кармы
$cur_post['karma']['used'] - уже ставил этому пользователю, если ставил, то задать true.

Вот короче:

Код:

1
2
3
4
5
6
7
8
9
//Template
//<!-- +Karma -->
{if $pun_config.o_show_post_karma == 1 || $pun_user.g_id < $smarty.const.PUN_GUEST}
 ({$cur_post.karma.val})
{if ! $pun_user.is_guest and ! $cur_post.karma.used}
 <a href="karma.php?to={$cur_post.poster_id}&amp;vote=1&amp;pid={$cur_post.id}">+</a>/<a href="karma.php?to={$cur_post.poster_id}&amp;vote=-1&amp;pid={$cur_post.id}">-</a>
{/if}
{/if}
//<!-- -Karma -->

Отредактировано tipsun (2012.02.20 17:17)

Неактивен

#39 2012.02.20 17:08

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

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

Сейчас еще вытащу все assign с цикла шаблона big_smile Я сначала даже и не подумал.
Добавлено спустя   6 минут  30 секунд:
Осталось: карма, аватарка и еще

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// Can we or can we not post replies?
if (!$cur_topic['closed']) {
    if ((!$cur_topic['post_replies'] && ($pun_user['g_post_replies'] == || $pun_user['g_post_replies'] == 2)) || $cur_topic['post_replies'] == || $is_admmod) {
        $post_link '<a href="post.php?tid='.$id.'">'.$lang_topic['Post reply'].'</a>';
    } else {
        $post_link '&#160;';
    }
} else {
    $post_link $lang_topic['Topic closed'];
 
    if ($is_admmod) {
        $post_link .= ' / <a href="post.php?tid='.$id.'">'.$lang_topic['Post reply'].'</a>';
    }
}
 
 
if (!$pun_user['is_guest'] && $pun_config['o_subscriptions'] == 1) {
    if ($cur_topic['is_subscribed']) {
        // I apologize for the variable naming here. It's a mix of subscription and action I guess :-)
        $subscraction '<div class="con">'.$lang_topic['Is subscribed'].' - <a href="misc.php?unsubscribe='.$id.'">'.$lang_topic['Unsubscribe'].'</a></div>';
    } else {
        $subscraction '<div class="con"><a href="misc.php?subscribe='.$id.'">'.$lang_topic['Subscribe'].'</a></div>';
    }
} else {
    $subscraction null;
}
 
 
    // Switch the background color for every message.
    $bg_switch = !$bg_switch;
    $vtbg = ($bg_switch) ? ' roweven' ' rowodd';
 
 
    // Perform the main parsing of the message (BBCode, smilies, censor words etc)
    $cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies'], $cur_post['id']);
 
    // Do signature parsing/caching
    if ($cur_post['signature'] && $pun_user['show_sig']) {
        if (isset($signature_cache[$cur_post['poster_id']])) {
            $signature $signature_cache[$cur_post['poster_id']];
        } else {
            $signature parse_signature($cur_post['signature']);
            $signature_cache[$cur_post['poster_id']] = $signature;
        }
    }
 
 
    $save_attachments $attachments;
    $attachments array_filter($attachments'filter_attachments_of_post');
    if ($attachments) {
        include PUN_ROOT.'include/attach/wap_view_attachments.php';
    }
    $attachments $save_attachments;
    
    if ($is_admmod) {
        if (isset($cur_post['spam_id'])) {
            include_once PUN_ROOT 'lang/' $pun_user['language'] . '/misc.php';
            echo '<br/>'.$lang_misc['Antispam pattern'].' - '.pun_htmlspecialchars($cur_post['pattern']).'<br /><a href="./antispam_misc.php?action=allow&amp;id='.$cur_post['spam_id'].'">'.$lang_misc['Antispam tread'].'</a> | <a href="./antispam_misc.php?action=deny&amp;id='.$cur_post['spam_id'].'">'.$lang_misc['Antispam del'].'</a><br />';
        }
    }
 
 
if ($cur_post['signature'] && $pun_user['show_sig']) {
        if (isset($signature_cache[$cur_post['poster_id']])) {
            $signature $signature_cache[$cur_post['poster_id']];
        } else {
            $signature parse_signature($cur_post['signature']);
            $signature_cache[$cur_post['poster_id']] = $signature;
        }
    }

Отредактировано tipsun (2012.02.20 17:25)

Неактивен

#40 2012.02.20 17:38

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

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

Пойду отдыхать, а то глаза уже болят...
Добавлено спустя   8 минут  41 секунду:

tipsun написал:

А если включить мозги, то так можно:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
//без слеша впереди, потом можно добавить в "подключении" css.
define('THEME_DIR''include/template/themes/wap/' $pun_user['style_wap'] . '/');
 
$smarty->template_dir PUN_ROOT THEME_DIR '/tpls/';
$smarty->compile_dir  PUN_ROOT THEME_DIR '/compiled/';
$smarty->config_dir   PUN_ROOT THEME_DIR '/configs/';
$smarty->cache_dir    PUN_ROOT THEME_DIR '/cache/';
 
/* HTML
<link rel="stylesheet" type="text/css" href="/{$smarty.const.THEME_DIR}/style.css" />
*/

А если этими мозгами еще подумать, то:

Код:

1
2
3
4
5
6
7
8
9
10
<?php
define('THEME_DIR'PUN_ROOT 'include/template/themes/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/';
//
//<link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}/style.css" />
//

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

Неактивен

#41 2012.02.20 21:37

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

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

Где-то я видел регистрация_функции() в смарти.
Еще чего подумал.
Ну допустим есть у нас некоторые исключения, при которых надо перенаправить пользователя, или оборвать выполнение скрипта.
Если в самом начале запускать смарти, то оно как бы лишний раз запускается.
А если все будет нормально, + кеш-смарти. То наоборот выигрышный запуск в самом начале, не?
Правда там еще этот смарти проверить должен, изменились ли данные или нет, чтоб выдать кеш-шаблон или вновь компилируемый, не?
Или при компиляции смарти приводит шаблон в нативный вид?
* А из нативного в статичный уже.

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

Неактивен

#42 2012.02.20 22:27

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

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

tipsun, ну диагноз ясен.
Так же наблюдается синдром Флудераста.
Принимайте google 3 раза в день. И все пройдет. big_smile

Отредактировано tipsun (2012.02.20 22:30)

Неактивен

#43 2012.02.20 22:49

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

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

Там она все параметры в массив складывает, как я понял.
Это значит саму функцию тоже менять придется?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
$smarty->register_function("date_now""print_current_date");
 
function print_current_date($params)
{
  if(empty($params['format'])) {
    $format "%b %e, %Y";
  } else {
    $format $params['format'];
    return strftime($format,time());
  }
}
 
// теперь вы можете использовать ее в Smarty чтобы вывести текущую дату: {date_now}
// или  {date_now format="%Y/%m/%d"} чтобы задать формат.

Отредактировано tipsun (2012.02.20 22:50)

Неактивен

#44 2012.02.21 11:47

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

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

tipsun, про скорость пока не задумывайся, доделаем.
на счет твоей функции, у смарти уже вроде есть готовые функции для работы с датой. почитай мануал по этому поводу. и желательно по 3 версии

Неактивен

#45 2012.02.21 15:29

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

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

Я не про дату, про дату я читал smile

Код:

1
2
3
4
5
{$var|date_format:'%d/%m/%y %H:%I:%S'}
 
еще про default посмотрел (когда переменная не содержит значения, то выводится по умол.)
Ну, по ситуации, заглядываю в мануал, бывает =)
{$var|default:'no value'}

. . . .

Я про $smarty->register_function();

. . . .

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

Неактивен

#46 2012.02.21 16:14

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

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

я по моему такой штукой даже и не пользовался.

Неактивен

#47 2012.02.21 21:44

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

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

А как быть с пользовательскими функциями и инклудами?

Неактивен

#48 2012.02.21 22:51

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

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

Если я ничего не упустил, то остался в файле wap/viewtopic.php только этот код: #39.
Там вроде случайно повторился.
Еще посмотрел стандартные шаблоны: include/template/
Там как бы совсем общее.
Ну я несколько раз смотрел, пытался собрать верх header.tpl и низ footer.tpl
Там например была ссылка на rss новости, указание кодировки, я сразу подставлял то, что по default идет из массива-источника.
Есть немного, но в правильности не уверен, еще раз буду смотреть, искать что упустил.

Отредактировано tipsun (2012.02.21 22:56)

Неактивен

#49 2012.02.21 22:55

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

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

главное чтобы архитектура правильно выстроена была)
Добавлено спустя   1 минуту  6 секунд:
кстати, сегодня Smarty 3.1.8 вышел

Неактивен

#50 2012.02.21 23:03

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

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

Надо наверно все-таки мануал 3 на англ. смотреть и переводить. Пользоваться 3, а мануал за 2 смотреть - не логично smile
Добавлено спустя   5 минут  9 секунд:

tipsun написал:

Там как бы совсем общее.

И там для вап только wap_main.tpl
Остальное для веб вроде.
Добавлено спустя   7 минут  57 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset={$lang_common.lang_encoding}" />
<title>{$page_title|escape}</title>
<link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}/style.css" />
<link rel="alternate" type="application/rss+xml" title="{$pun_config.o_board_title}" href="{$smarty.const.PUN_ROOT}rss.xml" />
</head>
<body>
<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>
<div class="hd_bott">
{$pun_config.o_board_desc}
</div>
<div class="in">
<div>
-<a href="/rss.xml">RSS</a>
<a href="{$smarty.const.PUN_ROOT}rss.xml">RSS</a>
</div>
</div>
<div class="incqbox">
{$lang_common.Announcement}
</div>
<div class="msg">
{$pun_config.o_announcement_message}
</div>

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

Неактивен

#51 2012.02.21 23:25

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

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

Ну это просто набросок. Там еще условия итд.

Неактивен

#52 2012.02.22 00:15

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
 
//<!-- TPL -->
/*<?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" />
        <meta http-equiv="Content-Type" content="text/html; charset={$lang_common.lang_encoding}/>
        <title>{$page_title|escape}</title>
        <link rel="stylesheet" type="text/css" href="{$smarty.const.THEME_DIR}style.css" />
        <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'}
            <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}
            <div class="hd_bott">
                {$pun_config.o_board_desc}
            </div>
            {/if}
            
            {if $pun_user.is_guest}
                
                {assign var='Not_logged_in' value='Not logged in'}
                
                <div class="con">
                    {$lang_common.$Not_logged_in}
                </div>
            {/if}
            
            {if $pun_user.g_id $smarty.const.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)) {
                    $tpl_temp .= '<div class="con"><a href="' PUN_ROOT 'admin_reports.php">' $lang_admin['New reports'] . '</a></div>';
                }
                *}
                
                {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}
        {/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}
            <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}

Добавлено спустя   8 минут  48 секунд:
Вроде есть в самой смарти: $smarty.server.PHP_SELF

Отредактировано tipsun (2012.02.22 00:17)

Неактивен

#53 2012.02.22 00:36

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

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

Можно задать $basename с логики, в принципе. baseName($_SERVER['PHP_SELF']);
Еще там если определена переменная PUN_HELP то грузиться шаблон include/template/help.tpl - я пока пропустил.
И еще там были интимные места, я пропустил.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
// Load the template
if (defined('PUN_HELP')) {
    $tpl_main file_get_contents(PUN_ROOT 'include/template/help.tpl');
} else {
    $tpl_main file_get_contents(PUN_ROOT 'include/template/wap_main.tpl');
}
 
 
// START SUBST - <pun_include "*">
while (preg_match('#<pun_include "([^/\\\\]*?)\.(php[45]?|inc|html?|txt)">#'$tpl_main$cur_include)) {
    if (!file_exists(PUN_ROOT 'include/user/' $cur_include[1] . '.' $cur_include[2])) {
        error('Unable to process user include ' htmlspecialchars($cur_include[0]) . ' from template main.tpl. There is no such file in folder /include/user/'__FILE____LINE__);
    }
 
    ob_start();
    include_once PUN_ROOT 'include/user/' $cur_include[1] . '.' $cur_include[2];
    $tpl_temp ob_get_contents();
    $tpl_main str_replace($cur_include[0], $tpl_temp$tpl_main);
    ob_end_clean();
}
 
 
// END SUBST - <body>
if (isset($hint_box)) {
    $tpl_temp $hint_box;
} else {
    $tpl_temp null;
}
 
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)) {
        $tpl_temp .= '<div class="con"><a href="' PUN_ROOT 'admin_reports.php">' $lang_admin['New reports'] . '</a></div>';
    }
 
    //это условие не пропустил + в начале if ($pun_user['g_id'] < PUN_GUEST) {
    if ($pun_config['o_maintenance'] == 1) {
        $tpl_temp .= '<div class="con"><a href="' PUN_ROOT 'admin_options.php#maintenance">' $lang_admin['maintenance'] . '</a></div>';
    }
}
// PMS MOD BEGIN
require PUN_ROOT 'include/pms/wap_header_new_messages.php';
// PMS MOD END

Отредактировано tipsun (2012.02.22 00:44)

Неактивен

#54 2012.02.22 00:56

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

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

Я спать валю. smile

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
 
{assign var='Moderate_forum' value='Moderate forum'}
{assign var='Delete_posts'   value='Delete posts'}
{assign var='Move_topic'     value='Move topic'}
{assign var='Open_topic'     value='Open topic'}
{assign var='Close_topic'    value='Close topic'}
{assign var='Unstick_topic'  value='Unstick topic'}
{assign var='Stick_topic'    value='Stick topic'}
 
{assign var='Link_separator_m' value='Link separator_m'}
 
{*
if ($basename == 'profile.php' || $basename == 'search.php' || $basename == 'userlist.php' || $basename == 'uploads.php' || $basename == 'message_list.php' || $basename == 'message_send.php' || $basename == 'help.php' || $basename == 'misc.php' || $basename == 'filemap.php' || $basename == 'karma.php') {
    echo '<div class="navlinks">'.generate_wap_navlinks().'</div>';
}
 
} else if ($footer_style == 'viewforum' || $footer_style == 'viewtopic') {
    // Display the "Jump to" drop list
    if ($pun_config['o_quickjump'] == 1) {
        // Load cached quickjump // included quickjump
        @include PUN_ROOT 'cache/cache_wap_quickjump_' $forum_id '.php';
        if (!defined('PUN_QJ_LOADED')) {
            include PUN_ROOT 'include/cache.php';
            generate_wap_quickjump_cache($forum_id);
            include PUN_ROOT.'cache/cache_wap_quickjump_' $forum_id '.php';
        }
    }
 
*}
 
{if $is_admmod}
    {if $footer_style == 'viewforum'}
        <div class="con">
            <class="but" href="moderate.php?fid={$forum_id}&amp;p={$p}">{$lang_common.$Moderate_forum}</a>
        </div>
    {elseif $footer_style == 'viewtopic'}
        <div class="con">
            <span class="sub">
                <a href="moderate.php?fid={$forum_id}&amp;tid={$id}&amp;p={$p}">{$lang_common.$Delete_posts}</a>{$lang_topic.$Link_separator_m}
                <a href="moderate.php?fid={$forum_id}&amp;move_topics={$id}">{$lang_common.$Move_topic}</a>
            {if $cur_topic.closed == 1}
                {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;open={$id}">{$lang_common.$Open_topic}</a>
            {else}
                {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;close={$id}">{$lang_common.$Close_topic}</a>
            {/if}
 
            {if $cur_topic.sticky == 1}
                {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;unstick={$id}">{$lang_common.$Unstick_topic}</a>
            {else}
                {$lang_topic.$Link_separator_m}<a href="moderate.php?fid={$forum_id}&amp;stick={$id}">{$lang_common.$Stick_topic}</a>
            {/if}
            </span>
        </div>
    {/if}
{/if}
<div class="foot">
    <a href="/">{$smarty.server.HTTP_HOST}</a><br/>
    <class="red" href="{$smarty.const.PUN_ROOT}">WEB</a>
</div>
 
<div class="copy">
    <a href="http://wapinet.ru/forum/wap/">PunBB Mod Gemorroj</a><br/>
    <span class="red">{sprintf('%.3f'microtime(true) - $pun_start)} s</span>
</div>
 
</body>
</html>

Неактивен

#55 2012.02.22 15:12

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

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

Еще про подпись юзера забыл.

Неактивен

#56 2012.02.22 16:19

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

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

Исключительно слово "лес" полностью описывает ситуацию, сложившуюся в данном коде.
Куда бы ты не ходил, возвращаешься на тоже место.
generate_wap_navlinks()

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
 
    // Index and Userlist should always be displayed
    $links['userlist.php'] = $lang_common['User list'];
 
    if ($pun_config['o_rules'] == 1) {
        $links['misc.php?action=rules'] = $lang_common['Rules'];
    }
 
    if ($pun_user['is_guest']) {
        if ($pun_user['g_search'] == 1) {
            $links['search.php'] = $lang_common['Search'];
        }
 
        if ($pun_config['uploads_conf'][$pun_user['group_id']]) {
            $links['uploads.php'] = $lang_common['Uploader'];
        }
 
        $info $lang_common['Not logged in'];
    } else {
        if ($pun_user['g_id'] > PUN_MOD) {
            if ($pun_user['g_search'] == 1) {
                $links['search.php'] = $lang_common['Search'];
            }
 
            if ($pun_config['uploads_conf'][$pun_user['group_id']]) {
                $links['uploads.php'] = $lang_common['Uploader'];
            }
 
            $links['filemap.php'] = $lang_common['Attachments'];
        } else {
            $links['search.php'] = $lang_common['Search'];
            $links['uploads.php'] = $lang_common['Uploader'];
            $links['filemap.php'] = $lang_common['Attachments'];            
        }
        // PMS MOD END
    }

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
//Я не разобрался, сделал так.
//<!-- TPL -->
    <div class="navlinks">
        {* // Index and Userlist should always be displayed *}
        <a href="userlist.php">{$lang_common.$User_list}</a>
        
        {if $pun_config.o_rules == 1}
            {$lang_topic.$Link_separator_m}<a href="misc.php?action=rules">{$lang_common.Rules}</a>
        {/if}
        
        {if $pun_user.g_search == and $pun_user.g_id $smarty.const.PUN_MOD}
           {$lang_topic.$Link_separator_m}<a href="search.php">{$lang_common.Search}</a>
        {/if}
        
        {if ! $pun_user.is_guest}
            {$lang_topic.$Link_separator_m}<a href="uploads.php">{$lang_common.Uploader}</a>
            {$lang_topic.$Link_separator_m}<a href="filemap.php">{$lang_common.Attachments}</a>
        {/if}
    </div>

Отредактировано tipsun (2012.02.22 16:30)

Неактивен

#57 2012.02.22 16:31

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

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

Вид: "Пользователи |Поиск |Загрузки |Вложения "
Если так не нравится, можно переделать как было (в форме)

Отредактировано tipsun (2012.02.22 16:32)

Неактивен

#58 2012.02.22 21:24

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

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

Мдэ sad $att_info
И таких моментов не мало.

Код:

1
2
3
4
5
6
<?php
        if ($can_download) {
            echo $check '<a href="' $pun_config['o_base_url'] . '/download.php?aid=' $aid '">' $title '</a> ' $att_info;
        } else {
            echo '<span class="red">' $title '</span> ' $att_info;
        }

Неактивен

#59 2012.02.22 22:50

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

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

Чет я не понял, как система вложений работает.
Вроде все прозрачно. Но не пашет, когда //$attachments = $save_attachments.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
//TEMPLATE
 
{if $attachments}
<div class="attach_list">
    <strong>{$lang_fu.Attachments}</strong><br/>
    {* foreach from=$attachments item=attachment *}
 
        {if $can_download}
            
            {if $basename == 'edit.php'}
                <input type="checkbox" name="delete_image[]" value="{$attachment.id}/> {$lang_fu.$Mark_to_Delete}
            {/if}
            
            <a href="{$pun_config.o_base_url}/download.php?aid={$attachment.id}">{$attachment.filename|escape}</a>
        {else}
            <span class="red">{$attachment.filename|escape}</span>
        {/if}
        
        {if $attachment.size >= 1048576}
            {round($attachment.size 10485760)} mb
        {else}
            {round($attachment.size 10240)} kb
        {/if}
        
        {if 'image' == strTok($attachment.mime'/')}
            , {strtok('/')} {$attachment.image_dim}
        {/if}
        [<strong>{$lang_fu.Downloads}: {$attachment.downloads}</strong>]<br/>
    {* /foreach *}
 
</div>
{/if}

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

Неактивен

#60 2012.02.22 23:07

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

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

wap/viewtopic.php
include 'include/attach/fetch.php';
вроде как инфа должна находиться в $attachments
еще там нашел в файле
include 'include/file_upload.php'; - вроде
есть функция в самом конце, чет типа attach_filter_of_post
...
Или это все вообще не с аттачмента берется, а с самого cur_post тогда, что-ли может.

Неактивен

#61 2012.02.22 23:29

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

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

А вообще, потихоньку, чище становится там smile

Неактивен

#62 2012.02.22 23:59

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

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

А епт. Я же файл свой переименовал, вот и не работало.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
//dir: 'include/attach/fetch.php'
 
// there are different sources to include fetch.php
switch (baseName($_SERVER['PHP_SELF'])) {
    case 'viewforum.php':
        // not implemented yet
        break;
  //case 'mod.viewtopic.php':
    case 'viewtopic.php':
        $att_sql 'SELECT * FROM ' $db->prefix 'attachments WHERE topic_id=' intval($id) . ' AND post_id in (' implode(','$pids) . ')';
        break;
    case 'edit.php':
        $att_sql 'SELECT * FROM ' $db->prefix 'attachments WHERE post_id=' intval($id);
        break;
}

Отредактировано tipsun (2012.02.23 00:00)

Неактивен

#63 2012.02.23 00:09

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

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

я не помню кооод!) давай ссылки на код в свн. типа http://code.google.com/p/punbb-mod/sour … ic.php#273

Неактивен

#64 2012.02.23 00:27

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

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

А, извиняюсь.
Да я больше для себя болтаю. Сам пишу, сам читаю big_smile
Вот еще че, сейчас ссылки дам.
Добавлено спустя   2 минуты  51 секунду:
http://code.google.com/p/punbb-mod/sour … tch.php#37

Вот то, что я с файла-функции вытащил и в шаблон засунул
http://code.google.com/p/punbb-mod/sour … hments.php

Я бы попробовал сделать так:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
 
$attachments[$attachment['post_id']][] = $attachment;
 
//Ибо... сейчас напишу
 
{if $attachments[$cur_post.id]}
<div class="attach_list">
    <strong>{$lang_fu.Attachments}</strong><br/>
    {foreach from=$attachments[$cur_post.iditem=attachment}
 
        {if $can_download}
            
            {if $basename == 'edit.php'}
                <input type="checkbox" name="delete_image[]" value="{$attachment.id}/> {$lang_fu.$Mark_to_Delete}
            {/if}
            
            <a href="{$pun_config.o_base_url}/download.php?aid={$attachment.id}">{$attachment.filename|escape}</a>
        {else}
            <span class="red">{$attachment.filename|escape}</span>
        {/if}
        
        {if $attachment.size >= 1048576}
            {round($attachment.size 10485760)} mb
        {else}
            {round($attachment.size 10240)} kb
        {/if}
        //я позволил себе изменить: preg_match('/^image\/(.*)$/i', $attachment['mime'], $regs)
        {if 'image' == strTok($attachment.mime'/')}
            , {strtok('/')} {$attachment.image_dim}
        {/if}
        [<strong>{$lang_fu.Downloads}: {$attachment.downloads}</strong>]<br/>
    {/foreach}
</div>
{/if}

Добавлено спустя   9 минут  59 секунд:
И у меня вроде все нормально отобразилось.

Отредактировано tipsun (2012.02.23 00:35)

Неактивен

#65 2012.02.23 00:54

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

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

http://code.google.com/p/punbb-mod/sour … ic.php#266

Может так или в шаблоне запускать парсер?
Ну например там может антиспам или чего еще я не прикрутил, может должен работать с исходным текстом

Код:

1
2
3
4
5
6
7
8
9
10
11
<?php
 
$posts $pids = array();
while ($cur_post $db->fetch_assoc($result)) {
    
    $cur_post['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies'], $cur_post['id']);
    
    $posts[] = $cur_post;
    $pids[] = $cur_post['id'];
}
$db->free_result($result);

Добавлено спустя   8 минут  18 секунд:
Эх, наверно зря я переносил условия полностью в шаблон.
Лучше бы оставил, чтоб потом через логику можно было сразу поменять.

Вот пример?

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
$is_admmod = ($pun_user['g_id'] == PUN_ADMIN || ($pun_user['g_id'] == PUN_MOD && array_key_exists($pun_user['username'], $mods_array))) ? true false;
$can_download = (!$cur_topic['file_download'] && $pun_user['g_file_download'] == 1) || $cur_topic['file_download'] == || $is_admmod;
 
$smarty->assign('is_admmod'$is_admmod);
$smarty->assign('can_download'$can_download);
 
{if $is_admmod}
Ololo
{/if}
 
{if $can_download}
Thx :)
{/if}

Отредактировано tipsun (2012.02.23 01:05)

Неактивен

#66 2012.02.23 01:30

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

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

Вот, если будет время + желание то:


Вложения

Отредактировано tipsun (2012.02.23 01:31)

Неактивен

#67 2012.02.23 11:45

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

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

ммм, я что-то не догоняю..
что за attach?
папку themes удали, она там лишняя.

Неактивен

#68 2012.02.23 12:18

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

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

Файл: "include/attach/fetch.php" - извлекает инфу о закрепленных файлах к посту в массив.
Файл: "include/attach/wap_view_attachments.php" - показывает инфу из нашего массива с вложениями в текущем посту.
+ Костыль
Эти файлы инклудились в "wap/viewtopic.php"

Отредактировано tipsun (2012.02.23 12:36)

Неактивен

#69 2012.02.23 13:43

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

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

аа, ясн.
еще, пользуйся Smarty комментами {* коммент *} а не html в шаблонах.

Неактивен

#70 2012.02.23 13:55

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

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

Ok.

Неактивен

#71 2012.02.24 13:38

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

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

Код:

1
2
3
4
5
6
<?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
Сообщений: 2279
Карма: 19
Профиль

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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'] == && $cur_post['use_avatar'] == && $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
Сообщений: 2279
Карма: 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
Сообщений: 2279
Карма: 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
Сообщений: 2279
Карма: 19
Профиль

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?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
Сообщений: 2279
Карма: 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
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

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

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

Неактивен

#78 2012.02.24 23:46

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщений: 2279
Карма: 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
Сообщений: 2279
Карма: 19
Профиль

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

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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
Сообщений: 2279
Карма: 19
Профиль

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?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)

Неактивен

#81 2012.02.25 20:56

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

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

По-моему все эти условия тоже не стоит переносить в шаблон.
Только самое нужное.
Все условия скорее всего надо держать в логике, потом только передать типа:

В шаблоне уже элементарные условия, определяющие показать или нет.

Код:

1
2
3
4
5
6
7
8
9
<?php
 
if (/* условия */) {
$smarty->assign('isset_new_message'true);
}
 
{if $isset_new_message}
<div class="mail">{$check_mail_box}</div>
{/if}

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

Неактивен

#82 2012.02.28 22:59

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

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

» include/pms/wap_header_new_messages.php используется в wap/header.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if (! $pun_user['is_guest'] &&
    $pun_user['g_pm'] == &&
    $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:19)

Неактивен

#83 2012.02.28 23:28

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

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

Может что-то типа такого, или лучше можно сделать.
Или, как в мануале, сделать класс загрузки Smarty
» wap/header.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
if (! 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:36)

Неактивен

#84 2012.02.29 00:58

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

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

а как в мануале? я давненько со смарти не работал. вообще по логике да, нужно делать класс обертку.
типа PunTemplate extends Smarty {}

Неактивен

#85 2012.02.29 10:10

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

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

Неактивен

#86 2012.02.29 12:36

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

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

ну так да, об этом и речь)

Неактивен

#87 2012.02.29 16:13

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

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

Хотя в принципе так тоже удобно запускать Smarty, не?

Код:

1
2
3
4
5
<?php
 
//define('SMARTY', 1);
define('PUN_TEMPLATE'1);
require_once PUN_ROOT 'wap/header.php';

. . . .

Есть такое в footer.php
Как с этим быть я не знаю.
Генерирует файл, который потом инклудится в footer.php.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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']) ? ' &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.02.29 16:23)

Неактивен

#88 2012.02.29 17:54

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

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

tipsun написал:

Хотя в принципе так тоже удобно запускать Smarty, не?

как так? я не понял.
насчет статичного файла - наверное, просто {include file='cache/cache_wap_quickjump_' . $group_id . '.php'} пока делай. $group_id должна быть в шаблоне

Неактивен

#89 2012.02.29 19:38

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

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

Сначала #83 в шапке или где удобно, что обычно в любом случае инклудится, расположить.
Потом вызывать так типа:

Код:

1
2
3
4
<?php
 
define('SMARTY'1);
require_once PUN_ROOT 'wap/header.php';

Короче. Дальше потихоньку пойду.

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

Неактивен

#90 2012.02.29 20:46

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

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

не-не-не, класс прослойка над Smarty должен быть обязательно.

Неактивен

#91 2012.02.29 21:34

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

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

А, ок. Сделаю.

Неактивен

#92 2012.03.01 00:19

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

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

Да что такое, только вроде начал запускаться Smarty, теперь шаблоны не выводятся.
Хотя в них нет ошибок. Без скорлупы или как там, работало. sad
Добавлено спустя   7 минут  42 секунды:

wap/viewtopic.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php define('PUN_ROOT''../');
 
require_once(PUN_ROOT 'include/common.php');
require_once(PUN_ROOT 'include/file_upload.php');
require_once(PUN_ROOT 'lang/' $pun_user['language'] . '/post.php');
//require_once(PUN_ROOT . 'wap/header.php');
//require_once('header.php');
 
require_once(PUN_ROOT 'include/Smarty/Smarty.class.php');
$smarty = new Smarty();
$dir PUN_ROOT 'include/template/wap/' $pun_user['style_wap'] . '/';
$smarty->template_dir $dir 'tpls/';
$smarty->compile_dir  $dir 'compiled/';
$smarty->config_dir   $dir 'configs/';
$smarty->cache_dir    $dir 'cache/';
//$this->caching = true;
$smarty->assign('punDesignDir'$dir);

wap/header.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit(); define('PUN_HEADER'1);
 
require_once(PUN_ROOT 'include/template.php');
$smarty = new Pun_Template(PUN_ROOT 'include/template/wap/' $pun_user['style_wap'] . '/');
 
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)) {
        $conditions['reports'] = true;
    }
}
 
require PUN_ROOT 'include/pms/wap_header_new_messages.php';

include/template.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php if (! defined('PUN')) exit(); define('PUN_TEMPLATE'1);
 
require_once('Smarty/Smarty.class.php');
 
class Pun_Template extends Smarty
{
    public function __construct($dir)
    {
        $this->template_dir $dir 'tpls/';
        $this->compile_dir  $dir 'compiled/';
        $this->config_dir   $dir 'configs/';
        $this->cache_dir    $dir 'cache/';
        
        //$this->caching = true;
        $this->assign('punDesignDir'$dir);
    }
}

Отредактировано tipsun (2012.03.01 00:36)

Неактивен

#93 2012.03.01 00:33

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

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

Без прослойки работает, проверил. Ну шаблон собранный показывает.
Добавлено спустя   1 минуту  27 секунд:
Где-то я туплю, видимо.
Добавлено спустя   6 минут  48 секунд:
Пойду спать.

Отредактировано tipsun (2012.03.01 00:35)

Неактивен

#94 2012.03.02 14:25

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

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

Итак...
С прослойкой так и не разобрался.


Fatal error: Call to a member function createTemplate() on a non-object in L:\home\punbb.mod\www\include\Smarty\sysplugins\smarty_internal_templatebase.php on line 47

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

Неактивен

#95 2012.03.02 14:57

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

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

Pun_Template - так не называй. такое название говорит о том, что этот класс должен быть в папке Pun и файл называться Template.php
какой код вызывается когда ты получаешь эту ошибку?

Неактивен

#96 2012.03.02 15:22

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

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

» #92 - вот там я все показал.
Без прослойки работает.
Хорошо, как назвать тогда? "include_template" = include/template.php

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

Неактивен

#97 2012.03.02 17:50

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

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

класс PunTemplate назови.
файл include/PunTemplate.php

Неактивен

#98 2012.03.02 21:40

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

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

Ой бле! Вот я тормоз.
Метод надо так же как класс назвать, видимо. Сейчас попробую.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
class Smarty_GuestBook extends Smarty {
 
   function Smarty_GuestBook()
   {
 
        // Конструктор класса.
        // Он автоматически вызывается при создании нового экземпляра.
 
        $this->Smarty();
 
        $this->template_dir '/web/www.example.com/guestbook/templates/';
        $this->compile_dir  '/web/www.example.com/guestbook/templates_c/';
        $this->config_dir   '/web/www.example.com/guestbook/configs/';
        $this->cache_dir    '/web/www.example.com/guestbook/cache/';
 
        $this->caching true;
        $this->assign('app_name''Guest Book');
   }
 
}
 
$smarty = new Smarty_GuestBook();

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

Неактивен

#99 2012.03.02 21:46

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

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

нее, это из времен php4. в php5 кошерно коструктор называть __construct

Неактивен

#100 2012.03.02 21:46

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

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

Нет. Вот так получилось норм.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
// include/template.php
if (! defined('PUN')) exit(); define('PUN_TEMPLATE'1);
 
require_once('Smarty/Smarty.class.php');
 
class PunTemplate extends Smarty
{
    function PunTemplate($dir)
    {
        $this->__construct();
        $this->template_dir $dir 'tpls/';
        $this->compile_dir  $dir 'compiled/';
        $this->config_dir   $dir 'configs/';
        $this->cache_dir    $dir 'cache/';
        
        $this->assign('punDesignDir'$dir);
    }
}
 
// wap/header.php
require_once(PUN_ROOT 'include/template.php');
$smarty = new PunTemplate(PUN_ROOT 'include/template/wap/' $pun_user['style_wap'] . '/');
 
// wap/viewtopic.php
require_once(PUN_ROOT 'wap/header.php');

Добавлено спустя   3 минуты :

Gemorroj написал:

нее, это из времен php4. в php5 кошерно коструктор называть __construct

Да. smile
Нет - я говорил сам себе smile
Добавлено спустя   5 минут  35 секунд:
Ладно. Сейчас чуть по коду погуляю. Может че получится.

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

Неактивен

#101 2012.03.02 21:59

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

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

файл назови не template.php, а PunTemplate.php т.е. так же как и класс называется

Неактивен

#102 2012.03.02 22:00

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

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

Хорошо.

Неактивен

#103 2012.03.02 22:00

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

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

и в конструктор передавай только название темы, класс прослойка должен сам понимать какие пути нужно установить основываясь только на названии темы.
Добавлено спустя    30 секунд:
ну и блин конструктор все-таки __construct назови

Неактивен

#104 2012.03.02 22:10

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

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

Если метод PunTemplate переименовать в "__construct", то перестает работать.
Добавлено спустя   3 минуты  3 секунды:
Про пути, сейчас попробую.

Неактивен

#105 2012.03.02 22:33

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

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

tipsun, ты на php4 чтоли сидишь?)

Неактивен

#106 2012.03.02 22:41

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

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

Нет вроде. Денвер же содержит PHP v5.2

Отредактировано tipsun (2012.03.02 22:41)

Неактивен

#107 2012.03.02 22:42

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

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

у денвера есть разные версии

Неактивен

#108 2012.03.02 23:12

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

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

phpVersion() = 5.2.12

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

Неактивен

#109 2012.03.02 23:26

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

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

ну проблема в любом случае не в названии конструктора.

Неактивен

#110 2012.03.03 11:41

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

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

Вроде так должно сработать.
Просто сегодня баловался со своим говноКодом и случайно получилось.

Код:

1
2
3
4
5
6
7
8
9
10
<?php
 
class PunTemplate extends Smarty
{
    function __construct($dir)
    {
        parent::__construct();
        //etс.
    }
}

.
.
Добавлено спустя   4 минуты  24 секунды:
Да, вроде как работает.
А вот с путями чет не разобрался.
.
.

Отредактировано tipsun (2012.03.03 11:47)

Неактивен

#111 2012.03.03 11:48

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

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

аааа, епт. я невнимательно смотрел. ты пытался вызвать родительский конструктор!)
да, так будет корректно.

Неактивен

#112 2012.03.03 11:51

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

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

Я сам не знаю, чего я пытался, но работает big_smile
Добавлено спустя   9 минут  14 секунд:
Вообщем с путями:
1) Надо чтоб смарти шаблоны увидел.
2) Надо чтоб в шаблоне при указании положения CSS, тоже было все норм. Ну если форум не в корне сайта.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
class PunTemplate extends Smarty
{
    function __construct($punDesignName)
    {
        parent::__construct();
        
        //$root = str_replace($_SERVER['DOCUMENT_ROOT'], null, str_replace('\\', '/', dirName(__FILE__))) . '/template/wap/' . $punDesignName . '/';
        
        $punDesignDir dirName(__FILE__) . '/template/wap/' $punDesignName;
        
        $this->template_dir $punDesignDir '/tpls/';
        $this->compile_dir  $punDesignDir '/compiled/';
        $this->config_dir   $punDesignDir '/configs/';
        $this->cache_dir    $punDesignDir '/cache/';
        
        //$this->assign('punDesignDir', $root);
    }
}

Отредактировано tipsun (2012.03.03 12:02)

Неактивен

#113 2012.03.03 12:05

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

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

Можно в самом шаблоне header.tpl указывать: {$smarty.const.PUN_ROOT}{$cssDir}style.css
- где PUN_ROOT задается изначально, в логике.

Отредактировано tipsun (2012.03.03 12:08)

Неактивен

#114 2012.03.03 12:24

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

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

не надо. это работа прослойки.

Неактивен

#115 2012.03.03 12:26

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

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

#112. закомментированное работает, в принципе.
Но у форума есть web и wap версии.

Отредактировано tipsun (2012.03.03 12:28)

Неактивен

#116 2012.03.04 00:07

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

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

Сейчас вот подумал, что условия логики в переменную наверно лучше загонять и только те условия, которые контролируют вывод в шаблоне никуда не денутся.
Начал с header.tpl (еще есть footer.tpl и viewtopic.tpl)
Добавлено спустя   3 минуты  22 секунды:
Вот пример:
Загнал сразу в smarty, т.к. скорее всего больше нигде не используется результат выполнения.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
// include/pms/wap_header_new_messages.php
if (! $pun_user['is_guest'] &&
    $pun_user['g_pm'] == &&
    $pun_config['o_pms_enabled'] &&
    $pun_user['messages_enable'] == 1) {
    
    require_once PUN_ROOT 'lang/' $pun_user['language'] . '/pms.php';
    
    // 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) {
        $smarty->append('conditions', array('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']) {
        $smarty->append('conditions', array('full_inbox' => true));
    }
}
 
// tpl
            {if $conditions.count_new_msgs}
                <div class="info">
                    <a href="message_list.php"> {$lang_pms.$New_messages} ({$conditions.count_new_msgs}) </a>
                </div>
            {/if}

Отредактировано tipsun (2012.03.04 00:12)

Неактивен

#117 2012.03.04 00:36

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

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

ну, тут логика отображения идет, а она должна быть в шаблоне. хотя, тут не принципиально. как проще, так и лучше.

Неактивен

#118 2012.03.04 01:16

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

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

Не могу справиться.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
    // Display the "Jump to" drop list
    if ($pun_config['o_quickjump'] == 1) {
        // Load cached quickjump // included quickjump
        @include PUN_ROOT 'cache/cache_wap_quickjump_' $forum_id '.php';
        if (!defined('PUN_QJ_LOADED')) {
            include PUN_ROOT 'include/cache.php';
            generate_wap_quickjump_cache($forum_id);
            include PUN_ROOT.'cache/cache_wap_quickjump_' $forum_id '.php';
        }
    }

.
.
Добавлено спустя   4 минуты  20 секунд:
Быстрый переход по форумам.

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

Неактивен

#119 2012.03.04 01:29

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

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

Оказывается $forum_id это в файле viewtopic.php есть $id
Добавлено спустя   5 минут  45 секунд:
.
.
Короче. Чет не получается аккуратно в шаблоне разместить. Вот логический костыль smile
wap/footer.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();
 
if ($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/cache.php';
        generate_wap_quickjump_cache($id);
        //include PUN_ROOT.'cache/cache_wap_quickjump_' . $forum_id . '.php';
    }
}

.
.
footer.tpl

Код:

1
2
3
4
5
<?php
 
{if $pun_config.o_quickjump == and $basename == 'viewforum.php' || $basename == 'viewtopic.php'}
    {fetch file="{$smarty.const.PUN_ROOT}cache/cache_wap_quickjump_{$forum_id}.php"}
{/if}

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

Неактивен

#120 2012.03.04 01:52

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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>'));
                        }
                    }
                }
            }
        *}

Неактивен

#121 2012.03.04 12:41

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

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

пойдет, по любому главное вынести слой отображения, а вылизывать потом будем.

Неактивен

#122 2012.03.04 13:09

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

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

Сейчас viewforum.tpl буду собирать.
Добавлено спустя   1 минуту  7 секунд:
Вроде интимных мест нет, но заросли еще те.

Неактивен

#123 2012.03.04 16:20

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

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

Мозайка, епт! sad

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
 
{include file='header.tpl'}
 
{* НавигацияГлавная Форум Тема *}
<div class="inbox">
    <a href="index.php">{$lang_common.Index}</a> » {$cur_forum.forum_name|escape}
</div>
 
{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='j' value='false'}
 
{foreach from=$topics item=cur_topic}
 
<div class="{if ($j = ! $j)}msg{else}msg2{/if}">
 
{* +SUBJECT *}
 
<strong>
{if $cur_topic.moved_to}
    {$lang_forum.Moved_m}
{elseif $cur_topic.closed}
    {$lang_common.$Closed_icon_m}
{/if}
 
{if $pun_config.poll_enabled == && $cur_topic.has_poll}
    {$lang_forum.poll_m}
{/if}
 
{if $cur_topic.sticky == 1}
    {$lang_forum.Sticky_m}
{/if}
</strong>
 
<a href="viewtopic.php?id={$cur_topic.moved_to|default:$cur_topic.id}">{$cur_topic.subject|escape}</a> {$lang_common.by} {$cur_topic.poster|escape}
 
{* -SUBJECT *}
 
{if ! $cur_topic.moved_to}
 ({$cur_topic.num_replies}/{$cur_topic.num_views}){$icon_new_text}<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}
<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 == || $is_admmod}
<div class="go_to">
    <class="but" href="post.php?fid={$id}">{$lang_forum.$Post_topic}</a>
</div>
{/if}
 
{include file='footer.tpl'}

Отредактировано tipsun (2012.03.04 16:22)

Неактивен

#124 2012.03.04 16:34

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

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

норм)

Неактивен

#125 2012.03.04 16:41

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

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

Это не все, прилично еще осталось.

Отредактировано tipsun (2012.03.04 16:43)

Неактивен

#126 2012.03.06 17:08

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

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

Вроде тоже все.
Ну на 100% не уверен, может чего пропустил.
Вроде как с иконками лишнее там.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
 
        $icon_text $lang_common['Normal icon']; // используется
        $item_status '';                        // нет
        $icon_type 'icon';                      // нет
 
{include file='header.tpl'}
 
{* НавигацияГлавная Форум *}
<div class="inbox">
    <a href="index.php">{$lang_common.Index}</a> » {$cur_forum.forum_name|escape}
</div>
 
{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}">
 
{* +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 == && $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 == 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>
 
{* assign var='num_pages_topic' value=ceil(($cur_topic.num_replies 1) / $pun_user.disp_posts) *}
 
{*
/*
 
// If there are topics in this forum.
if ($db->num_rows($result)) {
    
    while ($cur_topic = $db->fetch_assoc($result)) {
        
        $cur_topic['num_pages_topic'] = ceil(($cur_topic['num_replies'] + 1) / $pun_user['disp_posts']);
        $topics[] = $cur_topic;
    }
}
 
*/
*}
 
{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 ! $pun_user.is_guest &&
    $cur_topic.last_poster != $pun_user.username &&
    ! is_reading($cur_topic.log_time$cur_topic.last_post) &&
    $cur_topic.last_post $cur_topic.mark_read &&
    ($cur_topic.last_post $pun_user.last_visit ||
     ($smarty.server.REQUEST_TIME $cur_topic.last_post $pun_user.mark_after)
    )}
 <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}
<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 == || $is_admmod}
<div class="go_to">
    <class="but" href="post.php?fid={$id}">{$lang_forum.$Post_topic}</a>
</div>
{/if}
 
{include file='footer.tpl'}

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

Неактивен

#127 2012.03.08 01:09

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

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

wap/userlist.php - пока не работает!

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
 
{assign var='User_search' value='User search'}
{assign var='User_find_legend' value='User find legend'}
{assign var='User_group' value='User group'}
{assign var='All_users' value='All users'}
 
{assign var='Sort_by' value='Sort by'}
{assign var='No_of_posts' value='No of posts'}
{assign var='Sort_order' value='Sort order'}
{assign var='User_search_info' value='User search info'}
{assign var='User_list' value='User list'}
{assign var='No_hits' value='No hits'}
 
{* Образец показа даты/времени *}
{assign var='date_format' value='%d/%m/%y %H:%I:%S'}
 
<div class="con">
    <strong>{$lang_search.$User_search}</strong>
</div>
 
<form method="get" action="userlist.php?">
<div class="input">
<strong>{$lang_ul.$User_find_legend}</strong><br/>
 
{if $pun_user['g_search_users'] == 1}
    {$lang_common.Username}<br/>
    <input type="text" name="username" value="{$username|escape}maxlength="25" /><br/>
{/if}
 
{$lang_ul.$User_group}<br/>
<select name="show_group"><option value="-1"{if $show_group == -1selected="selected"{/if}>{$lang_ul.$All_users}</option>
 
 
{foreach from=$groups item=cur_group}
    <option value="{$cur_group.g_id}"{if $cur_group.g_id == $show_groupselected="selected"{/if}>{$cur_group.g_title|escape}</option>
{/if}
 
</select><br/>
{$lang_search.$Sort_by}<br/>
<select name="sort_by">
<option value="username"{if $sort_by == 'username'selected="selected"{/if}>{$lang_common.Username}</option>
<option value="registered"{if $sort_by == 'registered'selected="selected"{/if}>{$lang_common.Registered}</option>
{if $show_post_count}
<option value="num_posts"{if $sort_by == 'num_posts'selected="selected"{/if}>{$lang_ul$No_of_posts}</option>
{/if}
 
</select><br/>
{$lang_search.$Sort_order}<br/>
<select name="sort_dir">
<option value="ASC"{if $sort_dir == 'ASC'selected="selected"{/if}>{$lang_search.Ascending}</option>
<option value="DESC"{if $sort_dir == 'DESC'selected="selected"{/if}>{$lang_search.Descending}</option>
</select>
</div>
 
<div class="input2">{$lang_ul.$User_search_info}</div>
<div class="go_to">
    <input type="submit" name="search" value="{$lang_common.Submit}accesskey="s" />
</div>
</form>
 
<div class="con"><strong>{$lang_common.$User_list}</strong></div>
<div class="navlinks">{$lang_common.Username}
 
{if $show_post_count}
 | {$lang_common.Posts}
{/if}
 | {$lang_common.Title} | {$lang_common.Registered}</div>
 
{foreach from=$users item=user_data}
<div class="{if $j = ! $j}in{else}in2{/if}">
<strong><a href="profile.php?id={$user_data.id}">{$user_data.username|escape}</a></strong> 
{if $show_post_count}
[{$user_data.num_posts}]
{/if}
 
{$user_title_field} ({$user_data.registered|date_format:$date_format})</div>
 
{foreachelse}
<div class="msg">{$lang_search.$No_hits}</div>
{/foreach}
 
<div class="con">{$paging_links}</div>

Отредактировано tipsun (2012.03.08 01:09)

Неактивен

#128 2012.03.08 01:31

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

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

Line 198: include/cache.php
Получается ноги из wap/footer.php - который я сам делал big_smile
Добавлено спустя   3 минуты  55 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();
 
//if ($pun_config['o_quickjump'] == 1) {
//if ('viewtopic.php' == $basename and $pun_config['o_quickjump'] == 1) {
if ($pun_config['o_quickjump'] == and ('viewtopic.php' == $basename or 'viewforum.php' == $basename)) {
    // 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/cache.php';
        generate_wap_quickjump_cache($id);
        //include PUN_ROOT.'cache/cache_wap_quickjump_' . $forum_id . '.php';
    }
}

Отредактировано tipsun (2012.03.08 09:31)

Неактивен

#129 2012.03.08 10:55

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

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

Из-за одной точки не работал шаблон. sad
Сейчас вроде в шаблоне нет ошибок.
А вот смарти чет при assign не отображает шаблон.

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

Неактивен

#130 2012.03.08 12:22

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

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

Исправил.
Наконец работает.
Сейчас занесу необходимые переменные в $smarty.

Неактивен

#131 2012.03.08 12:34

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

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

Получите и распишитесь smile

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php
 
{include file='header.tpl'}
 
{* Образец показа даты/времени *}
{assign var='date_format' value='%d/%m/%y %H:%I:%S'}
 
{assign var='User_search' value='User search'}
{assign var='User_find_legend' value='User find legend'}
{assign var='User_group' value='User group'}
{assign var='All_users' value='All users'}
 
{assign var='Sort_by' value='Sort by'}
{assign var='No_of_posts' value='No of posts'}
{assign var='Sort_order' value='Sort order'}
{assign var='User_search_info' value='User search info'}
{assign var='User_list' value='User list'}
{assign var='No_hits' value='No hits'}
 
<div class="con">
    <strong>{$lang_search.$User_search}</strong>
</div>
 
<form method="get" action="userlist.php?">
<div class="input">
<strong>{$lang_ul.$User_find_legend}</strong><br/>
 
{if $pun_user.g_search_users == 1}
    {$lang_common.Username}<br/>
    <input type="text" name="username" value="{$username|escape}maxlength="25" /><br/>
{/if}
 
{$lang_ul.$User_group}<br/>
<select name="show_group"><option value="-1"{if $show_group == -1selected="selected"{/if}>{$lang_ul.$All_users}</option>
 
 
{foreach from=$groups item=cur_group}
    <option value="{$cur_group.g_id}"{if $cur_group.g_id == $show_groupselected="selected"{/if}>{$cur_group.g_title|escape}</option>
{/foreach}
 
</select><br/>
{$lang_search.$Sort_by}<br/>
<select name="sort_by">
<option value="username"{if $sort_by == 'username'selected="selected"{/if}>{$lang_common.Username}</option>
<option value="registered"{if $sort_by == 'registered'selected="selected"{/if}>{$lang_common.Registered}</option>
{if $show_post_count}
<option value="num_posts"{if $sort_by == 'num_posts'selected="selected"{/if}>{$lang_ul.$No_of_posts}</option>
{/if}
 
</select><br/>
{$lang_search.$Sort_order}<br/>
<select name="sort_dir">
<option value="ASC"{if $sort_dir == 'ASC'selected="selected"{/if}>{$lang_search.Ascending}</option>
<option value="DESC"{if $sort_dir == 'DESC'selected="selected"{/if}>{$lang_search.Descending}</option>
</select>
</div>
 
<div class="input2">{$lang_ul.$User_search_info}</div>
<div class="go_to">
    <input type="submit" name="search" value="{$lang_common.Submit}accesskey="s" />
</div>
</form>
 
<div class="con"><strong>{$lang_common.$User_list}</strong></div>
<div class="navlinks">{$lang_common.Username}
 
{if $show_post_count}
 | {$lang_common.Posts}
{/if}
 | {$lang_common.Title} | {$lang_common.Registered}</div>
 
{foreach from=$users item=user_data}
<div class="{if $j = ! $j}in{else}in2{/if}">
<strong><a href="profile.php?id={$user_data.id}">{$user_data.username|escape}</a></strong> 
{if $show_post_count}
[{$user_data.num_posts}]
{/if}
 
{get_title($user_data)} ({$user_data.registered|date_format:$date_format})</div>
 
{foreachelse}
<div class="msg">{$lang_search.$No_hits}</div>
{/foreach}
 
<div class="con">{$paging_links}</div>
 
{include file='footer.tpl'}

Добавлено спустя   1 минуту  3 секунды:
быдлоШаблон. В смарти вроде есть спец. функции для работы с select и прочее.
Добавлено спустя   6 минут  17 секунд:

get_title($cur_post) в wap/viewtopic.php оказывается показывает ранг пользователя. Admin/Mod/Member etc.
Хоть он нигде не выводился, я прикрутил суда.

Код:

1
2
3
4
5
<?php
{* Должность *}
{get_title($cur_post)}<br/>
{* Когда было размещено сообщение *}
{$cur_post.posted|date_format:$date_format}<br/>

Отредактировано tipsun (2012.03.08 12:43)

Неактивен

#132 2012.03.08 12:50

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

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

Это был шаблон для файла: wap/userlist.php

Отредактировано tipsun (2012.03.08 12:51)

Неактивен

#133 2012.03.08 13:06

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

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

блин. на гитхаб что ли переезжать. охота уже в целом на код посмотреть.

Неактивен

#134 2012.03.08 13:08

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

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

Загадками "говоришь" smile
Или я не выспался big_smile
Добавлено спустя   4 минуты :
быдлоКод, он и на шаблонах быдлоКод smile
Я еще от себя добавил big_smile
Ну в принципе легче будет разобраться потом, мне кажется.
Добавлено спустя   5 минут  55 секунд:
Я могу свою папку punbb.mod/www/ упаковать. Так сможешь посмотреть.

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

Неактивен

#135 2012.03.08 13:30

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

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

Gemorroj написал:

на код посмотреть.

http://wapinet.ru/files/13311 :: 74269

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

Неактивен

#136 2012.03.08 18:30

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

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

а что это за комментарий {* Дополнительные ссылки в футере?

Неактивен

#137 2012.03.08 18:31

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

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

Сейчас посмотрю.
Добавлено спустя   3 минуты  51 секунду:
Вот откуда ноги растут.
Еще есть тот же кусок и в другой функции generate_wap_1_navlinks()
include/functions.php#336

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

Неактивен

#138 2012.03.08 19:25

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

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

это я понимаю, я не понимаю что оно делает в шаблоне)

Неактивен

#139 2012.03.08 20:15

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

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

Хороший вопрос smile
Добавлено спустя   2 минуты  33 секунды:
Самый страшный файл, видимо wap/profile.php - 101 kB (1.6k строк).

Отредактировано tipsun (2012.03.08 22:24)

Неактивен

#140 2012.03.09 12:53

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

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

В принципе ошибки можно наверно так отпустить:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
// ошибка
$smaty->assign('errors'$errors);
$smarty->display('template.tpl');
// exit();
 
//+ template.tpl
 
{include file='errors.tpl'}
 
{* Etc. *}
 
//- template.tpl

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

Неактивен

#141 2012.03.09 13:53

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

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

какой конкретно ошибки?

Неактивен

#142 2012.03.09 18:39

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

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

Не знаю почему, но я думал про exit(); ошибки.

Неактивен

#143 2012.03.09 18:46

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

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

не понимаю, - exit - языковая конструкция, а не ошибка.

Неактивен

#144 2012.03.10 12:34

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

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

"wap/index.php" потихоньку собираю.

Неактивен

#145 2012.03.12 11:54

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

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

Индексная вроде тоже готова.

Найдите 1 отличие big_smile (оно есть)

http://wapinet.ru/files/f/1/6/wap-index-php.jpg

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
 
{include file='header.tpl'}
 
{assign var='date_format' value='%d/%m/%y %H:%I:%S'}
{assign var='Show_new_posts' value='Show new posts'}
{assign var='Mark_all_as_read' value='Mark all as read'}
{assign var='Empty_board' value='Empty board'}
 
{assign var='Link_separator_m' value='|'}
 
<div class="navlinks">
    
    {if $pun_user.is_guest}
        <a href="login.php">{$lang_common.Login}</a>{$Link_separator_m}<a href="register.php">{$lang_common.Register}</a>
    {else}
        
        {if $pun_user.g_id $smarty.const.PUN_MOD}
            
            <a href="profile.php?id={$pun_user.id}">{$lang_common.Profile} (<span style="font-weight: bold">{$pun_user.username|escape}</span>)</a>
            {if $pun_config.o_pms_enabled && $pun_user.g_pm == 1}
                {$Link_separator_m}<a href="message_list.php">{$lang_pms.Private}</a>
            {/if}
            {$Link_separator_m}<a href="login.php?action=out&amp;id={$pun_user.id}&amp;csrf_token=">{$lang_common.Logout}</a>
        {/if}
        
        {if $pun_user.g_id $smarty.const.PUN_MOD}
            <a href="{$smarty.const.PUN_ROOT}admin_index.php">{$lang_common.Admin_m}</a>
        {/if}
    {/if}
</div>
 
{assign var='j' value=false}
{assign var='cur_category' value=''}
{foreach from=$forums item=cur_forum}
 
    {if $cur_forum.cid != $cur_category}
    {assign var='cur_category' value={$cur_forum.cid}}
 
        {* assign var='cat_count' value=($cat_count 1) *}
        <div class="cat">
            <span class="sp_cat">{$cur_forum.cat_name|escape}</span>
        </div>
    {/if}
    
    <div class="{if $j = ! $j}in{else}in2{/if}">
    {if $cur_forum.redirect_url}
    <a href="{$cur_forum.redirect_url|escape}">{$cur_forum.forum_name|escape}</a>
    {else}
        <a href="viewforum.php?id={$cur_forum.fid}">{$cur_forum.forum_name|escape}</a> ({$cur_forum.num_topics}/{$cur_forum.num_posts})
    {/if}
    
    {if $cur_forum.last_post}
        <br/>
        <span class="sub">
        » <a href="viewtopic.php?pid={$cur_forum.last_post_id}#p{$cur_forum.last_post_id}">{$cur_forum.subject|escape}</a> ({$cur_forum.last_post|date_format:$date_format} {$lang_common.by} {$cur_forum.last_poster|escape})
        </span>
    {/if}
    </div>
 
{foreachelse}
<div class="in">{$lang_index.$Empty_board}</div>
{/foreach}
 
{if ! $pun_user.is_guest}
<div class="go_to">
<class="but" href="search.php?action=show_new">{$lang_common.$Show_new_posts}</a>
<class="but" href="misc.php?action=markread">{$lang_common.$Mark_all_as_read}</a>
</div>
{/if}
 
{assign var='No_of_users' value='No of users'}
{assign var='No_of_topics' value='No of topics'}
{assign var='No_of_posts' value='No of posts'}
{assign var='Users_online' value='Users online'}
{assign var='Guests_online' value='Guests online'}
 
<div class="incqbox">
{$lang_index.$No_of_users}: {$stats.total_users}<br/>
{$lang_index.$No_of_topics}: {$stats.total_topics}<br/>
{$lang_index.$No_of_posts}: {$stats.total_posts}<br/>
 
{if $pun_config.o_users_online == 1}
 
{$lang_index.$Users_online}: {$num_users|default:'0'}<br/>
{$lang_index.$Guests_online}: {$num_guests|default:'0'}
 
{if $num_users}
</div>
<div class="act">
{$lang_index.Online}:
{foreach from=$users item=pun_user_online}
<a href="profile.php?id={$pun_user_online.user_id}">{$pun_user_online.ident|escape}</a>
{/foreach}
{/if}
{/if}
</div>
 
{include file='footer.tpl'}

Отредактировано tipsun (2012.03.12 12:02)

Неактивен

#146 2012.03.19 17:03

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

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

wap/post.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
{include file='header.tpl'}
 
<div class="inbox">
<a href="index.php">{$lang_common.Index}</a»
 
{if $tip}
<a href="viewforum.php?id={$cur_posting.id}">{$cur_posting.forum_name|escape}</a>
{elseif $fid}
{$cur_posting.forum_name|escape}
{/if}
 
{if isset($cur_posting.subject)}
» {$cur_posting.subject|escape}
{/if}
</div>
 
{if $errors}
 
{assign var='Post_errors' value='Post errors'}
<div class="red">{$lang_post.$Post_errors}</div>
 
<div class="msg">
{foreach from=$errors item=cur_error}
» {$cur_error}<br/>
{/foreach}
</div>
 
{elseif isset($smarty.post.preview)}
 
{assign var='Post_preview' value='Post preview'}
<div class="info">{$lang_post.$Post_preview}</div>
<div class="msg">{* parse_message($message$hide_smilies) *}</div>
{/if}
 
{assign var='Post_a_reply' value='Post a reply'}
{assign var='Post_new_topic' value='Post new topic'}
 
 
<div class="con">
{if $tid}
    {$lang_post.$Post_a_reply}
{elseif $fid}
    {$lang_post.$Post_new_topic}
{/if}
</div>
 
{if $tid}
<form method="post" action="post.php?action=post&amp;tid={$tid}{if $file_limit}enctype="multipart/form-data"{/if}>
{elseif $fid}
<form method="post" action="post.php?action=post&amp;fid={$fid}enctype="multipart/form-data">
{/if}
 
<div class="input">
 
{*
if ($pun_config['poll_enabled'] == && $fid) {
    if (!$_GET['poll']) {
        include PUN_ROOT.'lang/'.$pun_user['language'].'/poll.php';
        echo '<a href="post.php?fid='.$fid.'&amp;poll=1">'.$lang_poll['poll'].'</a><br/>';
    } else {
        include_once PUN_ROOT.'include/poll/poll.inc.php';
        $Poll->wap_showContainer();
        $cur_index 8;
    }
}
*}
 
<input type="hidden" name="form_sent" value="1" />
<input type="hidden" name="form_user" value="{$pun_user.username|escape|default:'Guest'}/>
 
{if $pun_user.is_guest}
    
    {assign var='Guest_name' value='Guest name'}
    
    <strong>{$lang_post.$Guest_name}</strong><br />
    <input type="text" name="req_username" value="{$username|escape}tabindex="{assign var='cur_index' value=$cur_index+1}" /><br />
    {if $pun_config.p_force_guest_email == 1}<strong>{$lang_common.E-mail}</strong>{else}{$lang_common.E-mail}{/if}<br />
    <input type="text" name="{if $pun_config.p_force_guest_email == 1}req_email{else}email{/if}" value="{$email|escape}tabindex="{assign var='cur_index' value=$cur_index+1}" /><br />
{/if}
 
{if $fid}
    <strong>{$lang_common.Subject}</strong><br />
    <input type="text" name="req_subject" value="{$subject|escape}maxlength="70" tabindex="{assign var='cur_index' value=$cur_index+1}" /><br />
{/if}
 
<textarea name="req_message" rows="4" cols="24" tabindex="{assign var='cur_index' value=$cur_index+1}">
{if $smarty.post.req_message}
{$message|escape}
{elseif $quote}
{$quote}
{/if}
</textarea><br />
 
<a href="help.php?id=3">{$lang_common.Smilies}</a>
{if $pun_config.o_smilies == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>{/if}
<a href="help.php?id=1">{$lang_common.BBCode}</a>
{if $pun_config.p_message_bbcode == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>{/if}
{assign var='img_tag' value='img tag'}
<a href="help.php?id=4">{$lang_common.$img_tag}</a>
{if $pun_config.p_message_img_tag == 1}<span class="green">{$lang_common.on_m}</span>{else}<span class="grey">{$lang_common.off_m}</span>{/if}
</div>
 
<div class="input2">
 
{if $pun_user.g_post_replies == 2}
<img src="{$pun_config.o_base_url}/include/captcha/captcha.php?{session_name()}={session_id()}" alt="" /><br />
{assign var='Image_text' value='Image text'}
{$lang_post.$Image_text}<br />
<input type="text" name="req_image_" size="16" maxlength="16" /><br />
{/if}
 
{assign var='num_to_upload' value=min($file_limit20)}
 
{if $can_upload && $num_to_upload 0}
    {$lang_fu.Attachments}<br/>
    {include file='{$smarty.const.PUN_ROOT}include/attach/wap_post_input.php'}
{/if}
 
{assign var='Hide_smilies' value='Hide smilies'}
{assign var='Merge_posts'  value='Merge posts'}
 
{if ! $pun_user.is_guest}
    {if $pun_config.o_smilies == 1}
    <input type="checkbox" name="hide_smilies" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if isset($smarty.post.hide_smilies)}checked="checked"{/if} />{$lang_post.$Hide_smilies}<br/>
    {/if}
    
    {if $is_admmod}
    <input type="checkbox" name="merge" value="1" checked="checked" />{$lang_post.$Merge_posts}<br/>
    {/if}
    
    {if $pun_config.o_subscriptions == 1}
    <input type="checkbox" name="subscribe" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if isset($smarty.post.subscribe)}checked="checked"{/if} />{$lang_post.Subscribe}<br/>
    {/if}
{elseif $pun_config.o_smilies == 1}
<input type="checkbox" name="hide_smilies" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if isset($smary.post.hide_smilies)}checked="checked"{/if} />{$lang_post.$Hide_smilies}
{/if}
 
</div>
<div class="go_to">
<input type="hidden" name="form_t" value="{$smarty.server.REQUEST_TIME}/>
<input type="submit" name="submit" value="{$lang_common.Submit}tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="s" />
<input type="submit" name="preview" value="{$lang_post.Preview}tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="p" />
</div>
</form>
 
{include file='footer.tpl'}

Отредактировано tipsun (2012.03.19 17:03)

Неактивен

#147 2012.03.26 22:41

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

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

wap/edit.php

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
 
<div class="inbox">
<a href="index.php">{$lang_common.Index}</a> &#187; <a href="viewforum.php?id={$cur_post.fid}">{$cur_post.forum_name|escape}</a> &#187; {$cur_post.subject|escape}</div>
 
{if $errors}
<div class="red">
{assign var='Post_errors' value='Post errors'}
{$lang_post.$Post_errors}
</div>
{assign var='Post_errors_info' value='Post errors info'}
<div class="msg">{$lang_post.$Post_errors_info}
{foreach from=$errors item=cur_error}
&#187; {$cur_error}<br/>
{/foreach}
</div>
{elseif $smarty.post.preview}
{include file='{$smarty.const.PUN_ROOT}include/parser.php'}
{assign var='Post_preview' value='Post preview'}
<div class="info">{$lang_post.$Post_preview}</div>
<div class="msg">{* parse_message($message$hide_smilies) *}</div>
{/if}
 
{assign var='Edit_post' value='Edit post'}
<div class="con">{$lang_post.$Edit_post}</div>
 
<form method="post" action="edit.php?id={$id}&amp;action=edit" enctype="multipart/form-data">
<div class="input">
<input type="hidden" name="form_sent" value="1" />
{if $can_edit_subject}
{$lang_common.Subject}<br/>
<input type="text" name="req_subject" tabindex="{assign var='cur_index' value=$cur_index+1}" value="{{$smarty.post.req_subject|define:$cur_post.subject}|escape}" /><br/>
<!-- /label -->
{/if}
 
{* include file='{$smarty.const.PUN_ROOT}include/attach/fetch.php' *}
 
{$lang_common.Message}:<br/>
<textarea name="req_message" rows="4" cols="24" tabindex="{assign var='cur_index' value=$cur_index+1}">{{$message|define:$cur_post.message}|escape}</textarea><br/>
<a href="help.php?id=3">{$lang_common.Smilies}</a>
{if $pun_config.o_smilies == 1}
<span class="green">{$lang_common.on_m}</span>;
{else}
<span class="grey">{$lang_common.off_m}</span>;
{/if}
<a href="help.php?id=1">{$lang_common.BBCode}</a>
{if $pun_config.p_message_bbcode == 1}
<span class="green">{$lang_common.on_m}</span>;
{else}
<span class="grey">{$lang_common.off_m}</span>;
{/if}
{assign var='img_tag' value='img tag'}
<a href="help.php?id=4">{$lang_common.$img_tag}</a>
{if $pun_config.p_message_img_tag == 1}
<span class="green">{$lang_common.on_m}</span>
{else}
<span class="grey">{$lang_common.off_m}</span>;
{/if}
<br/>
 
{*
$num_to_upload $file_limit;
$num_to_upload min($num_to_upload20);
if ($uploaded_to_post || ($can_upload && $num_to_upload 0)) {
    //Attachments
    include PUN_ROOT.'include/attach/wap_view_attachments.php';
    if ($can_upload && $num_to_upload 0) {
        echo '</div><div class="input2">'.$lang_fu['Choose a file'].'<br/>';
    }
    include PUN_ROOT.'include/attach/wap_post_input.php';
}
*}
 
{if $pun_config.o_smilies == 1}
{assign var='Hide_smilies' value='Hide smilies'}
<input type="checkbox" name="hide_smilies" value="1" {if isset($smarty.post.hide_smilies) || $cur_post.hide_smilies == 1}checked="checked"{/if} tabindex="{assign var='cur_index' value=$cur_index+1}" /> {$lang_post.$Hide_smilies}<br/>
{/if}
 
{if $is_admmod}
<input type="checkbox" name="silent" value="1" tabindex="{assign var='cur_index' value=$cur_index+1}" {if (isset($smarty.post.form_sent) && isset($smarty.post.silent)) || ! isset($smarty.post.form_sent)}checked="checked"{/if} /> {$lang_post.$Silent_edit}<br/>
{/if}
 
 
</div>
<div class="go_to">
<input type="submit" name="submit" value="{$lang_common.Submit}tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="s" />
<input type="submit" name="preview" value="{$lang_post.Preview}tabindex="{assign var='cur_index' value=$cur_index+1}" accesskey="p" />
</div>
</form>

Неактивен

#148 2012.03.27 06:53

LEXIN
Участник
Зарегистрирован: 2011.10.31
Сообщений: 26
Карма: 5
Профиль Веб-сайт

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

tipsun написал:


Индексная вроде тоже готова.

Найдите 1 отличие big_smile (оно есть)

1. Нет фоновых изображений
2. Добавлена ссылка "RSS"
3. Перед ссылкой "Админ панель" отсутствуют 2 ссылки, а после - еще одна.
4. Жоская генерация. (1331538677.555 s)

На код приятно посмотреть. Круууть roll

Неактивен

#149 2012.03.27 10:41

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

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

да, шаблонизация рулит. код намного чище

Неактивен

#150 2012.03.27 11:35

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

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

LEXIN, smile
Еще есть, где активных показывает форум, там еще строка с ссылками. Это было поле с выбором, оно было выше.
- - - -
Еще я пропускал интимные места, может где забыл "htmlSpecialChars()"/"|escape"
Можно было все в массив занести, и получилось бы что мы 1 раз заносим все переменные, т.е.

Код:

1
2
3
4
<?php
 
$allVars = array($title$users$trololo);
$smarty->assign($allVars);

Отредактировано tipsun (2012.03.27 11:41)

Неактивен

#151 2012.03.27 16:24

LEXIN
Участник
Зарегистрирован: 2011.10.31
Сообщений: 26
Карма: 5
Профиль Веб-сайт

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

А как с кешированием дела обстоят? Будет функция кеширования шаблона и очистки кеша?

И очень хочется узнать, какие-нибудь еще "плюшки" в задумке имеются?
Вот оптимизация запросов к БД - отлично.smile

Неактивен

#152 2012.03.27 19:30

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

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

LEXIN, такими вещами нужно заниматься уже после перевода форума на шаблонную структуру.

Неактивен

#153 2012.04.01 18:51

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

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

Взялся за moderate.php
Решил разбивать на moderate.show_delete_topic.tpl; moderate.delete_topic.tpl; итд

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

Неактивен

#154 2012.04.01 18:56

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

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

сколько еще файлов не переведенных на шаблонизатор примерно?

Неактивен

#155 2012.04.01 19:00

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

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

Ух много. Сейчас посмотрю.
Добавлено спустя   2 минуты  52 секунды:
Легче сказать, сколько переведено:
viewtopic.tpl
viewforum.tpl
userlist.tpl
post.tpl
index.tpl
header.tpl
footer.tpl
edit.tpl
+
moderate
- show_delete_topic.tpl
- move_topic.tpl
- delete_topic.tpl

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

Неактивен

#156 2012.04.02 21:09

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

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

Как надоел этот срач. sad
Пока время есть заставляю себя "копать".
Добавлено спустя   5 минут  99 секунд:
Вроде как viewforum кусок такой был, он опять попался.
Может просто получится все скопировать...

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

Неактивен

#157 2012.04.02 21:26

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

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

я тебя предупреждал))
поэтому я и не брался, т.к. трудоемко очень)

Неактивен

#158 2012.04.02 21:36

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

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

Да, еще тестить надо. Уф.
Ну по клавишам тыкать, не мешки тоскать. Пофиг.
Тем более вроде как viewforum.tpl вроде как с куском из moderate совпадает, почти.
А viewforum.tpl я сделал четко.

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

Неактивен

#159 2012.04.07 11:06

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

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

Почему-то не могу назначить пользователя модером, вроде все форумы отметил.
P.S. хочу наглядно редачить файл: moderate.php (Шаблоны есть)
В веб-версии нет ссылки "модерировать форум", как у Админа.

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

Неактивен

#160 2012.04.07 11:24

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

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

свн обновлял?

Неактивен

#161 2012.04.07 11:51

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

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

Нет.

Неактивен

#162 2012.04.07 14:51

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

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

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

Код:

1
2
3
4
5
<?php
 
{if $pun_config.o_quickjump == 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
Сообщений: 2279
Карма: 19
Профиль

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

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

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

Неактивен

#164 2012.04.07 16:10

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

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

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

Неактивен

#165 2012.04.07 19:06

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

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

moderate.tpl

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?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 == && $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 == 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 == || $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
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

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

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

Неактивен

#167 2012.04.07 20:31

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

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

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

Вот вроде:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?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
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

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

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

Неактивен

#169 2012.04.10 17:56

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

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

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

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

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php if (! defined('PUN') or ! defined('PUN_ROOT')) exit();
 
//...................................v
if ('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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?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 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']) ? ' &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
Сообщений: 2279
Карма: 19
Профиль

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

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

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

Неактивен

#171 2012.04.10 19:58

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

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

так да

Неактивен

#172 2012.04.10 20:04

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

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

Вывод списка форумов, в которые можно переместить тему, не работает.
Добавлено спустя   1 минуту  1 секунду:
Нашел.

Код:

1
2
3
4
5
6
7
<?php
 
    while ($forum $db->fetch_assoc($result)) {
        
        //$forums = $forum;
        $forums[] = $forum;
    }

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

Неактивен

#173 2012.04.11 11:11

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

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

Не работают ссылки (админа/модера: переместить, удалить, закрыть, открыть) внизу, в футере, в moderate.php все норм.
Там разграничил exit(); после вывода шаблона.
Добавлено спустя   2 минуты  4 секунды:
Т.к. там сразу 2 шаблона выводилось.

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

Неактивен

#174 2012.04.11 11:47

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

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

наверное, нужно бранч сделать для всей этой фичи...

Неактивен

#175 2012.04.15 19:58

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

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

Commit
Commit failed (details follow):
Server sent unexpected return value (405 Method Not Allowed) in response to
MKACTIVITY request for '/svn/!svn/act/ea721f03-b86c-ee4d-93d9-1fd0cd6c2550'

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

Неактивен

#176 2012.04.15 20:01

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

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

url вводи с https

Отредактировано Gemorroj (2012.04.15 20:01)

Неактивен

#177 2012.04.15 20:03

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

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

1) У меня скачивает с svn.
2) Удаляю то, что скачалось.
3) Закидываю целиком форум, как ты показал, выделил все, кроме [.svn].
4) Жму на папку smarty [commit]
5) Ошибка выходит, которую я запостил.
Добавлено спустя   1 минуту  56 секунд:
Сейчас попробую с https
Добавлено спустя   4 минуты  8 секунд:
Во. Логин и Пароль запросила.
Добавлено спустя   6 минут  9 секунд:
Все, сгенерил пароль.
Добавлено спустя   7 минут  30 секунд:
Commit...

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

Неактивен

#178 2012.04.15 20:21

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

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

Весит много, надо было смарти-двиг не грузить.
Ну да ладно. Главное грузит.

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

Неактивен

#179 2012.04.15 20:23

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

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

что значит не надо было? а как без него форум работать-то будет?

Неактивен

#180 2012.04.15 20:32

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

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

Залил, все.

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

Неактивен

#181 2012.04.15 20:58

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

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

ок, я кое-чего там тоже уже накомитил тебе. обновляйся теперь переодически.
есть еще такие правила:
1) комментарии к коммитам обязательны. хотябы минимально описывай что менялось в сделанном коммите.
2) различные кэши и кастомные настройки не должны попадать в репозитарий.

Неактивен

#182 2012.04.15 21:12

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

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

Ок.

Неактивен

#183 2012.04.15 21:24

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

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

Да, увидел.
Показывает как было и как стало smile

Неактивен

#184 2012.04.15 21:37

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

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

Елки, у меня __DIR__ нет.
И разве нужно для __DIR__ dirName() обработка?

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

Неактивен

#185 2012.04.15 22:10

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

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

а где там __DIR__ ?
для __DIR__ не надо, надо для __FILE__, я затупил где-то?
Добавлено спустя   1 минуту  2 секунды:
да, увидел, это я уже на ночь глядя уже торможу.

Неактивен

#186 2012.04.16 14:52

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

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

Опять этот cache quickjump не работает. >_<
Cache-файл не сохраняется.

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

Неактивен

#187 2012.04.16 15:52

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

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

Переменная $basename не была задана. >_<

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

Неактивен

#188 2012.04.16 16:16

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

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

Commit.

Неактивен

#189 2012.04.16 18:19

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

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

ты это в каментах пиши в свн-е)

Неактивен

#190 2012.04.16 20:00

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

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

Есть коммент мой там, проверял. smile
Там в changes есть коммент. Если есть еще куда коммент, то как?

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

Неактивен

#191 2012.04.16 20:17

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

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

Все равно костыльно и наверно можно изящно сделать все при помощи смарти и кеши(а).
Ну по крайней мере мне так кажется.

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

Неактивен

#192 2012.04.16 20:19

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

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

посмотрел коммиты. да все ок, так и пиши.
и еще, нет функции baseName, есть basename.

Неактивен

#193 2012.04.16 20:20

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

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

Хотя там такие же условия будут, просто в шаблоне. big_smile
Получается не лучше.
- - - -
basename - ok. Буду знать.

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

Неактивен

#194 2012.04.17 16:58

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

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

Commit.

Неактивен

#195 2012.04.28 12:30

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

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

Немного наCommitал.
Виден конец кода в файле... profile.php

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

Неактивен

#196 2012.05.03 15:52

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

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

наCommitал.
Недоделан выбор языка. (Забыл че там было).
- - - -
Елки и коммент забыл.

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

Неактивен

#197 2012.05.08 11:08

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

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

Заблудился, где какой шаблон. Вот туман.

Отредактировано tipsun (2012.05.08 11:12)

Неактивен

#198 2012.05.08 11:43

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

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

С языками разобрался.
Commit.
- - - -
БЛЯ!!! Коммент забыл.
Уй, и изменить его целая война.

Отредактировано tipsun (2012.05.08 12:03)

Неактивен

#199 2012.06.05 12:35

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

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

Ы!, эта аватарка меня доведет.
Каждый раз с этой ерундой сталкиваюсь.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{*$avatar_field
<a href="profile.php?action=upload_avatar&amp;id={$id}">{$lang_profile.$Change_avatar}</a> |
{if $img_size = @getimagesize(PUN_ROOT . $pun_config['o_avatars_dir'] . '/' . $id . '.gif')) {
$avatar_format = 'gif';
} else
if ($img_size = @getimagesize(PUN_ROOT . $pun_config['o_avatars_dir'] . '/' . $id . '.jpg')) {
$avatar_format = 'jpg';
} else
if ($img_size = @getimagesize(PUN_ROOT . $pun_config['o_avatars_dir'] . '/' . $id . '.png')) {
$avatar_format = 'png';
} else {
$avatar_field = '<a class="but" href="profile.php?action=upload_avatar&amp;id=' . $id . '">' . $lang_profile['Upload avatar'] . '</a>';
}
 
// Display the delete avatar link?
if ($img_size) {
$avatar_field .= ' <a href="profile.php?action=delete_avatar&amp;id=' . $id . '">' . $lang_profile['Delete avatar'] . '</a>';
}
 
</div>
*}

Добавлено спустя   4 минуты  32 секунды:
А вот готовое решение нашел.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
{if $pun_config.o_avatars}
    {if $user.use_avatar == 1}
        {if is_file("{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.gif")}
            <img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.gif" alt="" />
        {else}
            {if is_file("{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.jpg")}
                <img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.jpg" alt="" />
            {else}
                {if is_file("{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.png")}
                    <img src="{$smarty.const.PUN_ROOT}{$pun_config.o_avatars_dir}/{$id}.png" alt="" />
                {else}
                    {$lang_profile.$No_avatar}
                {/if}
            {/if}
        {/if}
    {else}
        {$lang_profile.$No_avatar}
    {/if}
<br/>
{/if}

Отредактировано tipsun (2012.06.05 12:36)

Неактивен

#200 2012.06.05 14:40

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

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

Немного commit.

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

Неактивен

#201 2012.06.06 12:32

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

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

Еще commit.
Остался раздел "Администрирование".
- - - -
Чет когда переходишь в профиле с вкладки "основной" на другие, то ссылка администрирование пропадает.
- - - -
А, просто не добавил нужные переменные в smarty.

Отредактировано tipsun (2012.06.06 12:38)

Неактивен

#202 2012.06.06 14:15

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

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

администрирование можно на потом оставить.
все по публичной части сделано уже?? круто. позже посмотрю.

Неактивен

#203 2012.06.06 14:16

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

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

Я имел ввиду файл profile.php smile
Отчет


//////////////////////////////
0 - не переведен.
1 - переведен.
* - нет разметки.
//////////////////////////////
[*] => antispam_misc.php
[-] => code.php
[1] => delete.php
[1] => edit.php
[1] => filemap.php
[1] => header.php
[1] => help.php
[0] => hide.php
[1] => index.php
[1] => karma.php
[1] => login.php (14/06/12)
[0] => message_delete.php
[0] => message_list.php
[*] => message_popup.php
[0] => message_send.php
[0] => misc.php
[1] => moderate.php
[1] => post.php
[1] => profile.php
[*] => redirect.php
[1] => register.php (14/06/12)
[0] => search.php
[0] => uploads.php
[1] => userlist.php
[1] => viewforum.php
[0] => viewprintable.php
[0] => viewspam.php
[1] => viewtopic.php
//////////////////////////////
9 - не переведено.
15 - переведено.
//////////////////////////////

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

Неактивен

#204 2012.06.14 15:35

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

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

Еще 2 файла: login.php + register.php

Неактивен

#205 2012.06.14 18:01

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

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

ну, самое сложное переведено smile отлишна

Неактивен

#206 2012.06.23 13:49

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

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

wap/help.php не смог с 3 отреком нормально разобраться, ну оригинальную идею не смог перенести на шаблон.
Добавлено спустя   1 минуту  11 секунд:
Там как бы на 1 изображение если есть еще коды-ключи, то показывать в одном диве.

Неактивен

#207 2012.06.25 10:16

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

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

Файл wap/hide.php маразм.

Неактивен

#208 2012.06.25 10:31

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

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

Так как этот маразм почти полностью совпадает с wap/viewtopic.php, то решил этим воспоьзоватсья. Шаблон взял от viewtopic.tpl

Неактивен

#209 2012.06.25 19:52

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

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

Еще, как приду домой, wap/message_delete.php сделаю и отправлю...

Неактивен

#210 2012.06.25 21:17

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

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

Commit. Бле! Комментарий забыл.
Добавлено спустя   5 минут  43 секунды:
Что за память. >_<
Добавлено спустя   7 минут  37 секунд:
Если ничего не упустил, остались:
message_list.php
message_send.php
misc.php
search.php
uploads.php
viewprintable.php
viewspam.php

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

Неактивен

#211 2012.07.03 23:46

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

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

Вот message_list.php меня потерял! @_@

Неактивен

#212 2012.07.04 00:04

tipsun
Moderator
Зарегистрирован: 2009.10.14
Сообщен