Bitte nicht Bumpen, neue Informationen kannst du auch per EDIT hinzufügen...
Das ist schon erheblich komplizierter. Die Seitenzahlen werden - unabhängig wo sie eingesetzt werden - von einer zentralen Stelle generiert. Diese Funktion müsste man erweitern, dass sie auch Buchstaben liefern kann. Danach müsste man außerdem die viewforum so anpassen, dass sie bei ausgewähltem Buchstaben auch nur die Themen mit diesem Buchstaben anzeigt (ich nehme an, dass es das ist was du möchtest, oder?).
Probieren wir's:
Wichtig: Alle bearbeiteten Dateien und die Datenbank vorher sichern!
Die Funktion
generate_pagination befindet sich in der functions.php
suche nach
Code: Alles auswählen
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE)
und ersetze das durch
Code: Alles auswählen
function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE, $use_letters = FALSE)
Als nächstes das hier
Code: Alles auswählen
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . $i . '</a>';
ersetzen durch
Code: Alles auswählen
if($use_letters)
{
$page_string .= ( $i == $on_page ) ? '<b>' . strtoupper(base_convert(10, 36,$i+9)) . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . strtoupper(base_convert(10, 36,$i+9)) . '</a>';
}
else
{
$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . append_sid($base_url . "&start=" . ( ( $i - 1 ) * $per_page ) ) . '">' . $i . '</a>';
}
Das ganze kommt insgesamt 4 mal vor und muss auch an allen 4 Stellen ersetzt werden.
Falls du außerdem möchtest dass grundsätzlich das komplette Alphabet angezeigt wird und nicht nur die Buchstaben in der Umgebung der aktuellen Seite dann musst du zusätzlich in der gleichen Funktion noch folgende Änderung machen:
suche
ersetze durch
Das waren die Änderungen an der functions.php
Hinzu kommen jetzt noch die Anpassungen an der viewforum.php:
Suche hier die Zeilen
Code: Alles auswählen
$template->assign_vars(array(
'PAGINATION' => generate_pagination("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&topicdays=$topic_days", $topics_count, $board_config['topics_per_page'], $start),
'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $topics_count / $board_config['topics_per_page'] )),
'L_GOTO_PAGE' => $lang['Goto_page'])
);
ersetze sie durch das hier:
Code: Alles auswählen
if(in_array($forum_id, array(1, 2, 3)))
{
$template->assign_vars(array(
'PAGINATION' => generate_pagination("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&topicdays=$topic_days", 26, 1, $start, true, true),
'PAGE_NUMBER' => sprintf($lang['Page_of'], $start, 26),
'L_GOTO_PAGE' => $lang['Goto_page'])
);
}
else
{
$template->assign_vars(array(
'PAGINATION' => generate_pagination("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id&topicdays=$topic_days", $topics_count, $board_config['topics_per_page'], $start),
'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $topics_count / $board_config['topics_per_page'] )),
'L_GOTO_PAGE' => $lang['Goto_page'])
);
}
Zusätzlich muss nun noch die SQL Abfrage angepasst werden die die Themen aus der Datenbank holt:
Ersetze
Code: Alles auswählen
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
$limit_topics_time
ORDER BY $order_by
LIMIT $start, ".$board_config['topics_per_page'];
durch
Code: Alles auswählen
if(in_array($forum_id,array(1, 2, 3)))
{
if($start)
{
$where_add = "AND ( t.topic_title LIKE '".strtoupper(base_convert(10,36, $start + 9)) . "%' OR t.topic_title LIKE '". strtolower(base_convert(10, 36, $start + 9)) . "%') ";
}
else
{
$where_add = '';
}
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
$where_add
$limit_topics_time
ORDER BY $order_by
";
}
else
{
$sql = "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time
FROM " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TABLE . " p2, " . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
$limit_topics_time
ORDER BY $order_by
LIMIT $start, ".$board_config['topics_per_page'];
}