Hook zum Aufrufen einer Datei

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
Finn
Senior Member
Beiträge: 285
Registriert: Mo 3. Apr 2017, 13:37
Wohnort: Bremen
Kontaktdaten:

Hook zum Aufrufen einer Datei

Beitragvon Finn » Mo 3. Mai 2021, 15:55

Moin Moin,

die Doku wird ja gerade überarbeitet, aber bis dahin brauche ich nochmal Support beim Thema Hooks.

Das Projekt arbeitet mit WE 8.0.6.0.

Was ich herausgefunden habe, ich habe die Examples und kann diese in den custom Folder legen und sie werden ausgeführt.
Wenn ich das richtig gesehen habe, geht es nicht mehr die Hooks umzubenennen und in dem Template eines Dokuments zu referenzieren?

Zumindest sucht die Class in der Verzeichnisstruktur nur nach den "Event-Hooks"?

Was ich möchte, ist eigentlich garnicht so wild, beim Speichern möchte ich die ID des gespeicherten Dokuments als Parameter an eine URL hängen und diese URL aufrufen.

Hat da jemand ein Beispiel? Bin in der objektorientierten PHP Entwicklung leider absolut nicht drin.

Gruß
Finn
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Hook zum Aufrufen einer Datei

Beitragvon WBTMagnum » Di 4. Mai 2021, 11:31

Hallo Finn,
Finn hat geschrieben: Mo 3. Mai 2021, 15:55Wenn ich das richtig gesehen habe, geht es nicht mehr die Hooks umzubenennen und in dem Template eines Dokuments zu referenzieren?
Interessant! Der Ansatz ist mir neu. Wir verwenden Hooks aber auch "erst" seit wE7.
Finn hat geschrieben: Mo 3. Mai 2021, 15:55Was ich möchte, ist eigentlich garnicht so wild, beim Speichern möchte ich die ID des gespeicherten Dokuments als Parameter an eine URL hängen und diese URL aufrufen.
Wo soll diese URL aufgerufen werden? Im Frontend, oder im Backend?


Liebe Grüße,
Sascha

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Hook zum Aufrufen einer Datei

Beitragvon blickfang » Di 4. Mai 2021, 12:00

schaut mal in die BeispielHooks, da wird eigentlich schnell klar wie das Hook-Konstruktur funktioniert.

Dann einfach mit z.b. Curl einen http Aufruf machen und die gewünschten Parameter dran hängen.

Im Hook kann "normales" php geschrieben werden.
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

Benutzeravatar
Finn
Senior Member
Beiträge: 285
Registriert: Mo 3. Apr 2017, 13:37
Wohnort: Bremen
Kontaktdaten:

Re: Hook zum Aufrufen einer Datei

Beitragvon Finn » Mi 5. Mai 2021, 13:11

Der Hook soll im Backend beim Veröffentlichen eines Dokuments aufgerufen werden, soweit habe ich es auch geschafft. Der Punkt an dem ich nicht weiter komme ist folgender:

Ich brauche in dem Moment die ID des veröffentlichten Dokuments. Den Rest bekomme ich dann wieder hin :)
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Hook zum Aufrufen einer Datei

Beitragvon blickfang » Mi 5. Mai 2021, 13:19

in der we 8 müsste das in etwa so aussehen:

Code: Alles auswählen


function weCustomHook_save($param) {
	$hookHandler = $param['hookHandler'];
	$obj = $param[0];

	$docId = $obj->ID;
	$obj->getElement('feldname'); // irgendein anderes Feld aus dem Dokument

}	
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

ThomasGoebe

Re: Hook zum Aufrufen einer Datei

Beitragvon ThomasGoebe » Mi 5. Mai 2021, 13:37

@Timo: schreib das doch gleich in die neue Doku, dann wird schneller weiterentwickelt...

Benutzeravatar
Finn
Senior Member
Beiträge: 285
Registriert: Mo 3. Apr 2017, 13:37
Wohnort: Bremen
Kontaktdaten:

