Форум сетевых администраторов
Показаны 28 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Хаки от Netadmin или "Сделай сам" (http://netadmin.ws/forum/forumdisplay.php?forumid=65)
-- "1 2 3 4 ... Последняя страница" в vBulletin а я хочу (http://netadmin.ws/forum/showthread.php?threadid=5161)


Помещено Isvet 18-04-2003 в 02:35:

"1 2 3 4 ... Последняя страница" в vBulletin а я хочу

когда страниц слишком много в vBulletin делает так "1 2 3 4 ... Последняя страница" , а я хочу чтоб было так 1 2 3 ... 11 12 13. Мелось но все таки так проще...


Помещено MCTarakan 19-04-2003 в 01:00:

поддерживаю!

__________________
yMC.ru - хомяк музыканта


Помещено Ferz 21-04-2003 в 11:34:

Все бы хотели , а в Incvision такое уже есть, переходите на него

кстати вроде бы я видел какой то хак который так делает, на вборге...

__________________
КУКУ, врушка


Помещено MCTarakan 22-04-2003 в 00:45:

Ferz

quote:
переходите на него

фуууу, предатель!

__________________
yMC.ru - хомяк музыканта


Помещено H-BOMB 28-04-2003 в 18:50:

2MCTarakan


quote:
фуууу, предатель!


изгоним мерзкого предателя из рядов своих

__________________
пам парам пам пам


Помещено primitive 12-05-2003 в 16:22:

и в итоге? какие новости по этому сабжу?


Помещено Tagore 14-05-2003 в 17:20:

primitive
А где есть фунция, которая за это отвечает? Я хотел бы себе и на сайте такую, ее можно оторвать от остального кода? Нужен также код пагинации от вБ или Хиве - кто-нибудь его смотрел когда-то?

__________________
Международное брачное агенство в Сибири.


Помещено Denveroid 14-05-2003 в 20:36:

Tagore
Функция getpagenav() в admin/functions.php
Взять можно конечно. Неплохая функция для разбивки на страницы.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Tagore 15-05-2003 в 20:22:

Denveroid
Я знаю, где она, но мне не вполне не понятно, как она будет работать вне вБ кода. Как вынести ее оттуда? Или она просто будет работать? Помогите!

__________________
Международное брачное агенство в Сибири.


Помещено Denveroid 15-05-2003 в 22:25:

Tagore
У тебя так много званий (судя по подписи), а такие вопросы задаешь... Если ты знаешь php, то возьмешь. Если не знаешь php, то нечего и лезть туда. Извини за тон.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Tagore 16-05-2003 в 07:51:

Denveroid
Все правиьлно. Просто там много кода еще, которого надо взять... и тогда уже трудней.

__________________
Международное брачное агенство в Сибири.


Помещено Denveroid 16-05-2003 в 08:39:

Единственное что там мешает, так это вызов темлейтов. Ð_то можно легко заменить:

PHP:


function getpagenav($results, $address) {
    global 
$perpage, $pagenumber, $pagenavpages;
    if (
$results <= $perpage) 
    {
        return 
"";
    }
    
$totalpages = ceil($results/$perpage);
    if (
$pagenumber>1) 
    {
        
$prevpage = $pagenumber-1;
        
$prevlink = "<a href=\"$address&pagenumber=$prevpage\" title=\"Previous page\">&laquo;</a>";
    }
    if (
$pagenumber<$totalpages) 
    {
        
$nextpage = $pagenumber+1;
        
$nextlink = "<a href=\"$address&pagenumber=$nextpage\" title=\"Next page\">&raquo;</a>";
    }
    while (
$curpage++<$totalpages) 
    {
        if ( ( 
$curpage <= $pagenumber-$pagenavpages || $curpage >= $pagenumber+$pagenavpages ) && $pagenavpages!=0 ) 
        {
            if (
$curpage==1) 
            {
                
$firstlink = "<a href=\"$address&pagenumber=$curpage\" title=\"First page\">&laquo; First</a> ... ";
            }
            if (
$curpage==$totalpages)
            {
                
$lastlink = " ... <a href=\"$address&pagenumber=$curpage\" title=\"Last page\">Last &raquo;</a>";
            }
        } 
        else
        {
            if (
$curpage==$pagenumber) 
            {
                
$pagenav .= " [$curpage] ";
            } 
            else 
            {
                
$pagenav .= " <a href=\"$address&pagenumber=$curpage\">$curpage</a> ";
            }
        }
    }
    
$pagenav = "<b>$totalpages Pages: $firstlink $prevlink $pagenav $nextlink $lastlink</b>";
    return 
$pagenav;
}



И перед вызовом функции надо провести кое-какие манипуляци. Для каждого конкретного случая свои действия. Если кому-то ужасно все непонятно, могу объяснить на конкретном примере.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Tagore 16-05-2003 в 21:34:

Denveroid
Ужасно непонятного тут нет, ну перечилсить манипулации было бы очень даже великодушно со твоей стороны. А то ведь ты это уже делал, а я - никогда раньше код на части не разрывал.

__________________
Международное брачное агенство в Сибири.


Помещено MCTarakan 17-05-2003 в 01:13:

Denveroid уважаемый, может ты как для луюдей напишешь, ну как в стандарнтых хаках делают: "тут раньше было так, а теперь меняем на это..." а то не все Ð_НÐ_-соображающие тута

__________________
yMC.ru - хомяк музыканта


Помещено Denveroid 17-05-2003 в 11:45:

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

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено Tagore 17-05-2003 в 18:15:

Denveroid
А у тебя на сайте что за движок? Сам все писал или стянул откуда-то? Хорошо все-таки сделано. Грамотно.

__________________
Международное брачное агенство в Сибири.


Помещено Denveroid 17-05-2003 в 18:34:

Tagore
сам... но очень давно, 2 года назад. На самом деле он достаточно кривой. Сейчас вот думаю переписать, да со временем туго. Ну и с ленью все в порядке

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено MCTarakan 18-05-2003 в 02:24:

Denveroid жду, уважаемый!

__________________
yMC.ru - хомяк музыканта


Помещено Tagore 18-05-2003 в 10:10:

Denveroid
Вся страна ждет.
Все в ожидании...

__________________
Международное брачное агенство в Сибири.


Помещено Denveroid 18-05-2003 в 11:09:

Ð_ассказываю.
Допустим есть таблица статей tbl_articles:

CREATE TABLE tbl_articles (
id int(8) NOT NULL auto_increment,
category_id int(8) NOT NULL default '0',
user_id int(8) NOT NULL default '1',
title varchar(255) NOT NULL default '',
text text NOT NULL,
dateline int(10) NOT NULL default '0',
PRIMARY KEY (id),
KEY category_id (category_id)
) TYPE=MyISAM;

Теперь нам надо разбить статьи по, скажем, 5 штук на страницу для каждой категории.


PHP:


// ######### spliting pages ############

    // статей на страницу
    
$perpage=5;
    if(!isset(
$pagenumber)) $pagenumber=1;
    
// лимиты
    
$limitlower=($pagenumber-1)*$perpage+1;
    
$limitupper=($pagenumber)*$perpage;
    
// общее число статей
    
$articlescount=$db->query_first("SELECT COUNT(*) AS num
    FROM tbl_articles WHERE category_id=('тут номер категории')"
);

    
$totalarticles=$articlescount["num"];

    
$limitlower = ($pagenumber - 1) * $perpage + 1;
    
$limitupper = ($pagenumber) * $perpage;

    if (
$limitupper > $totalarticles) 
    {
        
$limitupper = $totalarticles;
        if (
$limitlower > $totalarticles) 
        {
            
$limitlower = $totalarticles- $perpage;
        }
    }

    if (
$limitlower <= 0) 
    {
        
$limitlower = 1;
    }

    
$sel_limitlower = $limitlower;

    
// вытаскиваем id статей
    
$getarticleids=$db->query("SELECT id FROM tbl_articles
    WHERE category_id=('тут номер категории')    LIMIT "
.($sel_limitlower-1).", $perpage");


    
// составляем список id's для запроса
    
$articleids="id IN (0";
    while(
$art=$db->fetch_array($getarticleids))
    {
        
$articleids.="," . $art["id"];
    }
    
$articleids.=")";

    
// вызов функции (это и будет переменная с ссылками на страницы)
    
$pagenav = getpagenav($totalarticles,"?perpage=$perpage");

// ################## /spliting pages ################

    // достаем всю информацию о статьях с выбранными id's
    
$rejects=$db->query("SELECT *    FROM tbl_articles WHERE $articleids");



Cама функция getpagenav:

PHP:

function getpagenav($results, $address) {
    global 
$perpage, $pagenumber;
                
// кол-во показываемых ссылок на страницы
    
$pagenavpages = 5;
    if (
$results <= $perpage) 
    {
        return 
"";
    }
    
$totalpages = ceil($results/$perpage);
    if (
$pagenumber>1) 
    {
        
$prevpage = $pagenumber-1;
        
$prevlink = "<a href=\"$address&pagenumber=$prevpage\" title=\"Previous page\">&laquo;</a>";
    }
    if (
$pagenumber<$totalpages) 
    {
        
$nextpage = $pagenumber+1;
        
$nextlink = "<a href=\"$address&pagenumber=$nextpage\" title=\"Next page\">&raquo;</a>";
    }
    while (
$curpage++<$totalpages) 
    {
        if ( ( 
$curpage <= $pagenumber-$pagenavpages || $curpage >= $pagenumber+$pagenavpages ) && $pagenavpages!=0 ) 
        {
            if (
$curpage==1) 
            {
                
$firstlink = "<a href=\"$address&pagenumber=$curpage\" title=\"First page\">&laquo; First</a> ... ";
            }
            if (
$curpage==$totalpages)
            {
                
$lastlink = " ... <a href=\"$address&pagenumber=$curpage\" title=\"Last page\">Last &raquo;</a>";
            }
        } 
        else
        {
            if (
$curpage==$pagenumber) 
            {
                
$pagenav .= " [$curpage] ";
            } 
            else 
            {
                
$pagenav .= " <a href=\"$address&pagenumber=$curpage\">$curpage</a> ";
            }
        }
    }
    
$pagenav = "<b>$totalpages Pages: $firstlink $prevlink $pagenav $nextlink $lastlink</b>";
    return 
$pagenav;
}

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено MCTarakan 18-05-2003 в 17:21:

эээ... а как к форуму это прикрутить???

__________________
yMC.ru - хомяк музыканта


Помещено Denveroid 18-05-2003 в 19:14:

MCTarakan
Куда именно ты хочешь прикрутить это? Я лишь показал сам принцип... а прикручивать надо уже исходя из потребностей и желаний.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено MCTarakan 18-05-2003 в 21:56:

Denveroid дык, как было запрошено в первом посте в тему... т.е. смотри, тут внизу стоит ща:

Страницы (2): « 1 [2]

Если бы тут было 10 страниц (например тут), то это выглядит так:

Страницы (10): « 1 2 [3] 4 5 » ... Последняя »

А хотелось бы, чтобы это выглядело так:

Страницы (10): « 1 2 3 ... 6 7 [8] 9 10 »
Страницы (10): « 1 2 [3] 4 5 ... 8 9 10 »

Т.е. показывало бы не только последнюю, но 2-3 перед ней! Тоже самое в threadlist-е!

__________________
yMC.ru - хомяк музыканта


Помещено Denveroid 18-05-2003 в 22:48:

MCTarakan
Господа, вы уже по-моему извращаетесь Ð_то ж есть в опциях.
Options -> Thread display options -> Pages to show in nav bar
Ставьте 0, и будет вам счастье.
Но тогда будут показываться все ссылки на все страницы везде (на всех страницах форума). То есть так: 1 2 3 4 5 6 7 8 9 10 11 и т.д. Если хочется конкретно в showthread такое сделать, то идем в showthread.php:
ищем строку:

$pagenav = getpagenav($totalposts,"showthread.php?s=$session[sessionhash]&threadid=$threadid&perpage=$perpage".iif(isset($highlight), "&highlight=$highlight", ""));

и перед ней добавляем:

$pagenavpages=0;

И опять же, будет вам счастье.

__________________
`
SiteMaker.Ru - Академия сайтостроительства


Помещено MCTarakan 19-05-2003 в 02:06:

Denveroid дык, а если страниц 20, а если 100???
просто человек сказал, что где-то (вроде в Инвижин) это осуществлено.. вот и хотелось бы!

__________________
yMC.ru - хомяк музыканта


Помещено Tagore 19-05-2003 в 06:33:

Denveroid
Так что последный твой пост не канет.
Я скоро выложу то, что я сделал. По поводу пагианции и upload в вБ.

__________________
Международное брачное агенство в Сибири.


Помещено Isvet 19-05-2003 в 06:47:

Tagore
Большое спасибо.
Но вначале я хотел чтоб когда просматриваешь топики (Тоесть forumdisplay.php) было не.
Тест !!! ( 1 2 3 4 ... Последняя страница ), а
Тест !!! ( 1 2 3 4 ... 101 102 103 ). А вы сделали showthread.php хотя эта тоже очень приятно


Помещено Tagore 31-05-2003 в 23:52:

Isvet
I'm very busy, sorry for that.
Не могу, экзамены, времени нет ...будет ...

__________________
Международное брачное агенство в Сибири.


Формат времени GMT. Текущее время 17:26.
Показаны 28 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.