Suchfunktion gibt keine Ergebnisse aus?!

contenidoAmateur

Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Hallo,

ich habe das Suchmodul jetzt nochmal eingerichtet, und er geht auf die richtige Seite und es geht alles außer das die jedesmal kein Ergebnis herausgibt. Gut ich habe noch nicht viel Text auf dieser Seite, aber theoretisch sollt die Suche ja etwas ergeben.

Wisst ihr vllt. warum die Suche keine Ergebnisse ausgibt? (Sondern nur: "Ihre Suche nach 'dolor' hat leider keine Treffer ergeben.")

Danke und einen guten Rutsch
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Bräuchte immer noch Hilfe...

Danke :)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von xmurrix »

Beim Speichern eines Artikels wird in der Regel die Index-Tabelle aktualisiert. In dieser Tabelle werden die Wörter und deren Vorkommen in Artikeln gespeichert. Ist die Tabelle bei dir befüllt, und kommt das von dir gesuchte Wort darin im Feld 'keyword' vor?

Vielleicht liegt es auch an der Kollation deiner Datenbank. Wenn die gewählte Kollation der Datenbank kein "_ci" am Ende hat, z. B. latin1_general_ci, dann könnte die Suche auch nicht wie erwünscht Ergebnisse liefern. Bei einer Kollation ohne die Endung "_ci" wird bei der Suche zwischen Groß-/Kleinschreibung unterschieden

Ansonsten müsstest du die Suche debuggen, um herauszufinden, was da schief läuft.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

So ich hab mir das mal angeschaut. in der DB Datei con_keywords liegt folgendes drinne

1 idkeyword int(10) Nein 0
2 keyword varchar(50) latin1_german1_ci Nein kein(e)
3 exp text latin1_german1_ci Nein kein(e)
4 auto text latin1_german1_ci Nein kein(e)
5 self text latin1_german1_ci Nein kein(e)
6 idlang int(10)

D.h. dieses _ci ist dabei und die keywords ist auch dabei.

Was nun?

Danke
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von xmurrix »

Hast du auch Einträge/Datensätze in der Tabelle 'con_keywords' drin?

In welchen Kategorien wird gesucht, was hast du als System-Einstellung "searchrange - include" angegeben?
Man muss im Backend unter "Administration -> Mandanten -> Mandanteneinstellungen" folgenden Eintrag machen:

Code: Alles auswählen

Typ: searchrange
Name: include
Wert: Hier kommt als Wert eine kommaseparierte Liste der Kategoie Id's in deren Artikel gesucht werden soll, z. B. "1,5" (ohne Anführungszeichen). Es reicht, wenn man hier die jeweils die Id der obersten Kategorieebenen angibt.
Diese Info müsste auch in der Modulausgabe stehen.
Wenn da Id's angegeben sind, du aber keine Kategorien mit diesen Ids hast, oder deine Kategoriebäume (Hauptkategorien) andere Id's haben, wird auch nichts gefunden...

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Ach dafür war dieses Searchrange gut :P

Super vielen vielen Dank :)

PS: Hast du auch ne Kaffeekasse? ;)
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Kurz noch ich schau mir gerade das PHP Modul an, wenn ich das was gesucht wird wie in der Ausgabe der Variable MESSAGE wo anders seperat ausgeben möchte? Was muss ich da mache ich kann ja Schlecht die PHP variable aus dem PHP COde verwenden. und wenn doch welche ist das:)
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Oh habs schon :) :)

$tpl->set('s', 'SUCHEINGABE', $searchterm_display);

Also das "SUCHEINGABE" ist die von mir gesetzte Variable und das "$searchterm_display" ist die PHP Variable, in der die Sucheingabe gespeichert wird, aber was genau ist das alles:

" $tpl->set('s', "

Kannst du mir das erklären? :)

Danke :)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von xmurrix »

