Drupal 7: Automatisches Einfügen von Code (z.B. für Adsense Werbung) in den Content bestimmter Node-Typen?
Eingetragen von Nikdilis (29)
am 13.12.2010 - 00:48 Uhr in
am 13.12.2010 - 00:48 Uhr in
Hallo zusammen,
weiß vielleicht ein Experte, wie ich es in Drupal 7 ohne Zusatzmodul realisieren kann, dass bei bestimmten Node-Typen wie z.B. Blog oder Forenbeiträgen im Content/Inhalt (z.B. nach dem 2. Abschnitt) Adsense-Werbung angezeigt wird (der weitere Inhalt der Seite sollte dann rechts von der Werbung angezeigt werden), wohingegen beim Node-Typ Seiten keine Werbung angezeigt werden soll?
In Drupal 6 gibt es das Adsense Injector Modul in Kombination mit Adsense, allerdings scheint es, dass diese Module so schnell nicht geportet werden.
Vielen Dank.
- Anmelden oder Registrieren um Kommentare zu schreiben
Die einfachste Möglichkeit
am 13.12.2010 - 08:59 Uhr
Die einfachste Möglichkeit ist es wohl, sich einzelne Templatedateien für die Inhaltstypen anzulegen und diese entsprechend abzuändern!
Also in Deinem Fall eine node-blog.tpl.php, eine node-forum.tpl.php mit dem Adsense Code und ein node-page.tpl.php ohne Adsense Code in Dein verwendetes Theme einfügen.
Bezüglich 2. Abschnitt ... wie hast Du den denn realisiert? Sind es CCK Felder, oder Teaser oder ...
Hallo, das mit dem Port
am 13.12.2010 - 09:53 Uhr
Hallo,
das mit dem Port stimmt so nicht. Soweit ich weiß wird das AdSense-Modul derzeit durch kbahey auf Drupal7 portiert, und das Adsense Injector Modul soll wohl in das AdSense-Modul integriert werden.
Eine erste Version gibt es sogar bereits, wobei ich definitiv davon abraten würde diese live zu verwenden, da es erst ein erster Ansatz ist: Link
Ein paar Infos gibt es auch in diesem Thread hier: drupal.org
Ich hoffe das konnte helfen. Wenn du also noch etwas warten kannst könnte das auch für D7 deine Lösung sein. :)
Grüße vom,
Genesis
Lösung gefunden, Danke!
am 15.12.2010 - 00:01 Uhr
@Thoor: Danke für den Hinweis, der mich auf die richtige Fährte gebracht hat. Abschnitt war falsch ausgedrückt, Absatz wäre richtiger gewesen.
@Genesis: kbahey scheint momentan nicht wirklich aktiv zu werden was Adsens betrifft. Der erste Port stammt von takeova. Eine Portierung nach Drupal 7 wird sich in meinen Augen noch ziehen. Aber warten wir es ab.
Zum Thema Templates nach Node-Typ habe ich folgenden hilfreichen Link gefunden:
http://adaptivethemes.com/page-template-suggestions-per-node-type
Vorgehensweise für Drupal 7 anhand des Bartik-Themes (falls nicht das Bartik-Theme benutzt wird 'bartik' durch den Namen des verwendeten Themes ersetzen)
1. In der template.php folgenden Code hinzufügen:
function bartik_preprocess_page(&$vars, $hook) { if (isset($vars['node'])) {
// Im Falle des Node-Typs "blog" wird das Template "page--blog.tpl.php" heißen.
$vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--', $vars['node']->type);
}
}
2. Im templates-Verzeichnis von bartik folgende Datei erstellen: page--blog.tpl.php
3. In diese Datei den Inhalt von page.tpl.php einfügen.
4. "
<?php
print render($page['content']);
?>
<?php
//Bestimmten Block definieren und rendern:
//Die Nr. / Namen des Blocks kann man in den Block-Einstellungen herausfinden, indem man auf den Mauszeiger auf den Configure-Link des Blocks stellt.
//Die 2 Werte vor 'configure' sind entscheidend
$blocks = block_load('node', 'recent'); //hier: recent comment block
$output = drupal_render(_block_get_renderable_array(_block_render_blocks(array($blocks))));
//Content nach Absätzen "</p>" aufdröseln. Alternativ kann stattdessen auch ein Zeilenumbruch "<br />" benutzt werden.
$arr = explode("</p>", render($page['content']));
// den 2. Absatz den oben definierten Block hinzufügen:
$arr[2] = $output . $arr[2];
//Content wieder zusammensetzen:
$page['content'] = implode("</p>", $arr);
?>
<?php
print render($page['content']); // Ausgabe des Contents
?>
5. Abspeichern
6. Drupal Cache löschen unter Configuration => Performance => Clear Cache
7. Einen Inhalt mit Node-Typ 'Blog' aufrufen. Der Inhalt sollte jetzt nach dem 2. Absatz den ausgewählten Block darstellen. Verfügt der Inhalt nur über einen Absatz, dann wird der Block nach den Kommentaren dargestellt.