Paging-Unterstützung im Core, Informationsaustausch zwischen Core und Modul |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
Paging-Unterstützung im Core, Informationsaustausch zwischen Core und Modul |
Mon. 26. February 2007, 22:57
Beitrag
#1
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Hallo!
Hier mal die Fortsetzung des Feature-Requests zum Paging als Core-Funktionalität. Die Idee hinter dem ganzen, ist es eine Gruppe von MOD_VALUE[] zu schaffen, die nicht nur im Modul, sondern auch im Core ausgewertet werden. Andersrum gibt es auch eine Gruppe solcher Werte, die der Core an das Modul zurück gibt. Nachdem ich festgestellt habe, dass ja die Bezeichnung nicht rein nummerisch sein muß, habe ich mich entschieden, diese in der Form 'cms:identifier' zu benennen, um sie von normalen MOD_VALUE[]-Werten zu unterscheiden. Moment hab ich nur zwei Variablen eingebaut, die für das Paging benutzt werden Diese sind: cms:paging Diese teilt Sefrengo mit, dass man den Inhalt eines Containers nur teilweise ausgeben möchte. cms:items_per_page Teilt Sefrengo dann mit, wie lang der auszugebende Teil ist. In der Konfiguration des Moduls sieht das ganze dann wie folgt aus: QUELLTEXT <?php // Paging aktivieren/deaktivieren $mip_form['cms:paging']['desc'] = 'Inhalte auf mehrere Seiten aufteilen und Navigation anzeigen?'; $mip_form['cms:paging']['cat'] = 'chk'; $mip_form['cms:paging']['option_var']['0'] = 'MOD_VAR[cms:paging]'; $mip_form['cms:paging']['option_val']['0'] = $dedi_mod['value']['cms:paging']; $mip_form['cms:paging']['option_desc']['0'] = 'ja'; $mip_form['cms:paging']['option_val_select']['0'] = 'true'; // Elemente pro Seite $mip_form['cms:items_per_page']['cat'] = 'txt'; $mip_form['cms:items_per_page']['desc'] = 'Elemente pro Seite:'; $mip_form['cms:items_per_page']['cms_var'] = 'MOD_VAR[cms:items_per_page]'; $mip_form['cms:items_per_page']['cms_val'] = $dedi_mod['value']['cms:items_per_page']; $mip_form['cms:items_per_page']['cms_val_default'] = '15'; mip_formsp($mip_form['cms:paging']); mip_formsp($mip_form['cms:items_per_page']); ?> Vorteil: Das Modul braucht sich nicht mehr um die Aufteilung des Contents zu bemühen, Sefrengo übernimmt das. Dadurch wird nicht unwesentlich Speicher gespart. Im Gegenzug ermittelt der Core für das Modul einige wesentliche Daten für die Seitennavigation: Anzahl der Elemente, und die aktuell dargestellt Seite. MOD_VALUE[cms:elements] Steht im Modul zur Verfügung und enthält die Gesamtzahl der Elemente. MOD_VALUE[cms:akt_page] Enthält die aktuell dargestellte Seite, die Zählung beginnt mit 1. Der Core liest dazu im Request eine Variable aus, deren Name in den Einstellungen der jeweiligen Sprache eingestellt werden kann. Frage: Macht das Sinn, das Sprachabhängig zu machen? Muß das überhaupt wählbar sein? In der Frontendausgabe des Moduls können diese Werte dann verwendet werden: QUELLTEXT <CMSPHP> echo '<p>Elemente gesamt: MOD_VALUE[cms:elements]<br />'; echo 'Aktuelle Seite: MOD_VALUE[cms:akt_page]</p>'; </CMSPHP> Oder komplexer, um eine Navigation aufzubauen (Der Code ist nicht getestet und nur als Beispiel zu verstehen!): QUELLTEXT $pager =& sf_factoryGetObject('GUI', 'Pager'); $pager->setTotalItems(MOD_VALUE[cms:elements]); $pager->setCurrentPage(MOD_VALUE[cms:akt_page]); $pager->setItemsPerPage(MOD_VALUE[cms:items_per_page]); $pager->generate(); $out = str_replace('{navigation}', $pager->getLinks(), $template); Damit sollte es Modulautoren wesentlich leichter sein, eine Seitennavigation in ihren Modulen zu integrieren. Darüber hinaus werden noch die Resourcen (=Speicher) geschont, da nur das verarbeitet werden muß, was auch dargestellt wird. Notwenig dafür ist zum einen eine angepaßte inc.generate_code.php, zum anderen kleine Fixes im SQL der Sprachanlage und Installation, und an der Sprachdatei lang_clients_config.php. Die beigelegte inc.generate_code.php verwendet hardcoded die Request-Variable 'page' um leicht testen zu können. Was auch noch fehlt ist:
Und so sieht das im Frontend aus: Und jetzt bitte Vorschläge, Tipps, Meinungen... Tschüss Tiggr Der Beitrag wurde von Tiggr bearbeitet: Mon. 26. February 2007, 23:05
Angehängte Datei(en)
Testmodul.cmsmod ( 2.16KB )
Anzahl der Downloads: 4
inc.generate_code.php ( 17.71KB ) Anzahl der Downloads: 4 -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Tue. 27. February 2007, 23:19
Beitrag
#2
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 613 Mitglied seit: 30.06.2006 Mitglieds-Nr.: 30 |
Aber trotzdem, toller Versuch, Kompliment.
-------------------- |
|
|
Vereinfachte Darstellung | Aktuelles Datum: 20.6.24 - 08:48 |