User-Logon

Download der aktuellen Versionen.

Benutzer:
Kennwort:

Online Handbuch:

Vorab

Installation

Release Notes

Erstnutzung der Sitemap

Suchfunktion verbessern

Automatisierung der Datenaufbereitung

Pricefeeds erstellen

PDF Kataloge erstellen

Devisenkursfunktion automatisieren

TagCloud erstellen

Customizen und Sonderfunktionen

Layout anpassen

Profi-Version und Ihre Unterschiede

Problembehandlung

Anhang

Ersatz-Tool:

Überblick über die Funktionen

Vollständige Sitemap

Vernünftige Suchlogik

Suchergebnisse mit Direktkaufen

Umfassendes Suchergebnis

Verbesserte Sitemap.xml

Automatische TagClouds

Individuelle Pricefeeds

Online-Bestände als Liste

Druckbarer Produktkatalog

Aktuelle Wechselkurse

Hohe Automatisierung

Lange Entwicklungsgeschichte

Referenzen

Bestellung & Handbuch

Online Handbuch

Allgemein:

Startseite

§6 TDG Kennzeichnung

Warenkorb

Referenzen und Gästebuch

Kontakt

Mobil A
Mobil D
Office
Fax
+43 (68) 110 622 322
+49 (175) 29 843 83
+49 (89) 820 738-24
+49 (89) 820 738-29

 

Vermeidung von SPAM

Um SPAM zu vermeiden, finden Sie auf der gesamten Site keine e-Mail Adresse. Sie können aber über das Anfrage-Formular, oder die Links für "e-Mail senden" eine e-Mail an e-Consultance senden. Die e-Mail-Adresse wird im Moment des Clicks generiert und ist damit für normale Internet-Scanner derzeit noch nicht ermittelbar.

Wichtige Seiten

Referenzen

Bestellung & Handbuch

Sie sind hier: »  Startseite  »  Ersatz-Tool »  Online Handbuch »  Customizen und Sonderfunktionen  » Suchergbnis-Links customizen

Suchergbnis-Links customizen


Die folgenden Optimierungen (Modifikationen) dienen nur dazu innerhalb einer Seite positionieren zu können.
Werden keine Anpassungen vorgenommen, können einzelne Positionen dennoch direkt angesprochen werden. Andere Objekte werden aber nicht direkt gefunden, sondern nur auf die entsprechende Seite positioniert. D.h. ohne Anpassungen bleibt man beim bisherigen Stil: Man kommt auf die Seite, aber nicht exakt an die Fundstelle

Navigation.ccml

In Sidebars positionieren

In den Sidebars müssen die auszugebenden Absätze in navigation.ccml numeriert werden und ein Tag
<a name="titlesb#0"></a> geschrieben werden, wobei "#" für die Nummer der Absatzes gilt.
Das kann w2d mit folgendem Befehl erledigen (in Sidebar-Absatzschleife in navigation.ccml):

<a name="titlesb<cc:print value="&mysidebar.number">0"></a> neuer Code einfügen vor
<cc:if cond="&mysidebar.caption"> vorhandenen Code

Seitentitel eindeutig machen

Google will pro Site einen eindeutigen Titel. Der gleiche Titel für mehrere Content-Seiten wird als „Fehler“ in webmastertools reklamiert.

Damit alle Suchseiten einen eineindeutigen Namen bekommen, benötigen wir wiederum einen PHP-Code in der navitation .ccml.

<title><cc:print value="&page.content.filename"></title> alter Code zu ersetzen

Der oben angeführte Code (relativ am Anfang von Navigation.ccml) ist durch folgenden rote Code-Passage zu ersetzen. Der schwarze Text (hier e-Consultance) ist ein statischer Text der immer dazu gelinkt wird. Einmal der Text für die Startseite (anstelle des Titels) und einmal ein Einleitungstext vor dem Seitentitel, der mit page.content.caption ausgegeben wird.

<?php
   if (!function_exists("ob_get_clean")) {
      function ob_get_clean() {
          $ob_contents = ob_get_contents();
          ob_end_clean();
          return $ob_contents;
      }
   }
$suchwort="";
$scriptname = preg_replace("/^.*\//","",$_SERVER['REQUEST_URI']);
$xs= strpos($scriptname,"kalender");
$kalender="";
if ($xs>0){
   $kalender=" Month=".substr($scriptname,$xs+9,5);
}
$xs= strpos($scriptname,"feiertage=");
if ($xs>0){
if (substr($scriptname,$xs+10,1)==1)
    {$kalender=$kalender." mit Feiertagen"; }
   else
   {$kalender=$kalender." ohne Feiertage"; }
}
$xs= strpos($scriptname,"mode=");
if ($xs>0){
   $kalender=$kalender." Modus: beide Suchworte";
}

