VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Тихо рыдаю над 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 как-то обойтись? А?
Вы должны понять, что ваш модуль - это всего лишь написанный вами PHP-код, который вызывается программным комплексом форума автоматически. Места вызовов "разбросаны" разработчиками по всем скриптам. Исходя из этого, можно себе представить, что даже если вы повешаете ваш модуль в место вызова "неуправляемого кода" (по аналогии и в простонародье "хук") под названием global_start, это еще не гарантия того, что вы получите содержимое вашей $pagenav на всех страницах. Проще всего узнать на какой хук необходимо вешать модуль, это исследовать исходный код ядра в той части, поведение которой вы хотите изменить. Код вызова хука выглядит следующим образом:
Вполне вероятно, что продукт, который вы поставили, вообще не содержит вызовов хуков.
@mindframe
Специалист
Join Date: Nov 2010
Posts: 471
Версия vB: 3.8.x
Пол:
Reputation:
Professional 319
Репутация в разделе: 215
1
http://www.vbulletin.org/forum/showthread.php?t=221670
Ну в общем по мануалу.
@Gostemilov
Специалист
Join Date: Jun 2007
Location: Одинцово Московская область
Награды в конкурсах:
Posts: 610
Версия vB: 3.8.4
Reputation:
Professional 629
Репутация в разделе: 495
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";
}
Результат, как легко догадаться, нулевой. То есть нету его. В чем я накосячил и как, ***, все-таки передать эту переменную?
Sellrion
Kernel panic
Join Date: Aug 2007
Location: Екатеринбург
Posts: 2,536
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 1920
Репутация в разделе: 793
0
Проверку передаваемых в URL параметров грамотнее организовывать через использование массива $_REQUEST:
PHP Code:
$_REQUEST['do'] == 'listings'
Проверку наличия элемента в массиве намного лучше организовывать так:
PHP Code:
!isset($_REQUEST['catid'])
Во-вторых надо убедиться, что приведенное вами условие выполняется.
@Gostemilov
Специалист
Join Date: Jun 2007
Location: Одинцово Московская область
Награды в конкурсах:
Posts: 610
Версия vB: 3.8.4
Reputation:
Professional 629
Репутация в разделе: 495
0
Да чего убеждаться-то - взял да и убрал условие. Не передается все равно
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,737
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20269
Репутация в разделе: 8435
0
Gostemilov,
именно эта переменная не передается в шаблон?
а если какая то другая?
ну имя переменной другое дать
а вообще $pagenav должна генериться вобловской функцией
и если навигация есть, т.е. страниц больше чем итемов на 1 страницу, то появится
во многих же хаках это сделано
там в мануале подробно расписано, как и что делать для постраничной навигации
сначала запрос всех итемов (кол-во)
и затем делим эту цифру на кол-во данных на странице, получаем число страниц
@Gostemilov
Специалист
Join Date: Jun 2007
Location: Одинцово Московская область
Награды в конкурсах:
Posts: 610
Версия vB: 3.8.4
Reputation:
Professional 629
Репутация в разделе: 495
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;
$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, $perpage, 100, 10);
// 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 тоже пробовал.
Я где-то совершенно явно косячу, только никак не соображу где
Gostemilov, Z думаю что проблема в том что переменная $pagenav не глобальна в функции вывода(исполнения) шаблона, тоесть там ей просто не существует.
Попробуйте через $vbulletin
например так
$vbulletin->pagenav="123";
а потом в шаблоне <td align="$stylevar[right]">{vb:raw $vbulletin->pagenav}</td>
хотя у вас третья булка... я точно не помню как там в шаблон вставлять возможно просто $vbulletin->pagenav
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,737
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20269
Репутация в разделе: 8435
1
присвоить значение своей переменной и перед выводом в шаблон
PHP Code:
$HTML .= $cat->render();
добавить
PHP Code:
$cat->register('pagenav', $pagenav);
эта контора (дбтех) использует класс vB_Template - метод четверки при создании шаблонов
и соответственно, передачу переменных в шаблон