Automatischer Rebuild von Objekten per CronJob

Fragen zum Erstellen von Templates für webEdition.
mediavantis
Senior Member
Beiträge: 238
Registriert: Do 16. Feb 2012, 12:51

Automatischer Rebuild von Objekten per CronJob

Beitragvon mediavantis » Mo 28. Dez 2020, 15:35

Hallo liebe Forumsgemeinde,

in einem aktuellen Projekt können von einem Kunden per Frontend Kontaktdaten verändert werden. Diese veränderten Daten werden ordnungsgemäß im Hauptobjekt des Kunden gespeichert - aber auch in weiteren unterschiedlichen Objekten, die dem Kunden zugeordnet sind.

Einige Daten betreffen die Felder für URL-Feld-1, URL-Feld-2 und URL-Feld-3
Auch diese geänderten Daten werden in allen Objekten eingetragen - allerdings wirken sich diese tatsächlich NICHT aus, obwohl die neuen, korrekten Daten unter Eigenschaften des Objektes, namentlich "SEO-URL" angezeigt werden.

Erst, wenn ich die betreffenden Objekte rebuilde oder auf "Veröffentlichen" klicke, wird auch die neue URL tatsächlich ausgegeben.

Eine Lösung würde ich hier zunächst nur in der Möglichkeit eines per CronJob angestossenen Rebuildes der Objekte der entsprechenden Klasse sehen. Hierzu habe ich hier im Forum auch schon einiges gelesen. Allerdings habe ich keine Ansätze für mein spezielles Anliegen gefunden, daher die Frage:

Gibt es evtl. eine für die WE Version 8 bekannte Lösung für einen CronJob-gesteuerten Rebuild?

Bin für jeden Hinweis dankbar.

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: Automatischer Rebuild von Objekten per CronJob

Beitragvon NilSole » Mo 28. Dez 2020, 17:11

Hallo Ulrich,

wie nimmst du denn die Änderungen an den Objekten vor?

Schöne Grüße
Nils

mediavantis
Senior Member
Beiträge: 238
Registriert: Do 16. Feb 2012, 12:51

Re: Automatischer Rebuild von Objekten per CronJob

Beitragvon mediavantis » Mo 28. Dez 2020, 17:58

Hallo Nils,

vielen Dank für Deine Rückmeldung.
Zwischenzeitlich konnte ich das Problem lösen und stellte dabei gleichzeitig fest, dass es eigentlich leichter gewesen wäre. Aber kurz zur Erläuterung:

Ich habe ein FE-Formular zur Änderung von Kontaktdaten. Ändert der Kunde auch das Land, ergäbe sich daraus eine neue URL (URLFeld-2) für sein Stamm-Profil. Diese neue "URL" sollte natürlich auch in weitere Objekte (Profile) des Kunden übernommen werden.

Zuerst hatte ich den Weg über ein DB-Connect gewählt, der die entsprechenden Profile ansteuerte und dort den neuen Inhalt in das entsprechende DB-Feld eintrug. Zugegeben, eine nicht ganz sichere Angelegenheit - aber nachdem dieses Formular ausschließlich durch registrierte User erreichbar war, war das zu verschmerzen...

Das Problem: zwar waren die neuen Daten überall korrekt eingetragen und vorhanden, aber wie gesagt, keine Auswirkung auf die Ausgabe.

Wie habe ich das nun gelöst?

Im ursprünglichen Template stand u. a.:

Code: Alles auswählen

<we:write type="object" classid="1" formname="editKontakt" publish="true" protected="true" onduplicate="overwrite" />
<we:ifWritten type="object" formname="editKontakt">
<?php 				
$obj_id = $we_object['editKontakt']->ID; 
$obj = new we_objectFile();
$obj->initById($obj_id);
$obj->setElement('A_Land',$hbLand);
$obj->setElement('A_Stadt',$hbStadt);
$obj->we_save();
$obj->we_publish();
?>
.....
</we:ifwritten>
Ich habe dann vor dem schließenden </we:ifwritten> einfach mal getestet, eine LV nach folgendem Muster einzusetzen:

Code: Alles auswählen

<we:comment>Sucht alle Objekte (Profile), die zum jeweiligen Kunden gehören und rebuildet diese</we:comment>
<we:condition name="changeKontakt">
<we:conditionAdd field="PID" value="\$customerID" compare="=" />
</we:condition>

<we:listview type="object" classid="2" name="rebuildObject" condition="\$changeKontakt">
<we:repeat>
<we:field name="we_id" nameto="ObjektID" to="global" />
<?php 				
$obj = new we_objectFile();
$obj->initById($ObjektID);
$obj->we_rewrite();
$obj->we_republish();
?>	
</we:repeat>
</we:listview>
Hätte ich gleich drauf kommen können. Somit erübrigt sich auch mein DB-Connect und alles ist wieder sicherer.

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

Re: Automatischer Rebuild von Objekten per CronJob

Beitragvon mokraemer » Di 29. Dez 2020, 14:38

we_objectFile gibt es nicht mehr! => schau mal in die Entwicklerinfos!
https://www.webedition.org/de/dokumenta ... tionen.php
webEdition-Kern-Entwickler

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: Automatischer Rebuild von Objekten per CronJob

Beitragvon NilSole » Di 29. Dez 2020, 15:01

@Marc: Das ist sicherlich noch die 8.x
Aber ab Version 9 wird das so nicht funktionieren.


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

Wer ist online?

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