4 Möglichkeiten der Navigation durch eine geänderte Artikelübersicht

Ursprüngliche Seitennavigation in 10er Schritten

Auf einer Joomla-Homepage gibt es von Haus erst einmal nur 2 Möglichkeiten der Artikelübersicht bei einem Seitenumbruch:

  1. die der Seitenanzeige bis zu einer Anzahl von zehn Seiten oder
  2. eine Artikelübersicht, die sich seitlich des Contents befindet.

Auf meiner Homepage Sylvis bunte Seite enthalten einige meiner Rebus-Beiträge bis zu 50 Bilderrätsel, die jeweils durch einen Seitenumbruch einzeln angezeigt werden. Ich empfand das Navigieren als sehr umständlich, da anfangs immer nur 10 einzelne Rebusse angewählt werden konnten. In diesem Beitrag werde ich beschreiben, wie man diese eingeschränkte Navigation ändern kann.

Warum überhaupt Seitenumbruch?

Bild - Ursprüngliche Seitennavigation in 10er SchrittenWie bereits angedeutet, wird die Einzelanzeige bei den meisten Rebusarten auf meiner Homepage durch einen Seitenumbruch erzeugt.

Warum ich diese Einstellung gewählt habe? Einerseits wären die Seitenladezeiten immens hoch, wenn z. B. 50 Rebusse in einer Seite gleichzeitig geladen würden. Andererseits wollte ich nicht für jedes Rebus einen separaten Beitrag erstellen. Die Beitragszahl wäre enorm und im Backend ginge im Laufe der Zahl die Übersichtlichkeit verloren.

Allerdings war es schon anfangs sehr umständlich, vom ersten bis zum letzten Rebus durchzublättern. Ich konnte ja immer nur 10 anwählen. Wollte man also zu Rebus Nr. 38, musste ich immer erst das 10. in der Reihe anklicken und mich in Zehnerschritten vorantasten, bis ich irgendwann endlich bei Nr. 38 angelangt war.

Bild - Artikelübersicht als Tabelle

Die andere Alternative wäre noch die Artikel in einer kompletten Übersicht anzuzeigen, was allerdings rein optisch für mich keine gelungene Umsetzung eines Inhaltsverzeichnisses darstellt. Sobald z. B. ein Rebus die gesamte Breite des Content-Bereiches ausfüllt, wird die Übersicht darüber “geklatscht”.

Die Einstellung von Seitennavigation auf Artikelübersicht wird im Backend in dem Plugin Inhalt – Seitenumbruch vorgenommen.



Bild - Einstellungen im Plugin Pagebreak

Leider gibt es hier keine Möglichkeit, die Anzeige der Artikelübersicht auf eine horizontale Anzeige zu ändern.

Änderung der Anzeige nur durch kleine Hacks möglich

Die vorgegebenen Anzeigemöglichkeiten gefallen mir nicht, daher muss ich kleine Änderungen im Code vornehmen, damit meine Besucher jedes einzelne Rebus anwählen können.

Anzeige aller Seiten

Vielen Homepage-Besitzern reicht es vielleicht, nicht nur 10 sondern alle anwählbare Seiten unter dem Beitrag aufzulisten. Dazu muss ich die Datei pagination.php ändern. Zu finden ist diese in dem Verzeichnis Name_der_Webseite\libaries\joomla\html\pagination.php:

// Set the pagination iteration loop values.
		$displayedPages = 10;
		$this->set('pages.start', $this->get('pages.current') - ($displayedPages / 2));
		if ($this->get('pages.start') < 1)
		{
			$this->set('pages.start', 1);
		}

(Bei mir ist dieser Code ab Zeile 95 zu finden)

Die Zeile

$displayedPages	= 10;

habe ich z. B. in der Weise geändert:

$displayedPages	= 100;



Bild - Anzeige aller Seitenzahlen

Ggf. muss noch in dem CSS zum Template die Breite zu pagination geändert werden z. B. in 99 %, damit die Seitenaufzählung sich über die gesamte Contentbreite erstreckt. Immerhin ist es nun schon einmal möglich, jede einzelne Seite anzusteuern.

 

Artikelübersicht optimieren

Optimal war das aber für meine Homepage immer noch nicht. Ich wollte, dass nicht die Seitenbezeichnung eines Rebusses angezeigt werden, sondern die Titelbezeichnung. Die Problematik bei mir besteht z. B., dass bei meinen Rebussen 51-100 die Seitennummerierung wieder bei 1 beginnt. Z. B. war Rebus 51 auf Seite 1 zu finden und Rebus 75 auf Seite 25. Ich wollte nun erreichen, dass Rebus 75 auch unter dem Titel Rebus 75 zu finden ist.

