Liste der Anhänge anzeigen (Anzahl: 1)
Genau so wollte ich es aufbauen.
Dan habe ich ein Feld beim Modul indem ich die Liste auswählen kann.
Doch fehlt dann noch die Kopplung zu tl_member, das bei der Registrierung
nur die selektierten Listen aus dem Modul zur Auswahl stehen.
Beispiel:
Ich habe 4 Listen. Nun wähle ich im Modul Liste 1 und Liste 3.
Jetzt möchte ich, dass der User nur aus diesen 2 Listen wählen kann
und dass das auch so im Backend vorhanden ins beim Mitglied.
Mir fehlt noch der Zusammenhang wie ich es im Frontend eingrenzen kann.
Mein Überlegung war ein Feld in tl_member das die Werte aus dem Modul bekommt
und eines das alle Listen (diese ist für den User nicht sichtbar) hat.
Das beim Speichern die Werte, also welche Listen der User ausgewählt hat, eingetragen werden.
In dem Beispiel von News, werden im Modul auch alle Listen zur Auswahl angezeigt.
PHP-Code:
$GLOBALS['TL_DCA']['tl_module']['fields']['newsletters'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_module']['newsletters'],
'exclude' => true,
'inputType' => 'checkbox',
'foreignKey' => 'tl_newsletter_channel.title',
'eval' => array('multiple'=>true),
'sql' => "blob NULL"
);
Hier lässt sich die Auswahl eingrenzen die der User im Registrierungsformular auswählen kann.
Aber im Backend sind dann alle Listen zur Verfügung.
Habe noch ein Screenshot beigefügt an was ich so ca. gedacht habe.
lg Matthias
Liste der Anhänge anzeigen (Anzahl: 3)
Also bei mir klappt es leider nicht.
Anbei mein Code.
tl_member
PHP-Code:
<?php
/**
* @copyright Matthias Gmeiner
* @author Matthias Gmeiner
* @license LGPL
*/
/**
* Extend palettes of tl_member
*/
$GLOBALS['TL_DCA']['tl_member']['palettes']['default'] = str_replace
(
'website',
'website,mclists',
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']
);
// Hinzufügen der Feld-Konfiguration
$GLOBALS['TL_DCA']['tl_member']['fields']['mclists'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_member']['mclists'],
'exclude' => true,
'inputType' => 'checkbox',
'foreignKey' => 'tl_module.mclists',
'eval' => array('multiple' => 'true', 'tl_class' => 'w50', 'feViewable' => 'true', 'feEditable' => 'true', 'feGroup' => 'newsletter'),
'sql' => "varchar(255) NOT NULL default ''"
);
tl_module
PHP-Code:
<?php
/**
* @copyright Matthias Gmeiner
* @author Matthias Gmeiner
* @license LGPL
*/
/**
* Extend palettes of tl_module
*/
$GLOBALS['TL_DCA']['tl_module']['palettes']['registration'] = str_replace('{account_legend}',
'{mailchimp},mclists;{account_legend}',
$GLOBALS['TL_DCA']['tl_module']['palettes']['registration'] );
$GLOBALS['TL_DCA']['tl_module']['subpalettes']['mailchimp'] = 'mclists';
/**
* Add fields to tl_module
*/
$GLOBALS['TL_DCA']['tl_module']['fields']['mclists'] = array
(
'label' => &$GLOBALS['TL_LANG']['tl_module']['mclists'],
'exclude' => true,
'inputType' => 'checkbox',
'options_callback' => array('tl_module_extended','getLists'),
'eval' => array('multiple'=>true),
'sql' => "varchar(255) NOT NULL default ''"
);
use \DrewM\MailChimp\MailChimp;
/**
* Class ConnectMailchimp
*
* Get lists.
* @copyright Matthias Gmeiner
* @author Matthias Gmeiner
* @package Controller
*/
class tl_module_extended
{
function getLists() {
$MailChimpAPI = $GLOBALS['TL_CONFIG']['mcapi'];
if ($MailChimpAPI == '') {
}
else {
$MailChimp = new MailChimp($MailChimpAPI);
$result = $MailChimp->get('lists');
$alllists = $result['lists'];
$listid = array();
foreach ($alllists as $list) {
$listid[$list['id']] = $list['name'];
}
return $listid;
}
}
}