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:

Re: Hook zum Aufrufen einer Datei

Beitragvon Finn » Mi 28. Dez 2022, 00:48

Ich denke der Ansatz ist af jeden Fall einen FR wert, die Kategorien sind sehr mächtig, aber z.T. von der Usability nicht mehr zeitgemäß.
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Mo 9. Jan 2023, 15:39

Ein gutes Neues Jahr.

Wie versprochen darf ich mich nochmals melden.
Ich habe den Hook mit dem entsprechenden Dateinamen gespeichert.
Ich habe nun ausprobiert, in den Kategorien werden die Werte nicht gespeichert, es werden dafür aber 2 Fehlermeldungen ausgegeben, siehe weiter unten.

Darf ich nochmals um Hilfe bitten, danke
Matze

Fehlermeldung 1:

Code: Alles auswählen

Warning

Error message: 	Illegal string offset 'resave'

Script name: 	webEdition/custom/hook/we_hook_preSave.class.php

Line number: 	29

Backtrace: 	
#0 we_base_errorHandler::errorHandler called at [webEdition/custom/hook/we_hook_preSave.class.php:29]
#1 we_hook_preSave->__construct called at [webEdition/we/classes/hook/we_hook_handler.class.php:60]
#2 we_hook_handler->__construct called at [webEdition/we/classes/document/we_document_textContent.class.php:173]
#3 we_document_textContent->we_save called at [webEdition/we/classes/document/we_document_webEdition.class.php:578]
#4 we_document_webEdition->we_save called at [webEdition/we/classes/editor/we_editor_functions.class.php:601]
#5 we_editor_functions::saveDocument called at [webEdition/we_cmd.php:177]
#6 findInclude called at [webEdition/we_cmd.php:418]

Request: 	

[we_cmd] => Array
	(
	    [0] => save_document
	    [1] => 45c18fc937482de8f097689585341bd3
	    [2] => 0
	    [3] => 1
	    [4] => 0
	    [5] => W1sicHVibGlzaFdoZW5TYXZlIl1d
	    [6] => 
	)

[we_transaction] => 45c18fc937482de8f097689585341bd3
[we_fac3dae91ef03ebfbc36583fdd852950_select] => Array
	(
	    [doccats#multiple] => Array
	        (
	            [0] => 3
	            [1] => 2
	            [2] => 4
	        )

	)

[we_fac3dae91ef03ebfbc36583fdd852950_txt] => Array
	(
	    [myue] => 
	    [leer] => 
	)

[we_complete_request] => 1



Die zweite Fehlermeldung:

Code: Alles auswählen

Error type: 	

Warning

Error message: 	

Use of undefined constant param - assumed 'param' (this will throw an Error in a future version of PHP)

Script name: 	

webEdition/custom/hook/we_hook_preSave.class.php

Line number: 	

29

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Mo 16. Jan 2023, 20:33

Hallo

kann ich vielleicht noch etwas beisteuern, damit eine Lösung gefunden werden könnte?

Matze

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 17. Jan 2023, 19:49

Moin Matze, eventuell ist das als Bugeintrag mit vollständigen Errorlogs besser aufgehoben.

https://qa.webedition.org
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Mi 18. Jan 2023, 11:02

nein, das ist kein Bug.
Das ist ein FR, und es sollte hier ein Diskussionsbeitrag über dessen Relevanz gemacht werden.
Ich hatte ja das grundsätzliche Gerüst gepostet, aber nicht getestet. Hab aber auch grad keinen Kopf dafür.
webEdition-Kern-Entwickler

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 » Do 19. Jan 2023, 14:28

Okay, dann entsprechend formuliert als FR hier im Forum
Finn Thorwarth
WG Werbeagentur
https://www.wg-werbeagentur.de

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Fr 20. Jan 2023, 12:51

Hallo Leute.

Ich wollte nicht unhöflich sein, aber ich denke das Forum ist doch dazu da, Lösungen zu finden.

Ich habe nach meinem Können probiert nachzuvollziehen, wieso dieses Script nicht funktioniert. Da die Fehler

Code: Alles auswählen

Illegal string offset 'resave'
und

Code: Alles auswählen

Undefined constant param assumed 'param'
teile des WE Codes sind, dachte ich mir, ich frage nochmals nach.

Es gibt hier im Forum eine Demo einer der alten WE Version, wenn jemand etwas Neueres zu bieten kann, wäre mir halt sehr geholfen.

Schönes Weekend
Matze

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Fr 20. Jan 2023, 12:59

Hab euch für die Mühen trotzdem mal eine Spende zukommen lassen.

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

Re: Hook zum Aufrufen einer Datei

Beitragvon WBTMagnum » Fr 20. Jan 2023, 17:55

Hallo Matze,

Ich denke du musst folgende Codezeile tauschen:

Code: Alles auswählen

- $this->resave = param['resave'];
+ $this->resave = $params['resave'];
HTH,
Sascha

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Fr 20. Jan 2023, 23:31

Danke Sascha.

Die Fehlermeldungen sind weg.
Aber es werden keine Änderungen vorgenommen.

Hier nochmals der Code we_hook_preSave.class.php ich habe auch die Datei we_hook_publish.class.php angelegt.

Code: Alles auswählen

<?php
declare(strict_types=1);
class we_hook_preSave extends we_hook_base{
	protected $resave;
	protected $object;

	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':						
					$new_categories = $this->object->getElements('doccats'); // Die ausgewählten Kategorien liegen in doccats
					$this->object->temp_category = $new_categories;
					$this->object->Category = $new_categories;
					
					$static = "123456";
				        $this->object->newstatic = $static;
					$newleer = $this->object->getElements('myue');
					$this->object->leer = $newleer;
		}
		return true;
	}
}
Für Hilfe, hier liegt auch zur Sicherheit mein Template Code

