Page 1 of 1
Static Page ID?
Posted: Mon Jul 28, 2008 2:37 pm
by gimmel
Für ein Plugin benötige ich die ID der aktuellen Static page. Den Permalink bekomme ich über Smarty $uriargs. Aber die ID nicht. Im Moment behelfe ich mir, indem ich die $uriargs in allen Static pages suche und so die ID herausfinde, aber dass ist irgendwie unsauber und kostet unnötige Rechenzeit.
Ich kriege es nicht raus, obwohl ich schon das ganze Buch durchforstet habe.
Re: Static Page ID?
Posted: Mon Jul 28, 2008 3:25 pm
by garvinhicking
Hi!
Wofür brauchst Du denn die ID?
Es geht nicht ohne am staticpage plugin etwas zu patchen. Habe gerade version 3.62 committed die dann $staticpage_pid ausfüllt.
Aber die Frage ist, ob du die ID wirklich brauchst.
Grüße,
Garvin
Posted: Mon Jul 28, 2008 4:58 pm
by gimmel
Ich möchte
http://www.enteractive.de (zur Zeit eigenes PHP) in Serendipity überführen. Ich möchte, dass sich das Kopfmenü automatisch aus den (zweisprachigen) Static pages erzeugt. (Zum Ausprobieren mal SERVICE, dann CREATIVE SERVICE anklicken.)
Dazu sind natürlich einige Abfragen nach Eltern- und Kind-Seiten, den gerade selektierten Menüpunkten, etc. nötig. Das lässt sich meiner Meinung nach über die IDs am besten lösen.
Ich habe in der global $serendipity noch was gefunden:
Code: Select all
[staticpage_plugin] => serendipity_event_staticpage Object
(
[staticpage] => Array
(
[id] => 3
usw.
Ich habe nur keine Ahnung, wie ich darauf zugreifen kann (mit Objekten habe ich es nicht so…

) und ob das ein gangbarer, konformer Weg ist.
Posted: Mon Jul 28, 2008 5:46 pm
by garvinhicking
Hi!
Ah, okay -- das verstehe ich, ja. Dann müsste der 3.62 patch den ich committed habe ja was für dich sein.
Den weg über das Objekt zu gehen wird nicht so wirklich viel bringen. Sinvoller wäre es da ggf. schon fast eher ein eigene s9y plugin zu schreiben was auch auf die staticpage-datenbanktabelle zugrieft...oder halt das aktuelle staticpage plugin auch zu modifizieren?
Grüße,
garvin
Posted: Mon Jul 28, 2008 5:56 pm
by gimmel
Neeee, ich modifiziere die Plugins nur ungern (nachher läuft nach dem nächsten Update wieder nix

).
Ich bin ja gerade dabei, ein Plugin zu schreiben, dass dieses Menü erzeugt (und komme dabei gerade ganz schön ins Schwitzen…), die Daten dafür hole ich mir sowieso aus der Datenbank. Die aktuell aufgerufene Seite (die ich für class="current" brauche) steht da aber auch nicht drin.
Dann werde ich jetzt mal ein Update machen.
Vielen Dank für Deine Hilfe!
Ich knie mich jetzt wieder in die Rekursionen…

Posted: Mon Jul 28, 2008 5:58 pm
by gimmel
Äääääh, Spartacus kennt die 3.62 noch nicht, oder? Wohin hast Du denn „commited“?
Posted: Mon Jul 28, 2008 6:00 pm
by garvinhicking
Hi!
Spartacus führt das erst in 24-48 Stunden, wenn Du's vorher willst kannst Du's aus dem CVS von sourceforge.net/projects/php-blog ziehen (php-blog.cvs.sourceforge.net oder so)
Grüße,
garvin
Posted: Tue Aug 12, 2008 1:12 am
by gimmel
garvinhicking wrote:
Habe gerade version 3.62 committed die dann $staticpage_pid ausfüllt.
Vielen Dank nochmal, es funktioniert wunderbar, wenn ich das Ganze als Smarty-Funktion in der config.inc.php baue. Dann lässt sich das Menü in der index.php mit
Code: Select all
{GenerateMenu selected=$staticpage_pid}
aufrufen.
Jetzt möchte ich daraus aber ein Plugin basteln, damit jeder etwas davon hat. Als PHP-Variable liegt die $staticpage_pid ja wohl nicht vor, deshalb versuche ich mit
Code: Select all
$current_id = $serendipity['smarty']['staticpage_pid'];
aufzurufen.
Leider bringt mir das den Fehler
Fatal error: Cannot use object of type Smarty as array, obwohl das Plugin nach den StaticPages aufgerufen wird.
Hast Du einen Tipp, wie ich innerhalb eines Plugins die aktuelle id auslese?
Posted: Tue Aug 12, 2008 1:59 pm
by garvinhicking
Hi!
Hm, Du könntest es mit $serendipity['smarty']->staticpage_pid probieren, oder $serendipity['smarty']->get('staticpage_pid')?
Grüße,
Garvin
Posted: Tue Aug 12, 2008 2:17 pm
by gimmel
garvinhicking wrote:Hm, Du könntest es mit $serendipity['smarty']->staticpage_pid probieren, oder $serendipity['smarty']->get('staticpage_pid')?
Leider nicht.
$serendipity['smarty']->staticpage_pid ist leer und
$serendipity['smarty']->get('staticpage_pid') gibt einen Fehler:
Fatal error: Call to undefined method Smarty::get()
Woher würde die get-Funktion denn kommen? Muss ich Smarty für das Plugin erstmal aktivieren? Und wenn ja, wie?
Posted: Tue Aug 12, 2008 2:32 pm
by garvinhicking
Hi!
Müsstest du mal in der Smarty-Doku nachschlagen, es gibt ne Methode mit der man variablen holt, irgendwas mit *get*
Grüße,
Garvin
Posted: Tue Aug 12, 2008 2:41 pm
by gimmel
Ich war so auf Serendipity gepolt, dass ich gar nicht daran gedacht habe, dass es ja eigentlich um Smarty geht…
Und gleich gefunden:
Code: Select all
$current_id = $serendipity['smarty']->get_template_vars('staticpage_pid');
Stundenlanges Rumprobieren, Suchen und dann das…
Soooooo einfach. Wo ist hier der Smiley, der sich vor den Kopf klatscht?
Wie immer vielen Dank!