Re: Hook zum Aufrufen einer Datei

Beitragvon Finn » Di 11. Mai 2021, 17:12

biwaMedia hat geschrieben: Mi 5. Mai 2021, 13:19 in der we 8 müsste das in etwa so aussehen:

Code: Alles auswählen


function weCustomHook_save($param) {
	$hookHandler = $param['hookHandler'];
	$obj = $param[0];

	$docId = $obj->ID;
	$obj->getElement('feldname'); // irgendein anderes Feld aus dem Dokument

}	
Moin Timo,
danke für die Hilfe!

Das ist, was ich gebraucht habe!
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

mtbrmatze
Senior Member
Beiträge: 136
Registriert: Di 22. Jan 2013, 19:46

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Do 22. Dez 2022, 16:23

Hallo Finn,

ich habe das Beispiel hier gefunden, hast du dieses Beispiel evtl auch in die WE9 Version übertragen?

Ich habe in dem Post

Code: Alles auswählen

https://forum.webedition.org/viewtopic.php?t=42284
schon beschrieben, was ich möchte, aber ich komm nicht richtig weiter.

Ich habe ein Select Feld auf der Seite, wo ich gerne alle Kategorien zum Dokument auswählen möchte.
Wenn ich das Feld ausgebe, sind alle IDs mit Komma drinnen, so wie die Kategorien im jeweiligen Dokument gespeichert werden.

Ich würde nun gerne mit dem prePublish Hook gerne den Wert der Variable $pagecats in die Category und temp_category schreiben.

Ein altes Beispiel für WE8 gibts auch im Forum unter

Code: Alles auswählen

https://forum.webedition.org/viewtopic.php?f=23&t=42001#p104160
Wenn ich vielleicht dein Beispiel von WE8 und WE9 vergleichen könnte, dann würd ich vielleicht die Lösung finden.

Würde sehr helfen und danke schon im Voraus.

Matze

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Do 22. Dez 2022, 22:33

was ist denn der Sinn darin die Kategorien noch einmal auf der Bearbeiten Seite anzuzeigen?
Klar kann man das einfach in einen Hook übertragen, aber wenn es einen Sinn ergibt, kann das auch direkt in WE rein. Liegt es daran, das man die Kategorien einschränken will, also nur wenige anbieten, oder was ist der Gedanke?
webEdition-Kern-Entwickler

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Hook zum Aufrufen einer Datei

Beitragvon WBTMagnum » Fr 23. Dez 2022, 00:26

Hallo Marc,

Sh. viewtopic.php?f=87&t=42284#p105910


Liebe Grüße,
Sascha

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Fr 23. Dez 2022, 11:30

EIGENSCHAFTEN TAB sehr zeitraubend ist
Vielleicht sollte man dann hier nach einer anderen Lösung suchen....
Entweder per autocomplete+Auswahl, oder man definiert in der Vorlage die möglichen Kategorien, dann würde ja idr. ein Multi-Select reichen. Ich nutze Kategorien nicht, sonst wäre mir das sicher auch schon mal aufgefallen - wäre das jemand einen FR wert? Wer will das betreuen und die Idee entwickeln?
webEdition-Kern-Entwickler

mtbrmatze
Senior Member
Beiträge: 136
Registriert: Di 22. Jan 2013, 19:46

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Fr 23. Dez 2022, 16:32

Hallo,

danke dass sich nochmals einige an dem Thema interessieren.

Mein Gedankengang wäre der, dass Redakteure schneller über ein Selectfeld auf der Bearbeiten Seite eine Mehrfach Auswahl treffen können. Da die Variable genau die Kategorien ID mit Beitrich ausgibt, könnte diese beim Speichern schnell und einfach in die Kategorien übertragen werden.

Natürlich ist dies bei sehr vielen Kategorien vielleicht nicht die Beste Lösung, aber effizienter als des zig-malige Auswählen einzelner Kategorien.