if(substr($scriptname,0,7)=="fts.php") {
   $xs=strpos(" ".$scriptname,"criteria=")+strlen("criteria=");
   $x=strpos(" ".substr($scriptname,$xs-1,99),"&");
if ($x>0){
   $suchwort="'".substr($scriptname,$xs-1,$x-1)."'";}

if (strpos(" ".$scriptname,"nurabsatz=")>0)
{
   $xs=strpos(" ".$scriptname,"nurabsatz=")+strlen("nurabsatz=");
   $x=strpos(" ".substr($scriptname,$xs-1,99),"&");
if ($x>1){
   $suchwort=$suchwort." im Absatz Nr. '".substr($scriptname,$xs-1,$x-1)."'";}
}
else
{ if (strpos(" ".$scriptname,"nurseite=")>0)
   {
      $xs=strpos(" ".$scriptname,"nurseite=")+strlen("nurseite=");
      $x=strpos(" ".substr($scriptname,$xs-1,99),"&");
      if ($x>1){
          $suchwort=$suchwort." auf Seite '".substr($scriptname,$xs-1,$x-1)."'";}
}}

if (strpos(" ".$scriptname,"Bereich=")>0)
{
   $xs=strpos(" ".$scriptname,"Bereich=")+strlen("Bereich=");
   $x=strpos(" ".substr($scriptname,$xs-1,99),"&");
if ($x>1){
   $suchwort=$suchwort." in Bereich '".substr($scriptname,$xs-1,$x-1)."'";}
}
if (strpos(" ".$scriptname,"prodid=")>0)
{
   $xs=strpos(" ".$scriptname,"prodid=")+strlen("prodid=");
   $x=strpos(" ".substr($scriptname,$xs-1,99),"&");
if ($x==0){$x=strlen($scriptname);}
    $suchwort=$suchwort." mit Prod.Nummer '".substr($scriptname,$xs-1,$x-1)."'";
}
$suchwort =ereg_replace("%C4","Ä",$suchwort);
$suchwort =ereg_replace("%D6","Ö",$suchwort);
$suchwort =ereg_replace("%DC","Ü",$suchwort);
$suchwort =ereg_replace("%DF","ß",$suchwort);
$suchwort =ereg_replace("%E4","ä",$suchwort);
$suchwort =ereg_replace("%F6","ö",$suchwort);
$suchwort =ereg_replace("%FC","ü",$suchwort);
if (strpos($suchwort,"x=")>0)
{ $x=strpos($suchwort,"x=");
   $suchwort=substr($suchwort,0,$x-1);
}
$suchwort = str_replace('%7C','+',$suchwort);
$suchwort = "Suche nach ".str_replace('&',' ',$suchwort)."";
$xs= strpos($scriptname,"offset=");
if ($xs>0){
    $suchwort=$suchwort." Ergebnisposition: ".substr($scriptname,$xs+7,strpos(substr($scriptname,$xs+7,6)."&","&"));
}

echo "\n<title>".$suchwort.$kalender."</title>\n";}
else {$suchwort="";
ob_start();?>
<cc:if cond="&page.ishome">
   e-Consultance, IT- und Unternehmensberatung f&uuml;r Banken und Finanzdiensleister
<cc:else>
   e-Consultance: <cc:print value="&page.content.caption"></cc:if>
<?php
$title=ob_get_clean();
$title=$title." ".$kalender;
$scriptname = preg_replace("/^.*\//","",$_SERVER['REQUEST_URI']);
if ($title=="#unsichtbar"){$title="Seite umgezogen: ".$scriptname;}
if ($title==""){$title="fts.php";}
echo "\n<title>".$title."</title>\n";}
?>

Damit wird jeder Seite ein eindeutiger Name zugeordnet und Titel-Duplikate werden vermieden. Ein offenes Thema bleibt noch, wenn über die Auswahl ein Offset gewählt wird… aber das folgt dann in einer der nächsten Versionen.

Page.ccml

In der page.ccml sollte der <a name-Tag aus der Bedingung befreit werden, dass ein Seitentitel existiert.

ALT:
<cc:if cond="&para.caption"> vorhandener Code
   <a name="title<cc:print value="&para.uid">"></a>
   <h2><cc:print value="&para.caption"></h2>
