Offen Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

MatMagic

Aktives Mitglied
30. Juli 2013
5
0
Hallo Community,

ich würde gerne nach einer erfolglosen Artikel-Suche unter dem Button "Erneut suchen" - 10 Artikel aus einer Kategorie meiner Wahl anzeigen lassen. (so als würde man die Kategorie direkt aus der Navigation aus anwählen)

Zum Verständnis...
So sieht es derzeit aus:
suche_normal.jpg
Und so sollte es aussehen:
suche_wunsch.jpg
Kann man sowas im Backend einstellen (hab nichts gefunden) oder mit einem einfachen "Codeschnipsel" realisieren?

Es geht mir nicht um eine "Fuzzy-Search" / "Fehlertolerante Suche" - ich möchte nur einige Artikel aus einer Kategorie
nach dem erfolglosen Suchvorgang anzeigen lassen.

Wäre toll wenn Ihr möglichst unkomplizierte und kompetente Ratschläge für mich hättet. Codeschnipsel wären natürlich
perfekt.

Vielen Dank
MatMagic
 

Anhänge

  • suche_normal.jpg
    suche_normal.jpg
    34 KB · Aufrufe: 36
  • suche_wunsch.jpg
    suche_wunsch.jpg
    44,5 KB · Aufrufe: 36

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.716
355
AW: Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

In der suche_liste_custom.tpl folgendes einfügen:
Code:
{php}
$kKategorie = idDerKategorie;
$kategorieArtikel = new ArtikelListe();
$kategorieArtikel->getArtikelFromKategorie($kKategorie, 0, 1, ' kArtikel ASC', 1);
$this->assign('kategorieArtikel', $kategorieArtikel);
{/php}
Dann kannst du mit
Code:
{foreach name=kategorieartikel from=$kategorieArtikel->elemente item=Artikel}
    
{/foreach}
durch die Artikel gehen.
 

MatMagic

Aktives Mitglied
30. Juli 2013
5
0
AW: Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

Hallo martinwolf,
vielen Dank für deine Antwort. Ich habe gestern den ganzen Tag damit verbracht es ans Laufen zu bringen.
Leider passiert gar nichts - es erfolgt keinerlei Ausgabe. Kann mir einer sagen was falsch ist an diesem Code?

Code:
[B]in der Datei: tpl_inc/suche_header.tpl[/B]

{if $Suchergebnisse->SucheErfolglos == 1}
{php}
$kKategorie = '66';
$kategorieArtikel = new ArtikelListe();
$kategorieArtikel->getArtikelFromKategorie($kKategorie, 0, 1, ' kArtikel ASC', 1);
$this->assign('kategorieArtikel', $kategorieArtikel);
{/php}
{foreach name=kategorieartikel from=$kategorieArtikel->elemente item=Artikel}
<li class="p33 tcenter {if $smarty.foreach.artikel.index%3==0}clear{/if}">
<div>
<p>
<a href="{$Artikel->cURL}"><img alt="{$Artikel->cName}" src="{$Artikel->cVorschaubild}" class="image" id="image{$Artikel->kArtikel}" /></a>
</p>
<p>
<a href="{$Artikel->cURL}">{$Artikel->cName}</a>
</p>
<p>
<span class="price_label">{lang key="only" section="global"}</span> <span class="price">{$Artikel->Preise->cVKLocalized[$NettoPreise]}</span>
</p>
{if $Artikel->cLocalizedVPE}
<p><small><b>{lang key="basePrice" section="global"}:</b> {$Artikel->cLocalizedVPE[$NettoPreise]}</small></p>
{/if}
<p>
<span class="vat_info">{$Artikel->cMwstVersandText}</span>
</p>
</div>
</li>
{/foreach}
{/if}

(Die Kategorie 66 ist vorhanden und es sind Artikel drin)
 

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.716
355
AW: Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

Also bei mir funktionierts wunderbar, mit meiner Kategorie 104. Sicher dass 66 auch eine KategorieID ist? Hast du diese direkt aus der Datenbank gelesen oder woher ist der Wert?

Was mir aber gerade noch aufgefallen ist, änder mal diese Zeile
Code:
$kategorieArtikel->getArtikelFromKategorie($kKategorie, 0, 1, ' kArtikel ASC', 1);

um in
Code:
$nAnzahl = 10;
$kategorieArtikel->getArtikelFromKategorie($kKategorie, 0, $nAnzahl, ' rand()', 1);
Dann werden bis zu 10 Artikel im Zufallsprinzip ausgegeben.

Dann noch die