Also ist die Einstellung in dem Plugin Inhalt – Seitenumbruch “Seitentitel anzeigen = ja” im Ansatz schon mal richtig. Nur die vertikale Darstellung störte mich. Daher habe ich mir die Datei pagebreak.php in dem Verzeichnis Name_der_Webseite\plugins\content genauer angeschaut.

// TOC Header
$row->toc = '
<table cellpadding="0" cellspacing="0">
<tr>
<th>'
. JText::_( 'Article Index' ) .
'</th>
</tr>
';

// TOC First Page link
$class = ($limitstart === 0 && $showall === 0) ? 'toclink active' : 'toclink';
$row->toc .= '
<tr>
<td>
<a href="'. JRoute::_( '&showall=&limitstart=') .'">'
. $heading .
'</a>
</td>
</tr>
';

$i = 2;

foreach ( $matches as $bot )
{
$link = JRoute::_( '&showall=&limitstart='. ($i-1) );

if ( @$bot[0] )
{
$attrs2 = JUtility::parseAttributes($bot[0]);

if ( @$attrs2['alt'] )
{
$title    = stripslashes( $attrs2['alt'] );
}
elseif ( @$attrs2['title'] )
{
$title    = stripslashes( $attrs2['title'] );
}
else
{
$title    = JText::sprintf( 'Page #', $i );
}
}
else
{
$title    = JText::sprintf( 'Page #', $i );
}

$class = ($limitstart == $i-1) ? 'toclink active' : 'toclink';
$row->toc .= '
<tr>
<td>
<a href="'. $link .'">'
. $title .
'</a>
</td>
</tr>
';
$i++;
}

// Get Plugin info
$plugin =& JPluginHelper::getPlugin('content', 'pagebreak');

$params = new JParameter( $plugin->params );

if ($params->get('showall') )
{
$link = JRoute::_( '&showall=1&limitstart=');
$class = ($showall == 1) ? 'toclink active' : 'toclink';
$row->toc .= '
<tr>
<td>
<a href="'. $link .'">'
. JText::_( 'All Pages' ) .
'</a>
</td>
</tr>
';
}
$row->toc .= '</table>';
}

(Bei mir ist dieser Code ab Zeile 177 zu finden)

Wie man gut erkennen kann, ist die Artikelübersicht in eine Tabelle eingebettet. Ich habe die Tabellenstruktur entfernt, so dass der Code nun so aussieht:

// TOC Header
$row->toc = '
<h4><th>'
. JText::_( 'Article Index' ) .
'</th></h4>
';

// TOC First Page link
$class = ($limitstart === 0 && $showall === 0) ? 'toclink active' : 'toclink';
$row->toc .= '

<strong><a href="'. JRoute::_( '&showall=&limitstart=') .'">'
. $heading .
'</a></strong>
';

$i = 2;

foreach ( $matches as $bot )
{
$link = JRoute::_( '&showall=&limitstart='. ($i-1) );

if ( @$bot[0] )
{
$attrs2 = JUtility::parseAttributes($bot[0]);

if ( @$attrs2['alt'] )
{
$title    = stripslashes( $attrs2['alt'] );
}
elseif ( @$attrs2['title'] )
{
$title    = stripslashes( $attrs2['title'] );
}
else
{
$title    = JText::sprintf( 'Page #', $i );
}
}
else
{
$title    = JText::sprintf( 'Page #', $i );
}

$class = ($limitstart == $i-1) ? 'toclink active' : 'toclink';
$row->toc .= '
<a href="'. $link .'">'
. $title .
'</a>

';
$i++;
}

// Get Plugin info
$plugin =& JPluginHelper::getPlugin('content', 'pagebreak');

$params = new JParameter( $plugin->params );

if ($params->get('showall') )
{
$link = JRoute::_( '&showall=1&limitstart=');
$class = ($showall == 1) ? 'toclink active' : 'toclink';
$row->toc .= '
<strong><a href="'. $link .'">'
. JText::_( 'All Pages' ) .
'</a></strong>
';
}
$row->toc .= '';
}

 

Bild - Alle Beiträge können nun einzeln angewählt werden

Dieser Eingriff führte nun dazu, dass alle in dem Beitrag enthaltenen Rebusse anwählbar sind und mit dem jeweiligen Titel aufgeführt sind. Ich gebe zu, die Darstellung könnte noch etwas schöner sein. Damit werde ich mich wohl als nächstes befassen müssen.

Die Autorin:

Sylvi

Meine Beiträge beinhalten eigene Erfahrungen über Soft- und Hardware, Social Media und die ich als WordPress-Bloggerin und Joomlanerin gesammelt habe. Zudem widme ich mich dem schönen Hobby "Fotografie".

2 Kommentare