Hallo,
nachdem ich mich im letzten Teil des Tutorial mangels Konzentration nicht gerade geglänzt habe, versuche ich es diesmal besser zu machen.
In diesem Teil des Affilinator Tutorial geht es um das Template zur Darstellung der Suchergebnisse.
Zur Erinnerung: In einem früheren Teil hatte ich angemerkt, dass ich bei meinem Nischenshop nicht die Suche in eienr ShopCategory erlauben möchte und während ich da gerade so drauf schaue, finde ich auch die Suche in Shop 1 von 2 albern, also auch raus damit:
Das steuert bei mir in searchbox.html:
1 2 | {if $ShopID && $ShopID neq "-" && $ShopID neq "0"} input type="radio" name="where_to_search" value="{$smarty.const.SEARCH_MODREWRITE_OP_SHOP}" {if $where_to_search eq $smarty.const.search_modrewrite_op_shop}checked{/if}> diesem Shop {/if} |
Die IF Schleife nehme ich so komplett raus:
1 2 | {<strong>*</strong>if $ShopID && $ShopID neq "-" && $ShopID neq "0"} input type="radio" name="where_to_search" value="{$smarty.const.SEARCH_MODREWRITE_OP_SHOP}" {if $where_to_search eq $smarty.const.search_modrewrite_op_shop}checked{/if}> diesem Shop {/if<strong>*</strong>} |
Na und dann braucht “Suche in Allen Shops” auch nicht mehr da stehen, da es immer so ist:
1 | <input type="radio" name="where_to_search" value="{$smarty.const.SEARCH_MODREWRITE_OP_ALLE}" checked> allen Shops |
Aber Achtung, den Parameter sollten wir behalten, wir setzen das Input Feld also hidden, den Typ auf Text, da sonst die Checkbox stehen bleibt:
1 | i<nput name="where_to_search" type="hidden" value="{$smarty.const.SEARCH_MODREWRITE_OP_ALLE}"> |
Entsprechend brauchen wir das Template searchInThisShopCategory.html nicht mehr, es zeigt ja die Suche in Shop-Kategorien an.
So und jetzt geht es ans Eingemachte - wir springen ins Template für die Suchergebnisse: searchInAffilinetOrThisShop.html
Fangen wir mal mit Grundüberlegungen an: Was brauchen wir da wirklich und was erwartet der Besucher bzw. wie geben wir es ihm ?
Aus meiner Sicht landet der Besucher vorzugsweise aus Google auf einer eigenen Suchergebnisseite oder er sucht einmal. Findet er nicht was er sucht bzw. hat keine Hoffnung es zu finden, ist er wieder weg!
Alleine aufgrund des eigenen Ego und Spieltriebes nicht immer einfach, aber die Seite muss einfach und übersichtlich sein. Gerade wenn man ein Theme z.B. von uns übernimmt kann man durchaus mal darüber nachdenken, evtl. einiges rauswerfen oder einiges umbauen. Wir stellen ja in der regel Max-Varianten zur Verfügung und z.B. folgende Möglichkeiten sind so noch nirgends von usn verbaut.
Selber Nachdenken schadet also nicht (-:
Von oben nach unten:
Meta Titel kurz mit Keywords
Meta Keywords kurz und prägnant, idealer Weise kommen sie auch vor -> Trick:
Wir schnappen uns das Untertemplate ebay.html und kopieren einen Teil der Produktschleife:
1 2 3 4 5 6 | {if $ebay_data.data.SEARCHRESULTITEM} {foreach from=$ebay_data.data.SEARCHRESULTITEM item=it name=ebay} {assign var=ItemId value=$it.ITEM.0.ITEMID.0.VALUE} {$it.ITEM.0.TITLE.0.VALUE|truncate:'18':','} {/foreach} {/if} |
Auf Deutsch:nehme von jede eBay Suchergebnis den Titel, schneide nach 18 Zeichen ab und setze ein Komma dahinter.
Man muss ebay natürlich auch nutzen! Ich zeige warum auch immer gerade max 8 ebays, 8 * 18 + Keywords = ~ 200 Zeichen. Das es Dubletten sein können ist mir mal egal, darüber sollen sich andere SEO den Kopf zerbrechen.
Ich nehme bewusst NICHT affilinet! Suche ich in meinem Beispiel z.B. bei affilinet nach “Fissler”, dann beginnt jeder Titel auch genau damit, was mir bei meiner Beispielsuche dann doch zu viel Doppelte sind.
Bei der Meta Description mache ich es mir einfach, es gewinnt die Kurzbeschreibung des ersten affilinet Ergebnisses + Keyword + irgend was.
Bei Null affili.net Treffern setze ich gewohnheitsbedingt nopch auf noindex, wobei hier dann eigentlich eh das template showerror.html aktiv werden sollte.
Hier noch mal die Metas (auch hier ohne <):
1 2 3 | <meta http-equiv="robots" content="{if !$searchProducts_data.items}no{/if}index,follow"> <META NAME="Keywords" CONTENT="{$keywords|replace:' ':','},{if $ebay_data.data.SEARCHRESULTITEM}{foreach from=$ebay_data.data.SEARCHRESULTITEM item=it name=ebay}{assign var=ItemId value=$it.ITEM.0.ITEMID.0.VALUE}{$it.ITEM.0.TITLE.0.VALUE|truncate:'18':','}{/foreach}{/if}"> <META NAME="Description" CONTENT="{$keywords|upper} in unserem Shop. {if $searchProducts_data.items}{$searchProducts_data.items.0.DESCRIPTION_SHORT.0.VALUE|strip_tags:true|truncate:'150'|escape}{/if}"> |
Das sind natürlich nur Beispiele und man muss das auch nicht machen. Aber hier soll es ja eher mehr um die perfekte Seite gehen, sprich ich möchte jene ansprechen, die auch bereits sind mal etwas zu arbeiten, um etwas mehr Geld zu verdienen.
Ok, jetzt aber zum eigentlichen sichtbaren Inhalt.
Wir erinnern uns an den Start, bei dem wir die alten Menus rausgeworfen hatten, um uns eine eigene Navigation zu bauen - na dann los.
Wir brauchen dazu einmal einen Dummy Static Content Eintrag - ja genau das Modul, dass 99% von euch noch nie angefasst haben. Jetzt fangen wir damit an und ihr werdet sehen wie genial es sein kann.
Wir definieren also im Admin Bereich einen eindeutigen TEST Static Content Eintrag:
Jedes feld bis auf ShopID und CategoryID wird mit einem eindeutigen Platzhalter gefüllt, den ihr im Template auch wieder erkennt, also z.B. test static content content1 feld
Ausnahme:
URL-Keywords: HIER tragt ihr Komma getrennt die EIN-WORT Suchbegriffe ein, bei denen das Modul aktiv werden soll, bei mir also z.B. bei der marke “fissler”.
Bemerkung: HIER tragt ihr einen eindeutigen Hinweis für euch selbe rein, um den Eintrag später in der Übersicht schneller zu finden, z.B “”keyword fissler” oder “menu fissler” oder was weiß ich, es ist nur ein Hilfsfeld zur Übersicht.
So, wer nun das bei den URL-Keywords angegebene Wort in seiner Seite sucht, sollte hoffentlich unabhängig vom Template irgendwo auf der Suchergebnisseite alle oder ein paar seiner Static Content Testfelder entdecken - da ist es eingebunden und reagiert in unserem beispiel nur auf die definierten Wörter!
Und genau damit fangen wir an - wenn wir uns unsere eigene navigation in die Suche hinein bauen, mag es ja evtl. Sinn machen zumindest die direkt aus der “Navigation” verlinkten Suchergebnisse etwas aufzumotzen.
Auf eine Kleinigkeit möchte ich beim Static Content Modul vorab aber noch hinweisen: Das Modul war ursprünglich nicht zum Anlegen kompletter einzelner Seiten wie bei den News gedacht, tut dies aber ebenfalls.
Da es für umnsere Zwecke jedoch primär ein Content “Schnipsel” Modul war, haben wir uns gedacht, dass jeder selber entscheiden kann ob und wie er ggf. die generierte Einzelseite verlinken will. Im Template wird das defauult getan, wenn der Content einen Titel hat (IF title im Template), aber das kann jeder ändern! Man kan auch ein anderes Feld nehmen oder ganz darauf verzichten!
Ok, zurück zu unserem Content auf der Menu-Link Landingpage.
1 2 3 4 5 6 | {if $static.content_titles} {foreach from=$static.content_titles item=it name=static} {$it.sfullcontent|truncate:500}<p> {if !$smarty.foreach.static.last}<div class="line_xx"></div>{/if} {/foreach} {/if} |
Das war es auch schon - hätte man im Feld sfullcontent (das Editor Feld) seinen Text stehen gehabt, würde der nun nur beim jeweiligen Keyword erscheinen.
Das geht im Template natürlich beliebig oft, mit jedem Feld und an jeder Stelle.
Nur einen Haken gibt es - es gibt seitens der Treffer kein Limit, definiert ihr also zu keyword1 und keyword2 und der besucher sucht keyword1+keyword2, würde das obige(!) Beispiel beide Static Content Definitionen anzeigen. Man sollte sie also etwas mit Umsicht definieren UND man sollte sich evtl. überlegen welches Feld für was ist!
Will man den Überblick nicht verlieren, wird das jeweilige feld also nur für einen zweck oder zumindest einen eindeutigen Anzeigetyp verwendet!
Und so sieht der Code dann bei mir dann auch wirklich aus. Er ist so kurz, das sich kein weiteres Hilfstemplate lohnt und er direkt im search Template links oben landet und so dem besucher bei der eigenen Navigation zumindest am ersten Ziel noch einmal kurz an die Hand nimmt.
Für die anderen static content Felder denke ich mir ncoh weitere Anwendungsbeispiele aus, erinnert mich ggf. noch mal dran….
Fortsetzung folgt…