Code:
<li class="p33 tcenter {if $smarty.foreach.artikel.index%3==0}clear{/if}">
ändern in
Code:
<li class="p33 tcenter {if $smarty.foreach.kategorieartikel.index%3==0}clear{/if}">

Sonst hast du eine falsche foreach in der du die klasse clear setzen möchtest. Das würde nicht greifen.

Edit: Kannst du mal einen Link zum Shop posten?
 

MatMagic

Aktives Mitglied
30. Juli 2013
5
0
AW: Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

Hey martinwolf,
noch mal vielen Dank für den Lösungsansatz. Es passierte trotz den Änderungen leider nichts.
Ich habe es jetzt anders gelöst.

Sollte eine Suche Fehlschlagen wird das in der suche_header.tpl ja bereits abgefragt - dort setze ich meine Kategorievariable (als Name) und rufe die navi.php mit diesen Werten auf. Jetzt wird durch den Aufruf eines vorhandenen Kategorie Artikelnamens die suche_header.tpl durch die suche_liste.tpl erneut aufgerufen. Dort habe ich eine Abfrage ob die Fehlgeschlagene Suche schon durch ist - und passt.

in der suche_header.tpl

Code:
{if $Suchergebnisse->SucheErfolglos == 1}
<p class="box_info">{lang key="noResults" section="productOverview"}</p>

[COLOR=#000080][B]{php}
$MySucheErfolglos = $_GET['MySucheErfolglos'];
if ($MySucheErfolglos <> 1)
{
$MyKategorie = "Blumen";
[/B][B]$MySucheErfolglos = 1;[/B][B]
header("Location: navi.php?suchausdruck=$MyKategorie&MySucheErfolglos=[/B][B]$MySucheErfolglos[/B][B]");
}
{php}[/B][/COLOR]

   <form id="suche2" action="navi.php" method="get" class="form">
      <fieldset>
         <ul class="input_block">
            <li><label for="searchkey">Suchbegriff</label>
               <input type="text" name="suchausdruck" value="{$Suchergebnisse->cSuche|escape:'htmlall'}" id="searchkey" />
            </li>
            <li class="clear">
               {if $SESSION_NOTWENDIG}
               <input type="hidden" name="{$session_name}" value="{$session_id}" />
               {/if}
               <input type="submit" value="{lang key="searchAgain" section="productOverview"}" class="submit" />
            </li>
         </ul>
      </fieldset>
   </form> 

{/if}

Jetzt mach ich noch ne "custom" draus und ich bin glücklich. 🙂
Aber vielen Dank das Du dir die Mühe gemacht hast und versucht hast zu helfen. Viele versuchen ja nur "abzuschöpfen" und leisten selbst keine Beiträge in Foren.
 

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.716
355
AW: Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

Keine Ursache 🙂
Ich denke es liegt nach wie vor an einer falschen ID der Kategorie aber wenn dein Ansatz funktioniert, viele Wege führen nach Rom 😉

VG
Martin
 

pgjan

Aktives Mitglied
25. Februar 2014
20
0
AW: Artikel Anzeige nach erfolgloser Suche (ohne Fehlertoleranz)

Hi,
ich grabe das hier nochmal aus, weil ich vor prinzipiell einem ähnlichen Problem stehe - hat nur nichts mit der Suche zu tun.
Ganz grob: Ich möchte 8 Artikel aus einer bestimmten Kategorie "zufällig" auf der Startseite des Shops ausgeben. In Shop-Version 3 habe ich einfach eine bestimmte Anzahl Produkte mit der Methode get_product_list in ein Array gepackt und diese Produkte dann ausgegeben.
Es scheint diese Methode in Shop v4 aber nicht mehr zu geben. Also habe ich das mit dem php-Schnipsel von martinwolf getestet:

Code:
{php}
$kKategorie = idDerKategorie;
$kategorieArtikel = new ArtikelListe();
[COLOR=#333333]$nAnzahl = 10;
[/COLOR][COLOR=#333333]$kategorieArtikel->getArtikelFromKategorie($kKategorie, 0, $nAnzahl, ' rand()', 1);
[/COLOR]$this->assign('kategorieArtikel', $kategorieArtikel);
{/php}

Diesen Code nutze ich in der Datei page/index.tpl. Leider bekomme ich im Shop dann folgenden Fehler:

Code:
Fatal error: Using $this when not in object context in index.tpl.php on line 53

Da im Code das Objekt vom Typ ArtikelListe erzeugt wird, kann ich das nicht so ganz nachvollziehen. Hat jemand einen Tipp für mich?
Danke schonmal.
 

Ähnliche Themen