... $tpl->set('s', "

Kannst du mir das erklären?...
$tpl ist eine Instanz der Template Klasse (siehe, contenido/classes/class.template.php) und damit werden in der Regel Templates mit dynamischen Inhalten befüllt und ausgegeben.

Mit $tpl->set() gibt man einen Wert für einen Platzhalzter an, die Methode set() bekommt 3 Parameter, die wie folgt Verwendet werden können:

Code: Alles auswählen

1. Parameter (string) Entweder 's' für statische oder 'd' für dynamische Variablen.
2. Parameter (string) Der Platzhalter, der im Template ersetzt werden soll
3. Parameter (string) Der zu ersetzende Wert
Hier ein einfaches Beispiel:

Nehmen wir an, du hast ein Template unter cms/templates/myYouTubeVideoPlaylist.html mit folgendem Inhalt:

Code: Alles auswählen

<p>{MESSAGE}</p>
<ul>
<!-- BEGIN:BLOCK -->
    <li><a href="{URL}" title="{TITLE}">{TEXT}</a></li>
<!-- END:BLOCK -->
</ul>
Dann gibt es z. B. ein Modul "myYouTubeVideoPlaylist" und in der Modulausagabe willst du deine YouTube Playliste ausgeben.

Code: Alles auswählen

<?php
// Liste von YouTube Videos
$aYouTubeVideos = array(
    array('title' => 'Gary Moore - Still Got The Blues (Live)', 'url' => 'http://www.youtube.com/watch?v=4O_YMLDvvnw'),
    array('title' => 'Battleme covers Neil Youngs "Hey Hey, My My" (Sons of Anarchy Finale)', 'url' => 'http://www.youtube.com/watch?v=zz8Y8btSXmc'),
    array('title' => '"STEVIE RAY VAUGHAN" VOODOO CHILE....YOU HAVE TO SEE IT ......THE BEST...', 'url' => 'http://www.youtube.com/watch?v=OEJh2FFUUoU'),
    array('title' => 'Eric Clapton - While my guitar gently weeps (HQ)(Concert for George)', 'url' => 'http://www.youtube.com/watch?v=rj4J6i_vw0w')
);

// Instanz vom Template Objekt erstellen
$oTpl = new Template();

// Statischen Platzhalter {MESSAGE} setzen
$oTpl->set('s', 'MESSAGE', 'Meine YouTube Video Playliste');

// In einer Schleife die dynamischen Platzhalter ({URL}, {TITLE} und {TEXT}) setzen
foreach ($aYouTubeVideos as $p => $video) {
    $oTpl->set('d', 'URL', $video['url']);
    $oTpl->set('d', 'TITLE', htmlspecialchars($video['title']));
    $oTpl->set('d', 'TEXT', $video['title']);
    $oTpl->next(); // 
}

// Template ausgeben
$oTpl->generate('templates/myYouTubeVideoPlaylist.html');
?>
Weitere Hinweise:
  • Dynamische Platzhalter sind immer zwischen <!-- BEGIN:BLOCK --> und <!-- END:BLOCK -->
  • Die Marker <!-- BEGIN:BLOCK --> und <!-- END:BLOCK --> werden nur für die Ausgabe von Listen verwendet
  • Man kann <!-- BEGIN:BLOCK --> und <!-- END:BLOCK --> nicht verschachteln
  • <!-- BEGIN:BLOCK --> und <!-- END:BLOCK --> darf es pro Template nur einmal geben
  • Die generate() Funktion gibt das Template gleich aus, aber du kannst das auch unterbinden und das Template einer Variablen zuweisen, z. B.

    Code: Alles auswählen

    $html = $oTpl->generate('templates/myYouTubeVideoPlaylist.html', 1);
    echo $html;
    
  • Du kannst die Instanz vom Template Objekt in mehreren Modulen wiederverwenden, musst es nur in jedem Modul gleich am Anfang zurücksetzen mit $oTpl->reset();
  • Wenn du willst, kannst du auch deine eigene Template Engine (Smarty, TinyButStrong, Twig, uvm...) im Frontend verwenden
Schau dir einfach die Klasse Template (contenido/classes/class.template.php) und die Modulausgaben der Module des Beispielmandanten sowie deren Templates (cms/templates/) an.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Cool Danke :)

folgendes Problem ist mir bei dem was ich geschrieben habe jetzt aufgefallen:

Ich habe mir eine variable nur für das Zählen der Suchergebnisse gesetzt:
$AnzahlResults = count($aSearchResults);

und diesem dann eine Platzhalter gegeben:
$tpl->set('s', 'ANZAHLERGEBNISSE', $AnzahlResults);

so diesen Platzhalter habe ich ausgegeben im Template mit {ANZAHLERGEBNISSE} .

Folgendes Problem ist nun aufgetreten:
Wenn die Suche erfolgreich war, wurde im Template nun diese Variable mit der Anzahl der Ergebnissen gefüllt, nur wenn die Suche keine Ergebnisse ausgibt, weil ich keine Inhalte z.B. zu dem Suchbegriff "sjlshgslkgdl" habe, gibt das PHP Modul hier ($AnzahlResults = count($aSearchResults);) nicht 0 aus sondern anscheinend einfach gar nichts, so dass im Template der Platzhalter nichts bekommen hat, sodass im Template dann {ANZAHLERGEBNISSE} stand.

Dann habe ich probiert die Variable $AnzahlResults mit einer if-Abfrage zu füllen:
if (count($aSearchResults) > 0) {
$AnzahlResults = count($aSearchResults);
}
else {
$AnzahlResults = 0;
}

Nur er gibt immer nur die Platzhalter als Text aus, wenn die Suche keine Ergebnisse hervorbringt. Sobald die Suche min. 1 Ergebnis zu Tage bringt, gibt er im Template wieder alles richtig aus.

Das Problem tritt auch bei dem Platzhalter {SUCHEINGABE} auf, den ich wie folgt definiert habe:
$tpl->set('s', 'SUCHEINGABE', $searchterm_display);


Ich habe nur die oben stehenden Sachen verändert und wie gesagt das Problem, dass nur die Platzhalter stehen bleiben im Template kommt nur vor, wenn die Suche keine Ergebnisse hat.

