Ich habe Smarty aktiviert und nutze Civi 5.50.1 auf WordPress 6.0.2.
Der if-Ausdruck beim current_employer funktioniert. Benutze ich aber meinen if-Ausdruck beim country, dann stürzt WordPress mit einem kritischen Fehler ab. Ich habe um den Ausdruck „Deutschland“ schon verschiedene Klammern (’ " etc.) ausprobiert, aber bin bisher erfolglos geblieben.
Das Adressaufkleberformat unter Lokalisierung → Mailing Labels hat diese Option als Ankreuzfeld, dort klappt es einwandfrei.
Hat jemand eine Idee, wie ich das richtig umsetze?
Lieber @torben.bertram, ich würde an Deiner Stelle einfach die Erweiterung Fuzion Token nutzen. Die stellt u.a. den Token {address.address_block} bereit, der Dir nicht nur die Formatierung abnimmt, sondern Dein in der Lokalisierung eingestelltes „Standardland“ auch per default weg lässt.
Was Deinen Smarty-Code betrifft, sind mir allerdings noch zwei Dinge unklar:
Warum tut er nicht was er soll? Habe mal kurz in einem Testsystem ein PDF erzeugt und bei mir funktionierte es (5.52.3 auf WordPress 6.0.2). Wo hast Du den Code denn nun genau eingesetzt und vor allem: Was steht denn im PHP Error Log?
Der erste Teil zielt vermutlich auf ein Szenario ab, dass Du eigentlich eine Person in einer Organisation über deren Organisationsadresse anschreiben willst, oder? Wäre es da nicht sinnvoller die Adresse der Organisation im Individuum mitzubenutzen („Die Adresse eines anderen Kontakts mitnutzen“)? Sonst können eine Menge komische Dinge passieren, wie z.B. jemand trägt die Privatanschrift der Person als Hauptadresse ein, später kommt ein Arbeitgeber dazu, Postbote findet Firmenschild nicht…
Punkt 2 finde ich übrigens auch deshalb sehr spannend, weil ich kürzlich in einem anderen Zusammenhang in einem Projekt darüber nachgedacht und einen Custom Token für Fuzion Token geschrieben habe, der sich dann den Adressaten vom Organisationskontakt holt, wenn die Adresse eine geteilte ist (und nur dann). Bei Interesse teile ich das natürlich gern.
Hallo zusammen,
im Zuge meiner Recherche, was sich Fundraising-User wünschen, steht das Adressmanagement hoch im Kurs und es gibt viele Fragen und Wünsche.
Sollten wir zu diesem Thema ein eigenes Topic anlegen?
LG Kai
Moin @Andreas, danke! Der Token {address.address_block} scheint genau das zu sein, was ich benötige.
Weshalb mein Smarty-Code nicht funktioniert, würde ich dennoch gerne herausfinden. Unter Drupal 7.90 mit Civi 5.50.1 tritt der selbe Fehler auf, unter Drupal 9.4.5 mit Civi 5.50.4 im Vanilla Zustand funktioniert der Smarty-Code. Ich scheine da also irgendetwas fehlkonfiguriert zu haben.
Dein zweiter Hinweis ist sehr valide: hier passt es beim Datenmodell gerade, solange ein Business-Kontakt keine Privatadresse als primäre Adresse markiert hat. Ersetzt Dein Custom Token dann den {address.address_block} oder ergänzt es parallel? Für Briefvorlagen finde ich wichtig, nur einen Token für alle Anwendungsfälle zu benutzen. Würde mich freuen, wenn Du mir Deine Lösung zeigen magst.
Fatal error: Smarty error: [in evaluated template line 128]: syntax error: unidentified token '#39;Deutschland'' (Smarty_Compiler.class.php, line 1410) in /var/www/vhosts/[Domain]/httpdocs/wp-content/plugins/civicrm/civicrm/packages/Smarty/Smarty.class.php on line 1100
Also doch etwas rund um Deutschland. Muss ich die ’ oder " um ‚#39;Deutschland‘’ anders machen oder escapen?
Hier die Adresse in meinem Kontakt in einem Testsystem:
Der Fuzion Token {address.address_block} ist schonmal so nett und formatiert die Anschrift und entfernt abhängig von der Lokalisierung wie erläutert auch das Deutschland:
Die Post würde aber nicht ankommen, da ich nicht in Wiesbaden wohne.
Mit {sharedaddressee.sharedaddress_addressee}{address.address_block} erhalte ich nun:
Der zusätzliche Umbruch ist im Token integriert, so dass auch bei einer „einfachen“ (nicht geteilten) Hauptanschrift der Adressblock korrekt formatiert wird. Wenn man den Wert mal ohne Umbruch braucht, gibt es die Variante {sharedaddressee.sharedaddress_addressee_nobreak}.
Das ganze kann man natürlich leicht noch erweitern, z.B. um ein c/o oder was auch immer. Und wie gesagt ist es auch noch recht frisch – der Praxistest steht noch aus. Umso schöner, wenn auch andere hier mitdenken oder weiterentwickeln.
Ein Teil der Diskussion ging ja zuletzt auch in Richtung „Token für Daten von verknüpften Kontakten bzw. von AdressinhaberInnen“. Daher sei hier neben den Ausführungen von Andreas auch die Erweiterung „Additional Token“ erwähnt - je nach Anwendungsfall ist das vielleicht auch sinnvoll. Neben Token für den/die „HauptadressinhaberIn“ werden auch Token pro Adresskategorie bereitgestellt und ein paar andere praktische Dinge wie bspw. das gegenwärtige Datum im deutschen Format.
Das kann leider gut sein - wir haben ja inzwischen eine dreistellige Anzahl von CiviCRM-Erweiterungen veröffentlicht. Wir können nur bei den kritischsten proaktiv an der php8-Kompatibilität arbeiten da wir nicht mehr Kapazitäten haben und das natürlich auch erstmal niemand finanziert.
Oft sind ja gar nicht so große Codeänderungen erforderlich aber mit der Analyse, dem Testen von Anpassungen und einem neuen Release kommen dann doch schnell mal ein paar Stunden zusammen. Kurz gesagt: Falls Du einen (getesteten) Pullrequest machen könntest oder falls Ihr ein paar Stunden Finanzierung übrig habt, freuen wir uns natürlich. Nun will ich aber nicht weiter diesen Thread hier kapern (leider gibt es glaube ich keine Funktion eine Antwort nur zu kommentieren). Bei Bedarf gerne mehr als separates Thema oder private Nachricht auf irgendeinem Kanal.
Weil ich das gestern auch mal wieder hatte: Falls du mit dem CK-Editor, also dem WYSIWYG-Editor im CiviCRM arbeitest und zwischen Quellcode und WYSIWYG-Ansicht wechselst, kann es unter Umständen (je nach Konfiguration, s.u.) passieren, dass bestimmte Code-Bestandteile maskiert werden. Zum Beispiel werden aus doppelten Anführungszeichen → " oder aus einfachen → '
Abhilfe schafft dann nur, dass man im CiviCRM in die Editor-Einstellungen navigiert (Administration » Daten und Anzeigen anpassen » Voreinstellungen für die Anzeige » Button Configure CKEditor) und dann unter Advanced Options die Option entities (Boolean) = false hinzufügt. Danach unbedingt Browser Cache löschen (es kann einen wahnsinnig machen, wenn man das vergisst xD) und dann sollten beim Umschalten zwischen Quellcode und WYSIWYG-Ansicht keine Anführungszeichen mehr umgewandelt werden, so dass dann auch Smarty-Code nicht mehr zerschossen wird.
Also {address.address_block} ist gut geeignet für Privatpersonen, danke für die Hinweise. Damit ist das Ticket hier erledigt, weil das mit dem Land ist nun berücksichtigt
Allerdings habe ich „Shared Adressee“ von @Andreas nicht zum Fliegen bekommen: ein entsprechender Token erscheint einfach nicht zum Auswählen im Fuzions Token Bereich. Hat jemand das auch schon gehabt?
@torben.bertram, hast Du auf Administration → Kommunikation → Enabled Tokens den Token aktiviert? Und stimmt der Custom-PHP-Pfad unter Administration → Systemeinstellungen → Verzeichnisse? Wenn wie auf gitlab beschrieben wäre das: [civicrm.files]/custom_php/ (beim Ändern vor Aufrufen der Fuzion Token Config-Seite den Cache leeren)
Und wen es interessiert: hier der komplette Adressblock mit Arbeitgeber und if-Schleifen… Funktioniert bei Briefen und Rechnungen (jeweils auf die Hauptadresse).