Ich habe einen Code, der einen Standard-Pager ausgibt:
print theme('pager');
es gibt dies aus:
<h2 class="element-invisible">Pages</h2>
<div class="item-list">
<ul class="pager"><li class="pager-current first">1</li>
<li class="pager-item"><a title="Go to page 2" href="/drupal/node?page=1">2</a></li>
<li class="pager-item"><a title="Go to page 3" href="/drupal/node?page=2">3</a></li>
<li class="pager-next"><a title="Go to next page" href="/drupal/node?page=1">next ›</a></li>
<li class="pager-last last"><a title="Go to last page" href="/drupal/node?page=5">last »</a></li>
</ul>
Wie kann ich den HTML-Code in etwa so ändern:
<ul class="pagination">
<li><a href="#"><</a></li>
<li><a href="#">1</a></li>
<li><a href="#" class="active">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">></a></li>
</ul>
Ich habe mir diesen Thread angesehen: https://www.drupal.org/node/387786 , eine Funktion bartik_preprocess_custom_pager
und eine Datei custom-pager.tpl.php
in meinen Bartic-Designvorlagen erstellt, aber ich kann sie nicht zum Laufen bringen.
print theme('custom_pager');
gibt nichts aus. Weiß jemand, wie ich die HTML-Ausgabe für einen Pager anpassen und eine für nur eine Seite erstellen kann?
hook_theme()
, sonst weiß Drupal nicht, dass es eine neue Themenfunktion gibt. Leeren Sie den Cache, nachdem Sie ein Thema geändert haben.theme('pager');
. Jetzt verstehe ich sie nicht.$variables
automatisch abgerufen. Sie müssen nurhook_theme()
richtig implementieren . Zum Ändern einer Themenfunktion aus einem Modul ist der zu implementierende Hookhook_theme_registry_alter()
.Antworten:
Wie in meinem obigen Kommentar ausgeführt, sind die meisten Details in Ihrer obigen Implementierung falsch. Glücklicherweise gibt es in Drupal 7 sechs Themenfunktionen für den Pager:
Diese sollten es Ihnen ermöglichen, die meisten Anpassungen vorzunehmen, die Sie benötigen. Es gibt eine gute Stapelaustausch-Antwort zum Überschreiben von Drupal-Designfunktionen (), auf die Sie für Details verweisen können .
Schließlich haben Sie erwähnt, dass Sie den Pager nur für eine Seite überschreiben möchten. Ich denke immer noch, dass es sich lohnt, dies nur mit CSS zu tun, aber falls dies nicht der Fall ist, können Sie möglicherweise nur Teile des
$variables
Arrays überschreiben, je nachdem, welche Vorverarbeitungsfunktion den Pager enthält (ich weiß nicht genau, ob dies der Fall ist)preprocess_page
oderpreprocess_node
oder wenn es über eine der Vorverarbeitungsfunktionen überhaupt zugänglich ist).quelle
Dies ist meine Antwort aus einem früheren Beitrag .
Wenn Sie theme_pager implementieren , wird erwartet, dass Sie das gesamte Pager-Render-Array von Grund auf mit mehreren Designfunktionen erstellen - theme_pager_first , theme_pager_previous , theme_pager_next und theme_pager_last . Das scheint viel zu viel Arbeit zu sein, um eine Klasse hinzuzufügen.
Da theme_pager ganz am Ende theme_item_list aufruft , um das endgültige Render-Array zu erstellen, können Sie mit hook_preprocess_HOOK das Pager-Render-Array ändern, bevor Drupal es in HTML rendert.
Leeren Sie den Cache, nachdem Sie diesen Hook hinzugefügt haben.
UPDATE : Finde den ersten li.pager-Artikel:
UPDATE2 : Erstes und letztes li.pager-Element finden:
quelle