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 ...
Drupal 7 Screencasts in deutsch!
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.