</cc:if>


Neu:
<a name="title<cc:print value="&para.uid">"></a> verschobener Code
   <cc:if cond="&para.caption"> alter Code
   <h2><cc:print value="&para.caption"></h2>
</cc:if>


Damit gibt jetzt jeder Absatz seine UID aus.

Tipp

Sollten Sie Fehlermeldungen bekommen, dann bezieht sich das Tool auch auf diese UID-Nummern, die die Organisation der Daten beschreibt. Mit dem CCML-Befehl <a name="title<cc:print value="&para.uid">"></a> kann man Ankerpunkte setzen, die man sich z.B. mit web-developer anzeigen lassen kann. Damit kann man auf einer im Browser angezeigten Seite und eingeschalteter web-developer-Funktion für Ankerpunkte die einzelnen Objekte mit Ihren UID (unique identifier) sehen und schnell finden. Ohne diesen Befehl geht die Information über die UID-Nummer im HTML Code verloren und man kann weder auf der angezeigten Seite, noch im webtodate oder shoptodate selber diese Nummer sehen. Nur wenn ein Absatz definiert wird, dann wird als Pfad diese Nummer verwendet, solange bis der Pfad mittels des Buttons Auto überschrieben wird.

Teaser.ccml

Diese haben keine eigene UID. Daher nimmt man die UID des Absatzes und nummeriert die Teaser selber durch:
 
 D.h. wir schaffen uns einen eigenen Zähler "pageteasercount" in "page.ccml":

#C<cc:loop type="paragraph" obj="para">   vorhandener Code
<cc:set obj="pageteasercount" value="1">
neuer, eingefügter Code
 
Damit wird vor Ausgabe eines Absatzes (ggf. eines Teasers) die Variable pageteasercount auf 1 gesetzt
 
Dann muss in den Teasern natürlich noch die Ausgabe eines Namen erfolgen: D.h. in allen Teasern im Content, d.h. in teaser_caption.ccml, in teaser_captionabstract.ccml und teaser_captionabstractpicture.ccml folgender neuer (roter Code):
 
<cc:loop type="teaserelement" obj="myteaserelement">     vorhandener Code
<a name="title<cc:print value="&para.uid">t<cc:print value="&pageteasercount">"></a> neuer Code
<cc:set obj="pageteasercount" value="&pageteasercount+1">

Damit wird die UID das Absatzes um die Zählung des Teasers ergänzt, und dass wird vom Searchindextool synchron referenziert und als Adresse genutzt. Nach der Ausgabe muss man um ein hochzählen.

FAQ-Plugin

Seiten mit einem FAQ-Plugin haben das Problem, dass die FAQ mit Ihrem Text nicht geöffnet ist, wenn aus der Suchseite referenziert wird. Daher muss nach dem FAQ-Plugin ein folgender HTML-Absatz mit diesem Code nachgeschoben werden. Damit wird nach Ausgabe der FAQ noch der relevante FAQ-Punkt geöffnet:

<?php
function getfaqnr($myKey) {global $HTTP_GET_VARS;
if (isset($HTTP_GET_VARS[$myKey])) { return ($HTTP_GET_VARS[$myKey]); } else {return ("");}}
$faqnr=getfaqnr("faqnr");
if ($faqnr!="") {echo "<script type='text/javascript'>document.getElementById(\"faq".$faqnr."\").style.display = 'block';";
echo "window.scrollBy(0,document.getElementById(\"faqplugin\").offsetTop+".(23*($faqnr-2)).");</script>";}
?>


Damit nun auch noch richtig positioniert wird, benötigt diese Routine einen Referenzposition. Diese schaffen wir uns selber indem wir nun auch noch vor dem Plugin einen HTML-Ansatz einfügen:

<span id="faqplugin"></span>

Durch diese Referenzposition ist es nicht möglich mehrere FAQ-Plugins in einer Seite zu haben und dann noch das richtige FAQ zu öffnen. Ich weiß gar nicht, ob man mehrere FAQ auf einer Seite haben kann, da ich noch mit web2date V4.0 arbeite.

P.S: Das ist auch der Grund, warum ich nicht das Plugin einfach modifiziere, da ich es nicht habe. Also muss ich um das FAQ mit zwei HTML-Absätzen arbeiten.

Termine-Plugin

Seiten mit einem Termin werden durchsucht. Zur Positionierung müssen noch Anker vergeben werden, damit die Positionierung sofort funktioniert.