Was will ich machen:
Ich möchte anhand der Anzahl der Ergebnisse des Suchergebnisses via JavaScript immer ein anderes Bild ausgeben lassen.

Das ist das Script:
<script>
var inhalt = {ANZAHLERGEBNISSE};
$(document).ready(
function inhaltAbfrage () {
if (inhalt >= 1 )
$('.searchImg').css('backgroundImage', 'url(bild1.png)');
else
$('.searchImg').css('backgroundImage', 'url(bild2.png)');
});
</script>

Die Pfade hab ich angepasst, damit meine URL hier net steht.

Das Script Funktioniert eigentlich, das habe ich getestet, nur das Problem mit den Platzhaltern lässt es nicht rundlaufen....

Dankeschön :)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von xmurrix »

Es wäre für dich besser, wenn du dich damit auseinander setzt, so bekommst du die nötige Erfahrung, um mit CONTENIDO noch besser Arbeiten zu können.

Schau dir einfach den Code in der Modulausgabe genauer an, es gibt darin einige wichtige Bedingungen und anhand der Bedingungen wird das Template unterschiedlich befüllt.

Das Grundgerüst im Modul sieht folgendermaßen aus:

Code: Alles auswählen

<?php

if (strlen(trim($searchterm)) > 0) {

    // ...

    if (count($aSearchResults) > 0) {

        // ...
        // Code der ausgeführt wird, wenn es Ergebnisse gibt. Hier wird das Template befüllt...
        // ...

    } else {

        // ...
        // Code der ausgeführt wird, wenn es KEINE Ergebnisse gibt. Hier wird das Template auch befüllt...
        // ...

    }

} else {
    echo '<div id="searchResults">';
    echo '<h1>'.mi18n("Keine Suchergebnisse - Bitte suchen Sie über das Sucheingabefeld!").'</h1>';
    echo '</div>';
}

?>
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

okay dann werde ich mir die jetzt in Zukunft einmal genauer ansehen :)

Ich habs nun so gelöst (dort wo die Texte erzeugt werden):

Suchergebnisse:

Code: Alles auswählen

$imgMesssageRight = '<div class="searchImg"><img src="bild1.png" /></div>';
		$pTagvorRight = '<p id="message" class="message">';
		$pTagnachRight = '</p>';
        #Build meessage
        $message = $imgMesssageRight. $pTagvorRight. $sYourSearchFor." '".conHtmlSpecialChars(strip_tags($searchterm_display))."' ".mi18n("hat $$$ Treffer ergeben").":". $pTagnachRight;
        $message = str_replace('$$$', count($aSearchResults), $message);
        $tpl->set('s', 'MESSAGE', $message);
keine Suchergebnisse:

Code: Alles auswählen

$imgMesssageFalse = '<div class="searchImg"><img src="bild2.png" /></div>';
	$pTagvorFalse = '<p id="message" class="message">';
	$pTagnachFalse = '</p>';
        #No results
        $tpl->set('s', 'MESSAGE', $imgMesssageFalse. $pTagvorFalse. $sYourSearchFor." '".conHtmlSpecialChars(strip_tags($searchterm))."' ".mi18n("hat leider keine Treffer ergeben")." .".  $pTagnachFalse);
        $tpl->set('s', 'NEXT', '');
        $tpl->set('s', 'PREV', '');
        $tpl->set('s', 'PAGES', '');
        $tpl->set('s', 'result_page', '');
        $tpl->generate('templates/search_output.html');
Vielen Dank für die Hilfe :)
Zuletzt geändert von contenidoAmateur am Fr 4. Jan 2013, 11:44, insgesamt 1-mal geändert.
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

Eine kleine Frage hätte ich trotzdem noch:

wenn ich auf die Links mehr oder den Header klicke werde ich an die Suchseite weitergeleitet , so dass dann dort:

Keine Suchergebnisse - Bitte suchen Sie über das Sucheingabefeld!

D.h. eine Leere Suche ausgelöst.

Ich hab mich schon durch den kompletten Code gelesen, aber so viel Ahnung von PHP hab ich nun auch nicht :/
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von xmurrix »

...wenn ich auf die Links mehr oder den Header klicke werde ich an die Suchseite weitergeleitet , so dass dann dort:
Keine Suchergebnisse - Bitte suchen Sie über das Sucheingabefeld!...
Hmm, dann wird in der Schleife nicht der Link zum gefundenen Artikel generiert, vermutlich zur Suche selbst.

Poste doch mal hier die Modulausgabe vom Modul "Search_Output", aber bitte mit BBCode Tage für Programmcode (siehe http://forum.contenido.org/faq.php?mode=bbcode#f2r1)
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
contenidoAmateur

Re: Suchfunktion gibt keine Ergebnisse aus?!

Beitrag von contenidoAmateur »

So, bevor ich mir jetzt 2 Stunden den Code mit BB-Codes voll packe hab ich das so gemacht :)

http://pastebin.com/tGavvKcP

hoffe das reicht dir auch :)

Danke :)
Gesperrt