Au...wahnsinn hast Du viel geschrieben. Finger noch OK? :-) Danke Dir
Antworten siehe im Text
Stefan
Am 12.11.2010 10:58, schrieb Stephan Schuler:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hallo Stefan.
Du sprichst sicherlich von Special-Querys, nehm ich an.
Ganz genau
Dein konkretes Problem hat eine recht abenteuerliche Lösung. Die will ich kurz
aufzählen, halte das aber für eine dermaßen abartige Variante dass ich das
selbst nicht verwenden würde:
WHERE (
usergroup LIKE '2,%'
OR
usergroup LIKE ',2'
OR
usergroup LIKE '%,2,%'
OR
usergroup = 2
)
Diese Art "Konstrukt" kenne ich zwar, aber es lässt sich nicht mit dem
queryGenerator abbilden, da dieser bei "contains" meinen Text immer in
%|% wrapt. Wenn ich also wie in Deinem Beispiel sage: "2,%", dann mach
der queryGenerator daraus: "%2,%%"
Durch die Pfeil-Einrückbuttons im Spqcial-Query-Editor von Direct Mail kriegst
du das auch so hingebaut, dass dieses Klammerkonstrukt als Ganzes mit anderen
Bedingungen Und-Verknüpft werden kann. Schön ist aber auch anders. Das wohl
größte Problem das ich bei Special-Querys habe ist, dass der Queryanteil nicht
Teil der vom Benutzer als beschreibbaren angegebenen TCA-Definition ist. Wenn
du den Empfängergruppen-Record im TCEmain-Formular öffnest fehlt eben der Block
in dem der Query hinterlegt ist. Das führt dazu, dass du die Empfängergruppe
zwar kopieren kannst, dass bei der Kopie allerdings die Special-Querys nicht
übertragen werden. Wenn ich 15 solcher Gruppen anlegen muss würde ich
wahnsinnig werden bei dem Versuch ein solches Monster per Backend-Click-Orgie
entsprechend häufig zu erzeugen.
Das mit den Klammerkonstrukten habe ich verstanden...klappt ganz gut.
Das mit dem Kopieren soll mir ja noch egal sein, weil ich das nur einmal
machen muss und dann "hoffentlich" nie wieder.
Sofern du keinen Special-Query brauchst kannst du die Recipient list einfach als "Type: From pages"
definieren, im "Starting Point" den Sysfolder wählen in dem deine Gruppe liegt und unten die
Checkbox "Website User Group" auswählen. Nachdem fe_users und fe_user_groups nicht zwingend im
gleichen Sysfolder liegen, kannst du für jede Gruppe einen eigenen Sysfolder hernehmen und den dann als
Startingpoint angeben. Dadurch bekommst du unterschiedliche Recipient lists für unterschiedliche
fe_user_groups.
Heißt aber auch ich muss zig Bedingungen in die sr_feuser_register
reinwurschteln, damit er mit den User auch ja in den richtigen Ordner
ablegt. Weiterhin sollen Redakteure entscheiden können, ob ein User nun
Berechtigung X oder Y hat. Die werden begeistert sein, die User zwischen
den Sysfoldern hin und her zu verschieben.
Wenn du einen Special-Query benötigst klappt das natürlich nicht mehr.
Was ich da für gewöhnlich treibe ist zwar auch nicht die schönste Lösung,
bietet mir aber den größten Freiraum was zusätzliche Verarbeitung der
Benutzerdatensätze betrifft, ist mit ein wenig Geschick auch schnell getippt
und lässt sich recht leicht auf diverse andere Projekte portieren:
Zunächst hängt es davon ab ob du tt_address odre fe_user verwendest.
fe_users
Fe_users hat die Gruppen des Benutzers durch Kommas getrennt im
"usergroup"-Attribut des Users. Ich gehe deshalb davon aus dass du mit fe_users
hantierst.
Jup
Tt_address verwendet MM-Beziehungen. Die eigenen sich in meinen Augen
grundsätzlich besser für solche Anforderungen weil die SQL-Querys dadurch
einfacher werden -- nicht zuletzt auch was deren Anspruch an die
Datenbankleistung betrifft.
Die User erhalten nicht nur einen Newsletter, sie müssen sich auch and
er Webseite anmelden können...deshalb wird das ein bissl schwierig mit
tt_address
Ich lege (eigentlich immer) einen View auf tt_address der mir die gewünschten
Parameter abbildet. Im einfachsten Fall:
SELECT t.*, g.uid AS tt_address_group
FROM tt_address AS t LEFT JOIN tt_address_group_mm AS mm ON t.uid =
mm.uid_local LEFT JOIN tt_address_group AS g ON mm.uid_foreign = g.uid
Der Query enthält anschließend jeden tt_address-Record für jede Gruppe in der
er ist exakt einmal. Dadurch vervielfacht sich zwar die Datenmenge und übers
TYPO3-Backend wird die Sache auch nur noch bedingt auswertbar (weil die
einzelnen Inkarnationen der unterschiedlichen Benutzer natürlich die gleiche
UID haben) aber man kann das dann leicht über den Special Query ansprechen.
Zu diesem View lege ich mittels kleiner eigener Extension einen TCA-Eintrag an:
Ich kopiere den tt_address-TCA-Eintrag ($TCA['nxttaddressview'] =
$TCA['tt_address']) und erweitere meinen TCA-Eintrag dann um die Spalten die
mein View ergänzt.
Das Konstrukt ist zwar zunächst aufwendig, allerdings hab ich alle Informationen anschließend schön in der DB
abgebildet. Dazu kommt praktisch bei jedem Projekt noch die Anforderung, die Anrede "Sehr geehrter Herr
XYZ," bzw. "Sehr geehrte Frau XYZ," zu wählen sofern das Geschlecht definiert ist und der
Nachname eingetragen und "Sehr geehrte Damen und Herren," wenn wahlweise kein Geschlecht angegeben
ist oder kein Nachname dran ist. Das bekommt man ohne View-Query schon überhaupt nicht hin.
Ich wurschtel mal ein bissl in der class.t3lib_querygenerator.php rum.
Vielleicht nehmen die TYPO3ler unseren Featurewunsch ja noch für die 4.5
auf.
Gruß,
Stephan Schuler
Web-Entwickler
Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Internet: http://media.netlogix.de
- --
netlogix GmbH& Co. KG
IT-Services | IT-Training | Media
Andernacher Straße 53 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: mailto:i...@netlogix.de | Internet: http://www.netlogix.de/
netlogix GmbH& Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Stefan Buchta, Matthias Schmidt
- -----Ursprüngliche Nachricht-----
Von: typo3-german-boun...@lists.typo3.org
[mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Stefan Frömken
Gesendet: Freitag, 12. November 2010 10:31
An: typo3-german@lists.typo3.org
Betreff: [TYPO3-german] direct_mail: Benutzergruppen in Empfängerliste
Hallo zusammen,
ich möchte eine Empfängerliste erstellen, die alle User beinhaltet, die
der Gruppe mit der UID 2 zugeordnet sind.
Wenn ich aber sage:
WHERE usergroup = 2
dann findet er nicht die User, die den Gruppen 2,5,8 zugeordnet sind,
sondern nur die, die NUR diese eine Gruppe mit der UID 2 beinhalten.
Sage ich:
WHERE usergroup LIKE '%2%'
dann findet er zusätzliche User, die nur den Gruppen 21,25,32 zugeordnet
sind
Sage ich:
WHERE usergroup IN (2)
dann habe ich das gleiche Problem wie oben schon erwähnt.
Wie macht ihr das?
Stefan
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
-----BEGIN PGP SIGNATURE-----
Version: PGP Universal 3.0.0 (Build 2881)
Charset: Windows-1252
wpUDBQFM3Q/gpp0IwsibV8MBCC4sA/4+00KlUsCedECPB11Gd2b7V5GnPJ/PU8wp
oftRUgA22c8fhpUCxyz0N+q0QvNE35qF04Rzsk8+MQO9LVhI5REYWxeMAdw7h64C
jvUOF8C0CkLb2zRdaw/HH95RSVlog5EQHNXoM+kGGBxC2QrTtv9Av7Uo0krwLStY
HVoL6KZdxA==
=ACpD
-----END PGP SIGNATURE-----
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german