форум vBSupport.ru > vBulletin > vBulletin 3.8.x > Вопросы по vBulletin 3.8
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Gostemilov
Специалист
Default Как передать значение из PHP скрипта на страницу.
0

Тихо рыдаю над Dbtech Vbdownloads Pro версии 1.3.8 (впрочем, в 2.0.2 практически ничего не изменилось)

Мало того, что все загрузки и скрины валятся в общую кучу, что означает, что через 3-4 сотни загруженных файлов (к каждому штучки по 4 скрина) каталог будет переполнен. Ладно, не впервой, написал модуль загрузки файлов в размещением по дате.

Но!!! Я глазам не поверил, когда обнаружил, что в скрипте В ПРИНЦИПЕ нет разбиения на страницы! То есть если в категорию отправлено, к примеру, 5 тыщ файлов, то все 5 тыщ он и выведет на ОДНОЙ странице. Положив и сервер, и терпение юзера, и все что там еще под руку подвернется.

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

Итог:
vbdownloads.php при do=listings вызывает файл listings.php, в котором и идет определение того, что из записей надо вывести на страницу.

В этом файле путем нехитрых добавлений у меня появилось некое

PHP Code:
$ALLOW_ON_PAGE 25//Записей на страницу
$totalpages=ceil($totalrecords/$ALLOW_ON_PAGE); 
что дает возможность через нехитрый FOR создать постраничную навигацию. (Я не упоминаю про то, что при большом числе страниц для начала порвет весь шаблон и про другие подводные камни. Это потом)

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

PHP Code:
$pagenav="Hello,world!"
передать в шаблон.

И модуль создавал, и на global_start его вешал, и global $pagenav прописывал... Ну не идет каменный цветок, хоть тресни! Как бы все-таки переменную в шаблон запихнуть, добры люди? http://vbsupport.ru/forum/showthread.php?t=3957 честно читал, да я ранее что-то по этому мануалу делал, все было нормально...

Или есть возможность без этого (нецензурно) с помошью construct_page_nav как-то обойтись? А?
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
0

Вы должны понять, что ваш модуль - это всего лишь написанный вами PHP-код, который вызывается программным комплексом форума автоматически. Места вызовов "разбросаны" разработчиками по всем скриптам. Исходя из этого, можно себе представить, что даже если вы повешаете ваш модуль в место вызова "неуправляемого кода" (по аналогии и в простонародье "хук") под названием global_start, это еще не гарантия того, что вы получите содержимое вашей $pagenav на всех страницах. Проще всего узнать на какой хук необходимо вешать модуль, это исследовать исходный код ядра в той части, поведение которой вы хотите изменить. Код вызова хука выглядит следующим образом:
PHP Code:
($hook vBulletinHook::fetch_hook('ajax_start')) ? eval($hook) : false
Вполне вероятно, что продукт, который вы поставили, вообще не содержит вызовов хуков.
 
 
mindframe
Специалист
 
mindframe's Avatar
Default
1

http://www.vbulletin.org/forum/showthread.php?t=221670
Ну в общем по мануалу.
 
 
Gostemilov
Специалист
Default
0

