Werbung für Besucher von bestimmten Quellen einblenden
Werbung für Besucher von bestimmten Quellen einblenden
Hi,
kurz was ich vorhabe: Ich möchte eine Abfrage in die entries.tpl (im extended entry) einbauen, die prüft, woher ein Besucher kommt (z.B. Google) und nur für solche "irgendetwas" Anzeigen.
Zum Beispiel sollen Besucher, die einen Artikel direkt aufrufen, keine Werbung sehen. Besucher jedoch, die über die Google-Suche kamen sollen einen Werbeblock angezeigt bekommen.
Ich weiß, dass es für WP zu diesem Zwecke en Plugin gibt. Wie ist das bei Serendipity? Kann auch eine handgemachte Lösung sein.
Danke vorab!
Gruß, Markus
kurz was ich vorhabe: Ich möchte eine Abfrage in die entries.tpl (im extended entry) einbauen, die prüft, woher ein Besucher kommt (z.B. Google) und nur für solche "irgendetwas" Anzeigen.
Zum Beispiel sollen Besucher, die einen Artikel direkt aufrufen, keine Werbung sehen. Besucher jedoch, die über die Google-Suche kamen sollen einen Werbeblock angezeigt bekommen.
Ich weiß, dass es für WP zu diesem Zwecke en Plugin gibt. Wie ist das bei Serendipity? Kann auch eine handgemachte Lösung sein.
Danke vorab!
Gruß, Markus
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Werbung für Besucher von bestimmten Quellen einblenden
Hi!
Dafür würde ich folgendes vorschlagen.
Du erstellst in deinem template eine config.inc.php:
Dieser Code sorgt dafür, dass eine Sessionvariable 'from_google' gesetzt wird. D.h. wenn ein Besucher einmal für Google kam, ist er für die Dauer des Besuches als Google-User identifiziert.
Jetzt muss das ganze nur noch in Smarty ausgewertet werden, dort kannst Du auf die Variable {if $from_google} zugreifen.
Hilft Dir das weiter? Man könnte es alternativ auch mit einem Event-plugin lösen, aber das wäre dann einen Tick mehr Code.
Viele Grüße,
Garvin
Dafür würde ich folgendes vorschlagen.
Du erstellst in deinem template eine config.inc.php:
Code: Select all
<?php
if (stristr($_SERVER['HTTP_REFERER'], 'google.')) {
$_SESSION['from_google'] = true;
}
$serendipity['smarty']->assign('from_google', $_SESSION['from_google']);
?>
Jetzt muss das ganze nur noch in Smarty ausgewertet werden, dort kannst Du auf die Variable {if $from_google} zugreifen.
Hilft Dir das weiter? Man könnte es alternativ auch mit einem Event-plugin lösen, aber das wäre dann einen Tick mehr Code.
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Die config.inc.php wird von Serendipity bei jedem Aufruf des Frontends ausgeführt, kurz nachdem das Smarty-Framework von Serendipity aufgerufen wurde. Also noch bevor deine entries.tpl überhaupt "geladen" wird. Daher kann sie auf die Variablen zugreifen.
Deine entries.tpl muss die config.inc.php nicht kennen, da das zentrale Serendipity-System sie erkennt.
Grüße,
Garvin
Die config.inc.php wird von Serendipity bei jedem Aufruf des Frontends ausgeführt, kurz nachdem das Smarty-Framework von Serendipity aufgerufen wurde. Also noch bevor deine entries.tpl überhaupt "geladen" wird. Daher kann sie auf die Variablen zugreifen.
Deine entries.tpl muss die config.inc.php nicht kennen, da das zentrale Serendipity-System sie erkennt.
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Alles klar!
Wäre es denkbar, den Code so auszubauen um beispielsweise weitere Suchmaschinen abzubilden? (Ich kenne den Operator für "oder" nicht)
Wäre es denkbar, den Code so auszubauen um beispielsweise weitere Suchmaschinen abzubilden? (Ich kenne den Operator für "oder" nicht)
Code: Select all
<?php
if (stristr($_SERVER['HTTP_REFERER'], 'google.') or
stristr($_SERVER['HTTP_REFERER'], 'yahoo.') ) {
$_SESSION['from_searchengine'] = true;
}
$serendipity['smarty']->assign('from_searchengine', $_SESSION['from_searchengine']);
?>
Der Operator ist ||, alsomarf wrote:Wäre es denkbar, den Code so auszubauen um beispielsweise weitere Suchmaschinen abzubilden? (Ich kenne den Operator für "oder" nicht)
Code: Select all
<?php if (stristr($_SERVER['HTTP_REFERER'], 'google.') or stristr($_SERVER['HTTP_REFERER'], 'yahoo.') ) { $_SESSION['from_searchengine'] = true; } $serendipity['smarty']->assign('from_searchengine', $_SESSION['from_searchengine']); ?>
Code: Select all
<?php
if (stristr($_SERVER['HTTP_REFERER'], 'google.') ||
stristr($_SERVER['HTTP_REFERER'], 'yahoo.') ) {
$_SESSION['from_searchengine'] = true;
}
$serendipity['smarty']->assign('from_searchengine', $_SESSION['from_searchengine']);
?>
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Eine weitere Idee ist mir noch gekommen. Es gibt das Plugin 'Hebe Suchwörter hervor', das die Wörter in einem Artikel hervorheben kann, die ein Besucher übermittelt hat.
Das könntest Du auch installieren und dann die serendipity_event_searchhighlight.php editieren. Suche nach:
und füge danach ein:
Danach kannst Du dann in der entrie.stpl die Variable {if $smarty.session.is_searchengine_visitor} abprüfen. Dann sparst Du dir die Template-Datei, und hast sogar noch Suchworthervorhebung
Grüße,
Garvin
Eine weitere Idee ist mir noch gekommen. Es gibt das Plugin 'Hebe Suchwörter hervor', das die Wörter in einem Artikel hervorheben kann, die ein Besucher übermittelt hat.
Das könntest Du auch installieren und dann die serendipity_event_searchhighlight.php editieren. Suche nach:
Code: Select all
if ( ($queries = $this->getQuery()) === false ) {
return;
}
Code: Select all
$_SESSION['is_searchengine_visitor'] = true;
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Re: Werbung für Besucher von bestimmten Quellen einblenden
Hi.
Wie kann ich mit der Variable {if $smarty.session.is_searchengine_visitor} in der Seitenleiste arbeiten? Z.B. für das Plugin serendipity_plugin_google_adsense, damit die Werbung nur den Suchmaschinenbesuchern in der Seitenleite angezeigt wird.
Direkt im Plugin und in der sidebar.tpl war ich bisher erfolglos.
Vielen Dank und Grüße
Matthias
Wie kann ich mit der Variable {if $smarty.session.is_searchengine_visitor} in der Seitenleiste arbeiten? Z.B. für das Plugin serendipity_plugin_google_adsense, damit die Werbung nur den Suchmaschinenbesuchern in der Seitenleite angezeigt wird.
Direkt im Plugin und in der sidebar.tpl war ich bisher erfolglos.
Vielen Dank und Grüße
Matthias
-
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Werbung für Besucher von bestimmten Quellen einblenden
Hi!
In der sidebar.tpl musst Du im foreach-Loop die ID des Plugins abfragen und dann die Variable auslesen:
Grüßer,
Garvin
In der sidebar.tpl musst Du im foreach-Loop die ID des Plugins abfragen und dann die Variable auslesen:
Code: Select all
{foreach from=$plugindata item=item}
{if $item.class == 'serendipity_plugin_google_adsense' && !$smarty.session.is_searchengine_visitor}
<!-- adsense plugin surpressed! -->
{else}
{* Usual sidebar.tpl code here: *}
<div class="serendipitySideBarItem container_{$item.class}">
{if $item.title != ""}<h3 class="serendipitySideBarTitle {$item.class}">{$item.title}</h3>{/if}
<div class="serendipitySideBarContent">{$item.content}</div>
</div>
{/if}
{/foreach}
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Re: Werbung für Besucher von bestimmten Quellen einblenden
Klasse, vielen Dank!