Page 1 of 1

Frage zum Plugin API 'external_plugin'

Posted: Mon Nov 27, 2006 7:32 pm
by SirRobert
Hi !

Ich schreibe grad an einem Plugin, das eigenen Content erzeugt. Nun möchte ich gerne, dass man die URL zu dieser Seite frei bestimmen kann. Im Backend soll man also den Permalink eingeben können.

Ich möchte z.B. einen Permalink wie serendipity/myContent

Aber irgendwie klappt das nicht. Wenn ich meinen Output in den plugin-Hook "entry_display" schreibe, dann erscheint der Content unterhalb des Footers.
case 'entry_display':
if ($this->isACTIVE()) {
if (is_array($eventData)) {
$eventData['clean_page'] = true; // This is important to not display an entry list!
} else {
$eventData = array('clean_page' => true);
}
}
echo 'HALLO';
break;
Unter der Seite erscheint also ein "HALLO".

Wenn ich meinen Ouptut in den Plugin-Hook 'external_plugin' schreibe, dann erscheint gar nichts:

Code: Select all

case 'external_plugin':
			  echo 'Hallo';
break;
(Im $probag event_hooks sind beide Hooks auf 'true' gestellt).

Ich erhalte wohl einen Output über external_plugin, wenn ich den Code auf eine URL wie serendipity/plugins/myContent umschreibe.

Dafür war dieser Hook ja auch eigentlich gedacht.

Kann ich daraus schließen, dass eigener Output nur über den Hook 'external_plugin' möglich ist? Müssen diese 'external_plugin'-Seiten immer über die URL serendipity/plugins/myContent aufgerufen werden, oder ist es auch möglich, den eigenen Output auf einem frei definierbarem Permalink auszugeben, wie eben z.B. serendipity/myContent ?

Oder kann ich auch den Hook 'entry_display' irgendwie verwenden, um mein 'HALLO' in die Seite zu schreiben?

Ein Tipp würde mir sehr weiterhelfen...

Grüße, Robert


P.S: Oder muss ich auf entry_header und entry_footer zurückgreifen (weniger schöne Lösung?) ?

Re: Frage zum Plugin API 'external_plugin'

Posted: Mon Nov 27, 2006 7:53 pm
by garvinhicking
Hi!

entry_display erlaubt kein echo. Dafür müsstest Du Smarty-Variablen zuweisen oder alternativ einen anderen Hook nehmen. Schau dir mal was wrapurl plugin an, das ist eins der einfachsten die eigenen content ausgeben.

External-plugin sorgt immer dafür dass Du eine URL via index.php?/plugin/blabha aufrufst. Dann hast Du aber kein umgebendes layout, sondern alle ausgaben dort erscheinen so 1:1 auf einer leeren seite.

Viele Grüße,
Garvin

Posted: Mon Nov 27, 2006 8:55 pm
by SirRobert
Hi Garvin,

vielen Dank für deine Tipps, das hat mir schonmal weitergeholfen. Das WrapURL Plugin kommt für mich zunächst nicht in Frage, da es ein "echtes" "allgemeines" s9y Plugin werden soll :)

Der Output über Smarty läuft jetzt auch!

Ich habe noch eine Frage: Lässt sich der gesamte "normale" Ouput irgendwie unterdrücken?

Ich weiß, der Hook 'external_plugin' ermöglicht dies. Das ist im Prinzip was ich brauche. Aber ich möchte wegen der eingeschränkten URL-Gestaltungsmöglichkeiten nicht auf diesen Hook zurückgreifen.

Kann ich den normalen Output vielleicht über den Hook 'frontend_display' unterdrücken?

Ich möchte dem User nämlich folgende Features bieten:

a) freie Gestaltung des Permalinks
b) freie Auswahl eines Seiten-Templates

Oder - ich traue mich kaum es auszusprechen - könnte man den Hook 'external_plugin' in der Basis derartig anpassen, dass alle URLs erlaubt sind? Ist diese Einschränkung nicht überflüssig?

Grüße, Robert

Posted: Mon Nov 27, 2006 10:58 pm
by garvinhicking
Hi!

Wrapurl war ja nur ein Beispiel damit Du siehst wie man's programmieren müsste :)
Ich habe noch eine Frage: Lässt sich der gesamte "normale" Ouput irgendwie unterdrücken?
Welchen meinst Du? Wenn Du das ganze s9y "drumherum" meinst, dann kriegst du das nur mit 'external_plugin' weg, musst dich dann aber um alles HTML kümmern.
Aber ich möchte wegen der eingeschränkten URL-Gestaltungsmöglichkeiten nicht auf diesen Hook zurückgreifen.
Was genau ist darin eingeschränkt?
Kann ich den normalen Output vielleicht über den Hook 'frontend_display' unterdrücken?
Nein. Du kannst aber im 'genpage' Hook $serendipity['template'] umsetzen auf das Theme was Du nutzen willst?

[quoe]
Oder - ich traue mich kaum es auszusprechen - könnte man den Hook 'external_plugin' in der Basis derartig anpassen, dass alle URLs erlaubt sind? Ist diese Einschränkung nicht überflüssig?
[/quote]

Du kannst evtl. mittels dem frontned_configure hook alle Variablen wie $_SERVER['REQUEST_URI'] so umbiegen dass sie in den Hook gehen wie Du die seite haben willst? Da musst Du evtl. mal was tüfteln :)

Generell ist es halt sinnvoll die externen Plugins über einen externen URL-Aufruf laufen zu lassen. Irgendwie muss das Blog ja erkennen was für eine Ausgabeseite es geben soll - einfach alles mit allem zu erlauben wirft so alles durcheinander. :)

Viele Grüße,
Garvin

Posted: Tue Nov 28, 2006 12:08 pm
by SirRobert
Hallo Garvin,

danke für die ausführliche Hilfe!

"Umbiegen" werde ich die Seite glaub' ich lieber nicht, dann nehm ich doch mal den external_plugin Hook.

Außerdem werd ich mir nochmal genau ansehen, wie das im StaticPages Plugin gemacht wurde...

Die Plugin-Engine ist aber wirklich durchdacht! Bin sehr zufrieden damit!

Grüße, Robert