Datei „web2date\plugins\W2DPluginWhatsUpScript.inc“ mit einem Editor öffnen und Zeile 23 (rot) ergänzen.
for ($i=1;$i<=<cc:param name="count">;$i++) { // alter Code
   if (time()>$t[$i]["date"]-$pre && time()<$t[$i]["date"]+$post) {
       if ($sidebarmode) {
          echo ("<p>");
       } else {
          echo ("<tr>\n");
          echo ("<td class=s2d valign=top >\n");
       }
   #R echo ("<a name='titleterminnr".$i."'></a>");
// eingefügter Code: Ergänzung zur Positionierung

Such-Maske vereinfachen

Ist die Ausgabe aller Eingabefelder einer Suchmaske (immer als Standard-Anzeige) zu komplex kann man die Anzeige „Vereinfachen“.

Nach Installation des Tools kann die modifizierte Suchmaske in der Navigation.ccml weiter verbessert werden:

#C<div id="topic">
<form class="search" action="<cc:print value="&site.ftsfile">" ></ method="get">
<input class="searchx" type="text" name="criteria" value="Text suchen" maxlength="80"
    onfocus="if(this.form.prodid.value=='Artikel-Nr. finden')this.form.prodid.value='';
    if(this.form.criteria.value=='Text suchen')this.form.criteria.value='';
    if(this.form.preis.value=='Preis ?')this.form.preis.value='';"
    onblur="if(this.form.prodid.value==''&amp;&amp;this.form.criteria.value==''&amp;&amp;this.form.preis.value=='')
       {this.form.criteria.value='Text suchen';
       this.form.preis.value='Preis ?';
       this.form.prodid.value='Artikel-Nr. finden';
    }" /><br />
#R<?php
function NgetVarsPlain($myKey) {
// Gibt die HTTP-Post-Variablen zurück
    global $HTTP_GET_VARS;
    if (isset($HTTP_GET_VARS[$myKey])) {
       return ($HTTP_GET_VARS[$myKey]);
   }
else {
    return ("");
    }
}

$showtipp=NgetVarsPlain("showtipp");
$scriptname = $_SERVER['REQUEST_URI'];
// echo "Showtipp".$showtipp.".<br>";
if ($showtipp==""){$showtipp="none";$showtipp2="inline";}else {$showtipp="inline";$showtipp2="none";}
// echo "Showtipp".$showtipp.".<br>";
echo "<div id=\"tipp\" style=\"display:".$showtipp."\">";
?>
….

Grau ist der durch das Tool eingefügte Code (ggf. durch Fehlerbehebungen leicht korrigiert) und rot ist der einzufügender Text. Dieser Text gibt nun einen <div>-Containter aus, mit der Eigenschaft display:none oder display:inline. Die weiteren Sucheingabefelder werden damit (je nachdem ) ein oder ausgeblendet.

Nach den weiteren Sucheingabefeldern ist mit dem Befehl </div> dieser Container zu schließen und mit weiteren PHP-Befehlen wird eine Linkzeile ausgegeben, die die aktuelle Seite erneut aufruft und dabei zwischen „einfacher“ und „ausführlicher“ Eingabemaske umschaltet.

</div>
<input type="image" src="<cc:printpictureurl obj="pic.search">" title="Suche starten" />
<?php
    if (strpos($scriptname,"?")>0)
    { $scriptxname=substr($scriptname,0,
       strpos($scriptname,"?"))."?showtipp=yes&amp;".substr($scriptname,strpos($scriptname,"?")+1,999);
    }else
       {$scriptxname=$scriptname."?showtipp=yes";}
    echo "<a href=\"".$scriptxname."\" class=\"erweitert\"
       style=\"display:".$showtipp2.";\">Click f&uuml;r erweiterte Suche</a>";
    $scriptname=substr($scriptname,0,strpos($scriptname,"?"));
    echo "<a href=\"".$scriptname."\" class=\"erweitert\"
       style=\"display:".$showtipp.";\">Click f&uuml;r einfache Suche</a>";
?>


Zu sehen ist diese Funktion bei http://www.salzlampe.de/index.php

zur nächsten Seite
zur letzten Seite zurück
Startseite
zur vorherigen Seite
zur nächsten Seite
zur vorherigen Seite
zur letzten Seite zurück
Startseite
zum Seitenanfang
zum Textanfang
zum Seitenende
druckbare Seiten
Seite mailen
Add Site to Mr. Wong
Bei LinkARENA bookmarken