Frage zum Plugin API 'external_plugin'

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
SirRobert
Regular
Posts: 38
Joined: Fri Oct 14, 2005 12:18 am

Frage zum Plugin API 'external_plugin'

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

Re: Frage zum Plugin API 'external_plugin'

Post 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
# 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/
SirRobert
Regular
Posts: 38
Joined: Fri Oct 14, 2005 12:18 am

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

Post 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
# 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/
SirRobert
Regular
Posts: 38
Joined: Fri Oct 14, 2005 12:18 am

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