Zum Thema Hooks habe ich leider noch keine (für mich brauchbare Hilfe gefunden, was aber an mir liegt) Ich bin ja auch kein PHP Programmierer. Aber ich denke, ein paar Anwender Beispiele, welche die Möglichkeiten von Hooks auch an Programmier Leihen erklären, würde vielen Administratoren von WE Seiten helfen.

Grüße und frohe Feiertage

Matze

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Fr 23. Dez 2022, 17:05

Aber ich denke, ein paar Anwender Beispiele, welche die Möglichkeiten von Hooks auch an Programmier Leihen erklären, würde vielen Administratoren von WE Seiten helfen.
Das ist hier genau das Problem. Das sind schon erweiterte Einsprungpunkte - wenn man hier was einbaut sollte man SEHR genau wissen was man tut und sich auch etwas mit den Interna von WE auskennen.
Mein Gedankengang wäre der, dass Redakteure schneller über ein Selectfeld auf der Bearbeiten Seite eine Mehrfach Auswahl treffen können.
Das kann man schon angehen. Der Sinn kann jetzt aber nicht sein, deshalb die Eigenschaften auf die Bearbeitenseite zu verschieben, sondern mehr zu überlegen wie man das verbessern kann. Generell kann es ja 100te Kategorien geben, die auch verschachtelt sind. Wenn man das vereinfachen will, könnte man bspw. auf der Vorlage Kategorien definieren die dann nur noch als Select vorliegen - aber ich würde darum bitten, das du das als Vorschlag unter den Features mit dem Rest der Community diskutierst, das dabei ein sinnvoller FR rauskommt.
webEdition-Kern-Entwickler

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Fr 23. Dez 2022, 17:27

Also um WE generell weiterzubringen, wäre es gut, wenn daran diskutiert wird. Um dir wenigstens mal schnell zu helfen, kannst du den Hook benutzen:

Code: Alles auswählen

<?php
declare(strict_types=1);

/**
 * if hook execution is enabled this function will be executed
 * when saving a document, template, object or class
 * The array $param has all information about the respective document.
 *
 * IMPORTANT!
 * Copy this file to the custom/hooks folder when doing any changes
 * Files in the sample_hooks folder are not executed and are not update-safe and will be overwritten by the next webEdition update
 *
 */
class we_hook_preSave extends we_hook_base{

	/** @var bool */
	protected $resave;

	/** @var we_document_base */
	protected $object;

	/**
	 *
	 * @param we_hook_handler $handler
	 * @param array{resave:bool,obj:we_document_base} $params
	 */
	public function __construct(we_hook_handler $handler, array $params){
		parent::__construct($handler, $params);
		$this->resave = param['resave'];
		$this->object = $params['obj'];
	}

	public function execute(): bool{
		if($this->resave){//rebuild brauch nix gemacht zu werden
			return true;
		}
		switch(get_class($this->object)){
			case 'we_webEditionDocument':
				if($this->object->TemplateID === 1){
					$new_categories = $this->object->getElementS('doccats'); //Die Kategorien aus dem Select sind in der Var doccats
					$this->object->temp_category = $new_categories;
					$this->object->Category = $new_categories;
				}
		}

		return true;
	}

}

Das wäre jetzt mal auf die Schnelle der Hook, den du als "we_hook_preSave.class.php" unter webEdition/custom/hook/ speichern solltest.
webEdition-Kern-Entwickler

mtbrmatze
Senior Member
Beiträge: 136
Registriert: Di 22. Jan 2013, 19:46

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Sa 24. Dez 2022, 16:20

Danke für die schnelle Hilfe.

Ich werde es ausprobieren.
Wenn es klappt, dann darf ich hoffentlich eine kleine Spende an die webEdition Leute machen, oder?

Ansonsten darf ich mich hoffentlich nochmals melden.

Greets und Frohe Feiertage.

Matze


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste