Werbung im Teaser einblenden
Eingetragen von Anonymous (0)
am 17.05.2006 - 13:56 Uhr in
am 17.05.2006 - 13:56 Uhr in
Ich möchte im Teaser Werbung (Banner) einblenden. Wenn ich im Teaser 20 Artikel habe dann soll IMMER nach Artikel 4, ein Banner eingeblendet werden. Nach Artikel 9 ebenfalls ein Banner, nach 14 auch, usw...
Wie gehe ich da am Besten vor... ??
- Anmelden oder Registrieren um Kommentare zu schreiben
Möglichkeit
am 17.05.2006 - 16:06 Uhr
Eine Möglichkeit wäre, im Template eine globale Variable hochzuzählen.
Kannst du mir auch sagen,
am 18.05.2006 - 02:15 Uhr
Kannst du mir auch sagen, wie das funktionieren soll?
Variable
am 20.05.2006 - 21:11 Uhr
++$GLOBALS['_my_special_counter'];
if ($GLOBALS['_my_special_counter'] == drupal_variable_get('my_special_counter', 3) {
echo '<div class="inner-ads">'.$inner_ads.'<div>';
}
Dazu noch in Deinem Theme eine neue Region für Blöcke namens inner_ads erstellen. Wie das geht, steht im Tutorial zur Themeerstellung.
Wenn ich deinen Code bei mir
am 21.05.2006 - 21:17 Uhr
Wenn ich deinen Code bei mir im (PHP) Template einfüge
<?php
...code...
?>
Syntax
am 21.05.2006 - 22:26 Uhr
Sorry, fehlt eine schließende Klammer im if-Statement.
Ich denke aber, ohne Grundkenntnisse in PHP wirst Du Dein Problem kaum gelöst bekommen.
Habe den
am 24.05.2006 - 01:53 Uhr
Habe den Code
<?php
++$GLOBALS['_my_special_counter'];
if ($GLOBALS['_my_special_counter'] == drupal_variable_get('my_special_counter', 3)) {
echo '<div class="inner-ads">'.$inner_ads.'<div>';
}
?>
im Template eingefügt, kommt aber folgende Meldung:
Fatal error: Call to undefined function: drupal_variable_get() in /www/htdocs/... on line xxx
Hmm, ich versuche nur einen Banner immer nach Auflistung von 4 Nodes im Teaser anzuzeigen. Was ist hier falsch... Bei drupal.org habe ich nicht wirklich was gefunden.
Re: Habe den
am 24.05.2006 - 08:14 Uhr
Füge den nachfolgenden Code in die Datei node.tpl.php ein.
<?php
global $teaser_ads_counter;
$teaser_ads_counter++;
if (3 == $teaser_ads_counter || 5 == $teaser_ads_counter || 7 == $teaser_ads_counter) {
print '<div class="inner-ads">'. $inner_ad .'<div>';
}
?>
Funktionsname
am 24.05.2006 - 08:41 Uhr
Bei drupal.org habe ich nicht wirklich was gefunden.
Sorry, aber ich bin derzeit nicht voll in der Programmierung drin.
Die Funktion heisst seit 4.7 nur noch variable_get().
Der Sinn in der Verwendung dieser Funktion ist, dass man mit ein wenig Entwicklerarbeit den Wert über eine Setup-Einstellung ändern könnte.
Re: Habe den
am 24.05.2006 - 12:06 Uhr
Füge den nachfolgenden Code in die Datei node.tpl.php ein.
<?php
global $teaser_ads_counter;
$teaser_ads_counter++;
if (3 == $teaser_ads_counter || 5 == $teaser_ads_counter || 7 == $teaser_ads_counter) {
print '<div class="inner-ads">'. $inner_ad .'<div>';
}
?>
Jetzt kommt keine Fehlermeldung. Habe den Code mal in die page.tpl.php eingefügt. Muss ich der Variable $inner_ad jetzt etwas zuweisen?
<?php
$inner_ad = "Banner-Code";
?>
Oder? Wie läuft das jetzt mit der neuen Region für Blöcke erstellen?
@Hinrich
Ich benutze Drupal 4.6.6
Regionen
am 24.05.2006 - 12:47 Uhr
Du solltest Dir überlegen, ob Drupal 4.7 nicht angebrachter wäre.
In Deinem Theme musst Du eine Datei names Themename.theme anlegen, die eine Funktion namens Themename_regions() enthalten sollte. Diese Funktion gibt ein Array zurück. Dannach kannst Du Blöcke für der entsprechenden Region zuweisen.
Beschäftige Dich mal ein wenig mit der API. Du wirst feststellen, dass sehr viele Dinge mit wenig Aufwand möglich ist.
Wenn Du es einfach halten möchtest, weil es eine einmalige Angelegenheit für Dich ist, dann musst Du nur die Variable $inner_ad mit entsprechenden HTML-Code füllen.
Re: Werbung im Teaser einblenden
am 25.05.2006 - 18:51 Uhr
Habe den Code mal in die page.tpl.php eingefügt.
Wenn du Werbung zwischen den Teasern haben möchtest, muss du den Code in die node.tpl.php einfügen. Dieser Code-Schnipsel funktioniert nur mit der PHPtemplate-Engine und benötigt keine Regions bzw. Blöcke.
<?php
global $teaser_counter;
$teaser_counter++;
if (!page && 3 == $teaser_ads_counter || 5 == $teaser_ads_counter) {
print 'meine werbung';
}
?>
In diesem Beispiel wird der Text nach dem 3. und 5. Teaser eingefügt.
Es kommt nichts wenn ich
am 27.05.2006 - 13:48 Uhr
Es kommt nichts wenn ich diesen Code in die node.tpl.php einfüge. Wieso klappt das nicht, ich hab auch die PHPtemplate-Engine. Ich erstelle fast alle Seiten mit Flexinode... Liegt es daran? Hast du den Code schon selbst ausprobiert?
Re: Es kommt nichts wenn ich
am 27.05.2006 - 15:33 Uhr
Sorry, die Variablennamen sind durcheinander geraten.
Bitte versuch folgenden Code
<?php
global $teaser_counter;
$teaser_counter++;
if (!$page && 3 == $teaser_counter || 5 == $teaser_counter) {
print 'meine werbung';
}
?>