Ну хорошо, (все равно не выходит ни по http://www.vbulletin.org/forum/showthread.php?t=221670 ни по http://www.vbulletin.org/forum/showthread.php?t=120540)
Есть главная страница, допустим, index.php, которая вызывает какие-то там модули с помощью URL параметров, например, do=listings

Добиться. чтобы в этот самый модуль выдавал на страницу нужное число результатов (а не все сразу) удалось легко, добавив в URL &page=NNN и с последующей обработкой $_GET['page']

Но! Пагинация-то должна выводиться именно на этой самой index.php (в случае, конечно, если запрос содержит явное указание на категорию, из которой выводить результаты)

В эту самую index.php я воткнул следующее:

PHP Code:
if ($_GET['do'] == 'listings' AND !empty($_GET['catid'])) {

//бла-бла-бла
//И, наконец, чтоб хоть тут ошибки не искать
$pagenav="123";

То есть уж проще некуда. Пока все верно?

В шаблон вывода подставлено

PHP Code:

<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-bottom:3px">
<
tr valign="bottom">
    <
td class="smallfont">&nbsp;</td>
    <
td align="$stylevar[right]">$pagenav</td>
</
tr>
</
table
Результат, как легко догадаться, нулевой. То есть нету его. В чем я накосячил и как, ***, все-таки передать эту переменную?
 
 
Sellrion
Kernel panic
 
Sellrion's Avatar
Default
0

Проверку передаваемых в URL параметров грамотнее организовывать через использование массива $_REQUEST:
PHP Code:
$_REQUEST['do'] == 'listings' 
Проверку наличия элемента в массиве намного лучше организовывать так:
PHP Code:
!isset($_REQUEST['catid']) 
Во-вторых надо убедиться, что приведенное вами условие выполняется.
 
 
Gostemilov
Специалист
Default
0

Да чего убеждаться-то - взял да и убрал условие. Не передается все равно
 
 
kerk
k0t
 
kerk's Avatar
Default
0

Gostemilov,
именно эта переменная не передается в шаблон?
а если какая то другая?
ну имя переменной другое дать
а вообще $pagenav должна генериться вобловской функцией
и если навигация есть, т.е. страниц больше чем итемов на 1 страницу, то появится
во многих же хаках это сделано
там в мануале подробно расписано, как и что делать для постраничной навигации
сначала запрос всех итемов (кол-во)
и затем делим эту цифру на кол-во данных на странице, получаем число страниц
 
 
Gostemilov
Специалист
Default
0

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

Чтоб не играть в испорченный телефон. В скрипте (в аттаче) отрабатывается vbdownloads.php, которвя с параметром do=listings вызывает dbtech/downloads/actions/listings.php , в которой и сидит SQL запрос выборки записей. В оригинале (строка 21) там вообще нет ограничений по количеству, надо ставить LIMIT. Чтоб поставить этот LIMIT я вынужден передавать через глобальную переменную из той самой vbdownloads.pgp

То есть все упирается именно в стартовую страницу скрипта. В ней, после строки 35 при определении переменных добавлено

PHP Code:
global $ALLOW_ON_PAGE;
global 
$PAGE_NUMBER;
global 
$CATFROM;

$PAGE_NUMBER $_GET['page'];
$ALLOW_ON_PAGE 2;
$CATFROM $_GET['catid']; 
что дает мне возможность манипулировать количеством записей, выводимых на страницу и номером страницы.

Добавление переменной любого типа (хоть INT, хоть TEXT) и попытка вывести ее через шаблон - неудачна.

Пробовал, к примеру, так:

PHP Code:

if ($_GET['do'] == 'listings' || !$_GET['catid']) {

// Default page variables
$perpage $vbulletin->input->clean_gpc('r''perpage'TYPE_UINT);
$pagenumber $vbulletin->input->clean_gpc('r''pagenumber'TYPE_UINT);


$bannedcount $db->query_first("SELECT COUNT(`groupid`) AS `bannedcount` FROM `" TABLE_PREFIX "dbtech_downloads_filegroup` WHERE categoryid=$CATFROM");

// Make sure all these variables are cool
sanitize_pageresults($bannedcount['bannedcount'], $pagenumber$perpage10010); 

    
// Default lower and upper limit variables
    
$limitlower = ($pagenumber 1) * $perpage 1;
    
$limitupper $pagenumber $perpage;
    if (
$limitupper $bannedcount['bannedcount'])
    {
        
// Too many for upper limit
        
$limitupper $bannedcount['bannedcount'];
        if (
$limitlower $bannedcount['bannedcount'])
        {
            
// Too many for lower limit
            
$limitlower $bannedcount['bannedcount'] - $perpage;
        }
    }
    if (
$limitlower 1)
    {
        
// Can't have negative or null lower limit
        
$limitlower 1;
    }  
     
// Finally construct the page nav
//    $pagenav = construct_page_nav(1, 10, 100, 'l2cp.php?' . $vbulletin->session->vars['sessionurl'] . 'do=viewbanned'); 

$pagenav="123";

это вариант отсюда: http://www.vbulletin.org/forum/showt...ght=Paginating

Ну и отсюда тоже http://www.vbulletin.org/forum/showt...light=Paginate тоже пробовал.

Я где-то совершенно явно косячу, только никак не соображу где
Attached Files
File Type: rar vBDownloads v1.3.8 UPDATED for vBulletin v3.8.x and v4.x UPDATED.rar (610.5 KB, 1 views)
 
 
Arnowt
Продвинутый
Default
1

Gostemilov, Z думаю что проблема в том что переменная $pagenav не глобальна в функции вывода(исполнения) шаблона, тоесть там ей просто не существует.
Попробуйте через $vbulletin
например так
$vbulletin->pagenav="123";
а потом в шаблоне <td align="$stylevar[right]">{vb:raw $vbulletin->pagenav}</td>
хотя у вас третья булка... я точно не помню как там в шаблон вставлять возможно просто $vbulletin->pagenav
 
 
kerk
k0t
 
kerk's Avatar
Default
1

присвоить значение своей переменной и перед выводом в шаблон
PHP Code:
$HTML .= $cat->render(); 
добавить
PHP Code:
$cat->register('pagenav'$pagenav); 
эта контора (дбтех) использует класс vB_Template - метод четверки при создании шаблонов
и соответственно, передачу переменных в шаблон
 

Tags
vbdownloads pro, навигация, пагинация


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 08:53 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.