Static Page ID?

Creating and modifying plugins.
Post Reply
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Static Page ID?

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Static Page ID?

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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… ;-)
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post by gimmel »

Äääääh, Spartacus kennt die 3.62 noch nicht, oder? Wohin hast Du denn „commited“?
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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?
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Hm, Du könntest es mit $serendipity['smarty']->staticpage_pid probieren, oder $serendipity['smarty']->get('staticpage_pid')?

Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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?
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
gimmel
Regular
Posts: 118
Joined: Tue Jul 25, 2006 2:44 pm
Location: Quickborn/Germany
Contact:

Post 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!
Post Reply