Artikel von der Suche ausschließen

Begonnen von dobra, August 02, 2008, 08:51:56

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Mit der neuen Funktion
Zitat- Die Variable "suchort" kann jetzt auch invers benutzt werden. Also alle Artikel
  ausschließen, die in der Seite und Unterseiten liegen. Dazu gibt man die Seitennummer
  als negativen Wert an.
kann man ja jetzt auch Kategorien von der Suche ausschließen.

DANKE für diese Möglichkeit!

Manchmal ist es aber sinnvoll, daß zusätzlich auch einzelne Artikel nicht gefunden werden.
z.B. Test- oder Dummyartikel auf Infoseiten

Um diese Artikel von der "SUCHE" auszuschließen, wäre aber noch eine Änderung im Programm nötig.

Es gibt aber eine einfache Möglichkeit, diese Artikel auf der Ergebnisseite NICHT ANZUZEIGEN  :D

Ein Artikelfeld "NOSEARCH" anlegen.
Wenn "nichts" in diesem Feld steht, passiert auch nichts.
Soll ein Arikel nicht in den Suchergebnissen angezeigt werden, schreibt man "irgendwas" in dieses Feld.

Code (in stdall.ipl oder auch direkt in die Suchergebnisseite)
<!--spmacro:module(show)
sub search {
my $index = shift;
my $nosearch = ssp::get_var_article("NOSEARCH", $index);
if (!length($nosearch)) {
my $out = qq|
## hier der HTML Code, der zwischen <!--spmacro:loopitem--> und <!--spmacro:enditem--> steht
|; 
main::mprint $out;
}
}
-->


Auf der (den) Suchergebnisseite(n) dann den HTML-Ausgabecode mit __show::search__ ersetzen.

<!--spmacro:loopitem10-->
        __show::search__
<!--spmacro:enditem-->


P.S.: wenn ihr das ajaxsearch Script von cru verwendet, kann man die Anzeige dieser Artikel auch hier unterdrücken.
im Beispiel steht "no" in NOSEARCH wenn der Artikel nicht gefunden werden soll.

dazu in ajaxsearch.ipl diesen Teil ergänzen:

#Abfragen wenn kein Subkatalog vorhanden
   if ($subcat == -1){
        $sql = qq|SELECT DISTINCT $ITEM.$m_dbField, $ITEM.$m_dbField_d, $ITEM.ITEMID $img $add FROM $ITEM WHERE  $like $ITEM.XISLINK <> 1 AND $ITEM.NOSEARCH != 'no'  $group $limit;|;
      $sql_count = qq|SELECT count(*) AS mycount FROM $ITEM WHERE $like $ITEM.XISLINK <> 1;|;
        #varianten lesen
        if ($read_variants == 1){
            $v_sql = qq|SELECT DISTINCT  $SITEM.$m_dbField, $SITEM.$m_dbField_d,  $SITEM.MITEMID $var_img $v_add FROM $SITEM WHERE  $v_like  $v_group $limit ;|;
        }
   
   }
   else{
      #Abfragen wenn Subkataloge vorhanden
        $sql = qq|SELECT DISTINCT  $ITEM.$m_dbField, $ITEM.$m_dbField_d, $SUBC.SCID, $ITEM.ITEMID $img $add FROM $ITEM INNER JOIN $SUBC ON $ITEM.ITEMID = $SUBC.ITEMID WHERE $like  $SUBC.SCID=$subcat AND $ITEM.XISLINK <> 1 AND $ITEM.NOSEARCH != 'no' $group $limit;|;
      $sql_count = qq|SELECT count(*) AS mycount FROM $ITEM INNER JOIN $SUBC ON $ITEM.ITEMID = $SUBC.ITEMID WHERE $like $SUBC.SCID=$subcat AND $ITEM.XISLINK <> 1;|;
        #varianten lesen
        if ($read_variants == 1){
            $v_sql = qq|SELECT DISTINCT  $SITEM.$m_dbField, $SITEM.$m_dbField_d, $SSUBC.SCID, $SSUBC.ITEMID $var_img $v_add FROM $SITEM INNER JOIN $SSUBC ON $SITEM.ITEMID = $SSUBC.ITEMID WHERE $v_like  $SSUBC.SCID=$subcat $v_group $limit;|;
        }
    }
mfG
dobra