Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Модули (http://forum.mynuke.ru/forumdisplay.php?f=17)
-   -   энциклопедия (http://forum.mynuke.ru/showthread.php?t=3784)

raucher 11.02.2010 04:01

энциклопедия
 
огромное спасибо за множество интереснейшей информации.
остался только один вопрос по энциклопедии - сложно ли ограничить количество терминов на странице (например 30), а то 1000 статей на странице не особенно элегантно выглядит?

Soniks 19.02.2010 18:26

raucher т.е. как я понял вам нужна разбивка на страницы при просмотре страницы одной буквы в энциклопедии, так?

raucher 22.02.2010 02:36

энциклопедия
 
именно так. я лимитировал $result3 через $min, $perpage, но последующие страницы при просмотре страницы одной буквы в энциклопедии не показываются, к сожалению. я нашел множество модулей на основе энциклопедии, но все без нужного решения для nuke 6.9

Soniks 22.02.2010 16:19

Выложите модуль, который у вас, посмотрим, что можно сделать :wink:

raucher 22.02.2010 18:43

энциклопедия
 
Вложений: 1
я перепробоал несколько вариантов, наример:

PHP код:
 function terms($eid$ltr$min) {
    global 
$module_name$prefix$sitename$db$perpage$admin;
    
$perpage 3;
    
$eid intval($eid);
    if (empty(
$eid))
    {
           
$eid '';
       }
    
$row $db->sql_fetchrow($db->sql_query("SELECT active FROM ".$prefix."_encyclopedia WHERE eid='$eid'"));
    
$active intval($row['active']);
    
$row2 $db->sql_fetchrow($db->sql_query("SELECT title FROM ".$prefix."_encyclopedia WHERE eid='$eid'"));
    
$title stripslashes(check_html($row2['title'], "nohtml"));
    include(
"header.php");
    
title("$title");
    
OpenTable();
    
$tid intval($tid);
    if ((
$active == 1) OR (is_admin($admin))) {
    if ((
$active != 1) AND (is_admin($admin))) {
        echo 
"<center>"._YOURADMINENCY."</center><br><br>";
    }
    echo 
"<center>Please select one term from the following list:</center><br><br>"
        
."<table border=\"0\" align=\"center\">";
    
$result3 $db->sql_query("SELECT tid, title FROM ".$prefix."_encyclopedia_text WHERE UPPER(title) LIKE '$ltr%' AND eid='$eid' limit $min$perpage");
    
$min 0;
    
$perpage 3;
    
$fullcountresult $db->sql_query("SELECT tid, title FROM ".$prefix."_encyclopedia_text WHERE UPPER(title) LIKE '$ltr%' AND eid='$eid'");
    
$numrows $db->sql_numrows($fullcountresult);
    if (
$numrows == 0) {
        echo 
"<center><i>"._NOCONTENTFORLETTER.$ltr.</i></center>";
    }
    while (
$row3 $db->sql_fetchrow($result3)) {
        
$tid intval($row3['tid']);
        
$title stripslashes(check_html($row3['title'], "nohtml"));
        echo 
"<tr><td><a href=\"modules.php?name=$module_name&amp;op=content&amp;tid=$tid\  ">$title</a></td></tr>";
    }
    echo "
</table><br><br>";
    alpha(
$eid);
    } else {
    echo "
<center>"._ENCYNOTACTIVE."<br><br>"
        .""._GOBACK."
</center>";
    }
    if (
$numrows > 0)
     /* Calculates how many pages exist. Which page one should be on, etc... */
    
$linkpagesint = ($numrows / $perpage);
    
$linkpageremainder = ($numrows % $perpage);
    if (
$linkpageremainder != 0) {
        
$linkpages = ceil($linkpagesint);
        if (
$numrows < $perpage) {
            
$linkpageremainder = 0;
        }
    } else {
        
$linkpages = $linkpagesint;
    }
    /* Page Numbering */
    if (
$linkpages!=1 && $linkpages!=0) {
        echo "
<br><br>";
          echo ""._PAGE."
";
         
$prev=$min-$perpage;
         if (
$prev>=0) {
            echo "
&nbsp;&nbsp;<b>[ <a href=\"modules.php?name=$module_name&amp;op=terms&amp;eid=$eid&amp;lt  r=$ltr&amp;min=$prev&amp\">";
            echo 
" &lt;&lt; "._PREVIOUS."</a> ]</b> ";
      }
        
$counter 1;
     
$currentpage = ($max $perpage);
           while (
$counter<=$linkpages ) {
              
$cpage $counter;
              
$mintemp = ($perpage $counter) - $perpage;
              if (
$counter == $currentpage) {
        echo 
"<b>$counter</b>&nbsp;";
        } else {
        echo 
"<a href=\"modules.php?name=$module_name&amp;op=terms&amp;eid=$eid&amp;lt  r=$ltr&amp;min=$mintemp&amp\">$counter</a> ";
        }
               
$counter++;
           }
         
$next=$min+$perpage;
         if (
$x>=$perpage) {
            echo 
"&nbsp;&nbsp;<b>[ <a href=\"modules.php?name=$module_name&amp;op=terms&amp;eid=$eid&amp;lt  r=$ltr&amp;min=$max&amp\">";
            echo 
" "._NEXT." &gt;&gt;</a> ]</b> ";
         }
    }

    echo 
"</td></tr></table>";   CloseTable();
    include(
"footer.php");



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

спасибо
raucher

Soniks 23.02.2010 21:05

Вложений: 1
попробуйте такой вариант,только не факт что не будет ошибок, т.к. не проверялось это.

raucher 24.02.2010 01:58

ребята, вы лучше всех!
на некоторых форумах этот вопрос остался неотвеченным многие годы. я по быстому проверил: все работает, ошибки на экране отсутствуют.
огромное спасибо Soniks за помощь и терпение в общении с некомпететными новичками, как я
raucher

Soniks 24.02.2010 16:20

рад был помочь


Часовой пояс GMT +4, время: 10:36.

Copyright © 2005 by Soniks