PDA

View Full Version : энциклопедия


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
я перепробоал несколько вариантов, наример:

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;ltr=$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;ltr=$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;ltr=$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
попробуйте такой вариант,только не факт что не будет ошибок, т.к. не проверялось это.

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

Soniks
24.02.2010, 16:20
рад был помочь