Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#39 used as offset, casting to integer (39) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Расширение тега HIDE
ТвойWeb » » Моды, хаки, скины и дополнения » Расширение тега HIDE

Страниц (4): [1] 2 3 4 »
 

1. pyccak - 15 Сентября, 2005 - 13:44:49 - перейти к сообщению
вот можно такое сделать?, на пример поставил ссылку в этот скрипт и для того чтоб эту ссылку увидет, надо пользователю оставить на форуме на пример 10 сообщений и после он сможет увидеть ссылку или то что поставил под этот тяг. Я думаю вы поняли что я имею ввиду. Закатив глазки

только для новичков это для тех у кого еще ноль сообшений для тех такое ставить, пока 10 сообщений не набирет на форуме только такда увидет то что я закрыл
2. TvoyWeb - 15 Сентября, 2005 - 15:05:11 - перейти к сообщению
pyccak
Ну сделай проверку:
CODE:
if ($inuser['posts'] <= 10 )
{
// не показываем
}
else
{
//показываем
}
3. pyccak - 15 Сентября, 2005 - 15:24:41 - перейти к сообщению
TvoyWeb
а куда это поставить надо?. скажи точно
4. nokia6230 - 15 Сентября, 2005 - 15:30:37 - перейти к сообщению
pyccak пишет:
а куда это поставить надо?. скажи точно

lib.php
5. nokia6230 - 15 Сентября, 2005 - 18:39:40 - перейти к сообщению
TvoyWeb
Как это должно выглядеть? Так?
CODE:
if ($exbb['reged'])
{
}
else
if ($inuser['posts'] <= 10 )
{

$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small>Скрытый текст:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$1</td></tr></table>", $post );
}
else
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small><font color=red>[ Скрытый текст. Для прочтения необходима <a href=\"register.php\">регистрация</a>! ]</font></span>", $post );
}
Растерялся
6. TvoyWeb - 16 Сентября, 2005 - 01:33:04 - перейти к сообщению
nokia6230
Скорее всего так тогда:
CODE:
if ($exbb['reged'] && $inuser['posts'] <= 10 )
{

$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small>Скрытый текст:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$1</td></tr></table>", $post );
}
else
{
$post = preg_replace( "#\[hide\](.+?)\[/hide\]#is", "<span class=small><font color=red>[ Скрытый текст. Для прочтения необходима <a href=\"register.php\">регистрация</a>! ]</font></span>", $post );
}
7. CaptainFlint - 16 Сентября, 2005 - 02:05:09 - перейти к сообщению
А можно сделать помощнее: чтобы в самом теге HIDE указывать число постов. Т.е., например, пишешь [hide=15]текст[/hide] - и текст будет скрыт для всех незарегистрированных и тех, кто набрал меньше 15 постов. Я это у себя сделал так:

в lib.php после строчки, парсящей обычный hide, добавил строку:
PHP:
$post = preg_replace_callback("#(\[hide=)([0-9]+)(\])(.+?)(\[\/hide\])#is", 'reg_exp_callback', $post);

а ниже, после функции ikoncode, добавил функцию
PHP:
function reg_exp_callback($arr) {
global $exbb,$lang,$inmembmod;
if (!$exbb['reged']) {
return "<BR><span class=small><font color=red>[$lang[HiddenText]. $lang[ToRead] $lang[RegisterAnd] $lang[CollectPosts1] $arr[2] $lang[CollectPosts2]!]</font></span>";
}

$member = getmember($exbb['mem_id']);
if (($member['posts'] >= $arr[2]) || $inmembmod) {
return "<BR><span class=small>$lang[HiddenText]:</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$arr[4]</td></tr></table>";
} else {
return "<BR><span class=small><font color=red>[$lang[HiddenText]. $lang[ToRead] $lang[CollectPosts1] $arr[2] $lang[CollectPosts2]!]</font></span>";
}
}

Плюс в lang.php добавил строчки (можно и прямо в код функции их запихнуть, если мультиязычность не нужна):
PHP:
$lang['HiddenText'] = 'Скрытый текст';
$lang['ToRead'] = 'Для прочтения необходимо';
$lang['Register'] = '<a href=\"register.php\">зарегистрироваться</a>';
$lang['RegisterAnd'] = '<a href=\"register.php\">зарегистрироваться</a> и';
$lang['CollectPosts1'] = 'набрать не менее';
$lang['CollectPosts2'] = 'сообщений';
8. DrNets - 16 Сентября, 2005 - 04:21:08 - перейти к сообщению
CaptainFlint пишет:
А можно сделать помощнее: чтобы в самом теге HIDE указывать число постов. Т.е., например, пишешь [hide=15]текст[/hide] - и текст будет скрыт для всех незарегистрированных и тех, кто набрал меньше 15 постов. Я это у себя сделал так:.......
.....

а теперь спросим у TvoyWeb - безопасно ли это? т.к с файлом lib.php лучше не шутить Улыбка
9. TvoyWeb - 16 Сентября, 2005 - 04:22:33 - перейти к сообщению
CaptainFlint
А зачем ты открываешь файл юзера? Добавь в глобальные переменные $inuser и проверяй $inuser['posts'] . Улыбка
Если в каждом посте будет скрытый текст, так что постоянно открывать файл юзера? Тем более что массив $inuser это данные in forum curent user Улыбка
DrNets пишет:
а теперь спросим у TvoyWeb - безопасно ли это?

Детально не всматривался в код. Просто сейчас нет времени. Вечерком гляну.
10. TvoyWeb - 16 Сентября, 2005 - 05:33:19 - перейти к сообщению
CaptainFlint
Думаю будешь непротив небольшой модификации твоего кода.
lib.php
Добавляем функцию:
CODE:
function reg_exp_callback($arr)
{
global $exbb,$lang,$inmembmod,$inuser;

$maxposts = 50;//если юзер не ввел кол-во постов в теге hide
if (!$exbb['reged'])
{
$hidetext = $lang['HiddenText'].' '.$lang['ToRead'].$lang['Register']. sprintf($lang['CollectPosts'], $arr[1]);
return "<BR><span class=small><font color=red>[$hidetext!]</font></span>";
}
$arr[1] = (empty($arr[1]) || $arr[1] == 0) ? $maxposts:$arr[1];
if ($inuser['posts'] >= $arr[1] || $inmembmod)
{
return "<BR><span class=small>$lang[HiddenText]</span><table cellpadding=3 cellspacing=0 width=85% class=hide_table><tr><td class=hide_td>$arr[2]</td></tr></table>";
}
else
{
$hidetext = $lang['HiddenText'].' '.$lang['ToRead']. sprintf($lang['CollectPosts'], $arr[1]);
return "<BR><span class=small><font color=red>[$hidetext!]</font></span>";
}
}

В функцию ikoncode()
CODE:
$post = preg_replace_callback("#\[hide(?:=([0-9]+))*\](.+?)\[/hide\]#is", 'reg_exp_callback', $post);

lang.php
Добавляем строчки:
CODE:
$lang['HiddenText'] = 'Скрытый текст:';
$lang['ToRead'] = 'Для прочтения необходимо';
$lang['Register'] = ' <a href="register.php">зарегистрироваться</a> и';
$lang['CollectPosts'] = ' набрать не менее %d сообщений';

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0428]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33