Hi,
ich würde gerne die aktivierten Abonnenten zählen und in einem Template im Frontend (nl_default) ausgeben.
Geht das halbwegs simpel oder hat jemand eine Idee, wie das am besten umgesetzt werden könnte?
Danke Euch.
Beste Grüße,
Tom
Hi,
ich würde gerne die aktivierten Abonnenten zählen und in einem Template im Frontend (nl_default) ausgeben.
Geht das halbwegs simpel oder hat jemand eine Idee, wie das am besten umgesetzt werden könnte?
Danke Euch.
Beste Grüße,
Tom
Hat jemand evtl. einen Ansatz? Kann man das evtl. mittels einer einfachen DB-Abfrage lösen? Natürlich müsste die gecached werden und nicht bei jedem Seitenaufruf ausgeführt werden...
Wäre wirklich sehr dankar für Hilfe...
LG
suche mal nach database klasse verwenden. damit kannst du einfach sql abfragen machen. eine sql abfrage ist nicht so rechenintensiv, dass diese gecached wrden muss
verwendest du contao3+?
du kannst die klasse mit $db = Database::getInstance() laden und dann mit $db statements ausführen.
Gesendet von meinem SM-G900F mit Tapatalk
Hi valentin,
danke, war der richtige Tipp, habe es letztendlich selber umgesetzt. Für alle, die es noch interessiert (Contao Version 3.4.5):
1. in "system/modules/newsletter/modules/ModuleSubscribe.php" Template-Variablen um Subscriber-Variable erweitern (ca. Zeile 127)
2. funktion "countRecipients" ergänzenCode:// Default template variables $this->Template->email = ''; $this->Template->channels = $arrChannels; $this->Template->showChannels = !$this->nl_hideChannels; $this->Template->submit = specialchars($GLOBALS['TL_LANG']['MSC']['subscribe']); $this->Template->channelsLabel = $GLOBALS['TL_LANG']['MSC']['nl_channels']; $this->Template->emailLabel = $GLOBALS['TL_LANG']['MSC']['emailAddress']; $this->Template->action = \Environment::get('indexFreeRequest'); $this->Template->formId = 'tl_subscribe'; $this->Template->id = $this->id; $this->Template->hasError = $blnHasError; // subscribers $this->Template->subscribers = $this->countRecipients();
3. im Template nl_default Folgendes ergänzen ("subscribers" = oben ergänzter variablenname):Code:/** * Count all Recipients */ protected function countRecipients() { $this->import('Database'); $numberOfRecipients = $this->Database->prepare("SELECT COUNT(*) AS count FROM tl_newsletter_recipients") ->execute(); return $numberOfRecipients->count; }
evtl. hilfts jemandem, bin aber kein programmierer und gibt sicherlich bessere wege, aber erstmal klapptsCode:<?php echo $this->subscribers; ?>
lg tom
wenn du das im core machst, geht alles im modul mit dem nächsten update verloren. also am besten die abfrage direkt im template machen oder das modul erweitern.
lg
Gesendet von meinem SM-G900F mit Tapatalk
Altes Thema, aber ich habe mich gerade damit rumgeschlagen.
Ich habe es (mithilfe dieses Threads) letztendlich per Template über eine direkte Datenbankabfrage gelöst:
Template: nl_default.html5
Ggf. sollte man vor $this->import('Database'); noch ein if (!defined('TL_ROOT')) die('You cannot access this file directly!'); einfügen, um das ganze vor unberechtigtem Zugriff zu schützen? Oder ist das mittlerweile Geschichte?PHP-Code:
...
</form>
<?php
$this->import('Database');
$objCount1 = $this->Database->prepare("SELECT COUNT(*) AS cnt FROM tl_newsletter_recipients WHERE pid=1")->execute();
$objCount2 = $this->Database->prepare("SELECT COUNT(*) AS cnt FROM tl_newsletter_recipients WHERE pid=2")->execute();
echo 'Newsletter 1 hat ' . $objCount1->cnt . ' Abonnenten.';
echo 'Newsletter 2 hat ' . $objCount2->cnt . ' Abonnenten.';
?>
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)