Code: Alles auswählen

Kategorien gewählt/alle anzeigen:<br>
<we:listview type="category" order="Title" desc="false" >
	<we:ifFound>
		<we:select name="doccats" multiple="true" class="my-select-big" style="height: 500px!important;">
			<we:repeat>
				<option value='<we:field name="we_id"/>'><we:field name="we_title"/></option>
			</we:repeat>
		</we:select>
	</we:ifFound>
</we:listview>
<hr>
Variable doccats ausgeben = <we:var type="document" name="doccats" />
<hr>
KatIDs des Dokuments:     <we:category field="ID" multiple="true" />   <br>
KatTitle des Dokuments:   <we:category field="Title" multiple="true" /><br>
<hr>
myue = <we:input type="text" name="myue" />  <br>
leer = <we:input type="text" name="leer" />  <br>
new-static = <we:input type="text" name="newstatic" />

In tblContent stehen genau die IDs der ausgewählten Kategorien:

tblFile 8 txt doccats NULL 6,9,8,7,3,2

Weiss noch jemand Rat?

Matze

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Sa 21. Jan 2023, 11:42

hast du denn den FR im Forum zur Diskussion gestellt? Das dies ein Kernfeature wird?
viewtopic.php?t=42257

Wenn man Hooks einsetzt, sollte man sich ansich auch etwas mit PHP/WE intern auskennen. Das ist eben eine interne Schnittstelle.
webEdition-Kern-Entwickler

maurus.g
Junior Member
Beiträge: 23
Registriert: Do 8. Mär 2018, 14:15

Re: Hook zum Aufrufen einer Datei

Beitragvon maurus.g » Do 26. Jan 2023, 10:59

Hallo

Ich darf mich in diese Diskussion einmischen. Den Gedankengang finde ich recht interessant, da auch ich viele Kategorien habe.
Funktioniert der Hook nun zuverlässig, bzw. könnte Jemand den fertigen Code nochmals posten?

Danke
Maurus

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mtbrmatze » Fr 27. Jan 2023, 10:44

Wenn man Hooks einsetzt, sollte man sich ansich auch etwas mit PHP/WE intern auskennen. Das ist eben eine interne Schnittstelle.
Eben deshalb frage ich hier ja um Hilfe und ich dachte dafür ist dieses Forum da.

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

Re: Hook zum Aufrufen einer Datei

Beitragvon mokraemer » Sa 28. Jan 2023, 14:08

Eben deshalb frage ich hier ja um Hilfe und ich dachte dafür ist dieses Forum da.
Im Grunde ja, nur sollten Hooks von ehesten von Leuten verwendet werden, die php verstehen und sich auch etwas mit den internas von WE auskennen.

Ich kann nur Wiederholen, das du dies als Feature-Request im Forum einstellen solltest, damit darüber diskutiert wird, ob wir das als Feature realisieren und was andere davon halten.
webEdition-Kern-Entwickler

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

Re: Hook zum Aufrufen einer Datei

Beitragvon WBTMagnum » Sa 28. Jan 2023, 22:49

Hallo Matze,

Hier im Forum wird tendenziell sehr viel geholfen. Um dein konkretes Problem zu testen und zu beheben müsste das jetzt aber jemand erst mal nachbauen. Das kostet Zeit und verursacht nicht unerheblichen Aufwand. Fakt ist, es können hier einfach nicht für alle Probleme kostenfreie Lösungen gefunden werden. Dafür gibt es dann eben Firmen und Leute die das professionell anbieten, z.B. webEdition Partner (sh. https://www.webedition.org/de/partner/).

Liebe Grüße,
Sascha

PS: Was mir jetzt doch noch ins Auge gesprungen ist: "$param['resave'];" sollte "$params['resave'];" heißen.


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

Wer ist online?

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