Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

> Paging-Unterstützung im Core, Informationsaustausch zwischen Core und Modul
Tiggr
Beitrag 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:
  • Paging für's Backend, klappt zur Zeit nur im Frontend, im Backend wird immer alles angezeigt, warum auch immer
  • Unterstützung für mod_rewrite (keine Ahung wie das geht!)
Ich häng auch ein triviales Testmodul an, mit dem man das ganze mal leicht testen kann.

Und so sieht das im Frontend aus:

Angehängte Datei  2007_02_26_225425.png ( 61.69KB ) Anzahl der Downloads: 72


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)
Angehängte Datei  Testmodul.cmsmod ( 2.16KB ) Anzahl der Downloads: 4
Angehängte Datei  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
Go to the top of the page
 
+Quote Post
 
Start new topic
Antworten
Olaf
Beitrag 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.


--------------------
Gruß Olaf aus Ohorn

Lieber spät und richtig als nie und falsch.
Go to the top of the page
 
+Quote Post

Beiträge in diesem Thema
- Tiggr   Paging-Unterstützung im Core   Mon. 26. February 2007, 22:57
- - Tiggr   Hiho! Ok, hab mehr Ergebnisse und gebe mich g...   Tue. 27. February 2007, 21:14
- - Tiggr   Bevor ich es lösche, hier mal alle von mir geänd...   Tue. 27. February 2007, 21:46
- - Olaf   Aber trotzdem, toller Versuch, Kompliment.   Tue. 27. February 2007, 23:19
- - bjoern   Wäre auf jeden Fall schön, wenn Du bei der Speic...   Wed. 28. February 2007, 22:23
- - mistral   was dabei aus meiner Sicht auch sinnvoll wäre ist...   Thu. 1. March 2007, 11:10


Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 20.6.24 - 08:48

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.