Such-Modul soll nur in bestimmter Konstanter suchen - wie?

Gesperrt
dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Such-Modul soll nur in bestimmter Konstanter suchen - wie?

Beitrag von dosenbrot » Do 20. Okt 2011, 16:26

Hallo liebe Leute!

Ich verwende das Standard-Suchmodul von contenido.
Für einen bestimmten Zweck möchte ich jedoch, dass ausschließlich die Inhalte der Konstanten CMS_TEXT[0] durchsucht werden und nichts anderes.

Es gibt in dem Modul die Variable $cms_options, die im Modul die Angabe "search only in these cms-types" enthält. Darin sind sämtliche types wie html, htmlhead, text etc. angegeben.

Ganz gleich ob ich nur noch "text" oder

Code: Alles auswählen

$cms_options = array ("CMS_TEXT[0]");
in der Zeile stehen lasse, werden dennoch ALLE Konstanten (auch CMS_HTML) durchsucht!

Was mache ich verkehrt???

Danke und Grüße
Felix

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von Dodger77 » Do 20. Okt 2011, 16:57

Ganz kurz: die Klasse (siehe dazu /contenico/classes/class.search.php) sieht das so nicht vor.

Evtl. lässt sich das Ergebnisarray allerdings um die nicht gewünschten Treffer reduzieren (ungetestet):

Code: Alles auswählen

$search_result = $search->searchIndex($searchword, $searchwordex);

foreach ($search_result as $result_idart => $result) {
    if (!array_key_exists(0, $result['CMS_HTML'])) {
        unset($search_result[$result_idart]);
    }
}

dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von dosenbrot » Do 20. Okt 2011, 17:53

Danke für deinen Tipp, damit klappt es aber leider nicht.

Gibts ne Möglichkeit die class.search.php zu dublizieren (etwa in class.search2.php) und zu verändern , so dass es funktioniert?

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von Spider IT » Fr 21. Okt 2011, 08:29

Dodger77 hat geschrieben:Ganz kurz: die Klasse (siehe dazu /contenico/classes/class.search.php) sieht das so nicht vor.
In der class.search.php steht in Zeile 773-777 (Zeilennummern in der von Felix eingesetzte 4.8.11)

Code: Alles auswählen

	/**
     * array of available cms types
     * @var array
     */
    var $cms_type = array();
Wofür ist das gedacht, wenn nicht um die Typen einzugrenzen?

Gruß
René

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von Dodger77 » Fr 21. Okt 2011, 09:00

@René: Die Klasse unterscheidet nicht zwischen CMS_HTML[0] und CMS_HTML[1].

dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von dosenbrot » Fr 21. Okt 2011, 09:33

Danke euch beiden.

Damit es aber nicht zu Missverständnissen kommt:
Die Klasse soll auch nicht zwischen CMS_HTML[0] und CMS_HTML[1] unterscheiden, sondern zwischen CMS_HTML und CMS_TEXT!!!

Es soll also nur in CMS_TEXT gesucht werden, jedoch nicht in CMS_HTML und nicht in CMS_HTMLHEAD.

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von Dodger77 » Fr 21. Okt 2011, 13:01

OK, ich dachte, es wäre für dich wichtig, ob in CMS_TEXT[0] oder CMS_TEXT[1] gesucht wird. Wenn es nur um CMS_TEXT[x] geht, dann sollte:

Code: Alles auswählen

$cms_options = array("CMS_TEXT");
funktionieren wie gewünscht.

dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von dosenbrot » Fr 21. Okt 2011, 13:16

Das habe ich ja auch angenommen, aber das verrückte ist, dass dennoch ÜBERALL gesucht wird...
Ganz gleich ob ich

Code: Alles auswählen

$cms_options = array("CMS_TEXT");
oder

Code: Alles auswählen

$cms_options = array(text);
angebe! :-(

Cache löschen etc. hat auch nichts gebracht. Es wird einfach überall gesucht...

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von Spider IT » Sa 22. Okt 2011, 09:08

Wie in meinem Post zuvor, es ist $cms_type = array('CMS_TEXT');
Das Array $cms_options hat eine ganz andere Funktion.

Gruß
René

dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von dosenbrot » Sa 22. Okt 2011, 10:56

Ich habe jetzt die class.search.php dubliziert zu einer class.search2.php. Warum ich eine zweite Datei davon angelegt habe? Zusätzlich soll die normale Suchfunktion auf der Seite möglich sein! Hiermit möchte ich zusätzlich nur spezielle Themen suchen lassen, die in CMS_TEXT gespeichert sind. Damit das Script überhaupt laufen kann, habe ich auch hinter jede Klasse (z.B. "class Index" in Zeile 75 bei der contenido 4.8.11-Version) eine 2 geschrieben (also "class Index2" etc.). Außerdem habe ich im Modul oben entsprechend

Code: Alles auswählen

cInclude('classes', 'class.search2.php');
eingefügt, um auf die veränderte search-Datei zu verweisen. Damit läuft die Suchfunktion generell, durchsucht aber ja weiterhin alle cms-types.

Also habe ich wie beschrieben

Code: Alles auswählen

$cms_type = array('CMS_TEXT');
in die class.search2.php eingefügt. Zum einen in die Zeile 777, aber weil dies keinen Unterschied bei der Suchausgabe gab, auch in Zeile 164. Probiert habe ich es auch anstelle von ' ' mit " " oder nur mit der Angabe text. Aber es werden weiterhin alle types durchsucht! Gibt es noch eine andere Stelle / Datei, wo dies abgefragt wird?

Danke für eure Mühen!!!!!! :-)

dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von dosenbrot » Fr 5. Apr 2013, 17:04

Hallo liebe Leute,

das hier geschilderte Problem konnte ich übrigens noch immer nicht lösen, würde mich aber weiterhin über eure Lösungsvorschläge freuen!

Ich habe halt ein Modul, mit welchem ich jedem Artikel eine bestimmte Kategorie (News, Interview, Kommentar, Aktion etc.) zuweisen kann. Per Suchlink (kategorie-interview.html) möchte ich alle Artikel der Kategorie Interview auflisten.
Das Problem ist aber weiterhin, dass alle types durchsucht werden, egal was ich im Standard-Suchmodul oder in der class.search.php einstelle! Alle hier genannten Vorschläge haben also keine Auswirkungen bei der Sucheinschränkung ergeben.
Es soll aber ausschließlich in CMS_TEXT[0] durchsucht werden!!!

Vielleicht weiß inzwischen jemand von euch einen neuen Rat???

DANKE und beste Grüße
Felix

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von xmurrix » Fr 5. Apr 2013, 21:34

Willst du dass nur in CMS_TEXT gesucht werden soll, dann mache folgendes im Suchmodul:

Code: Alles auswählen

...
$search = new Search($options);
$cms_options = array ("text"); // search only in cms_text
$search->setCmsOptions($cms_options);
...
Willst du aber, dass explizit nur in CMS_TEXT[0] gesucht wird, dann musst du die class.search.php entsprechend erweitern.

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.

dosenbrot
Beiträge: 102
Registriert: Fr 27. Aug 2004, 15:37
Kontaktdaten:

Re: Such-Modul soll nur in bestimmter Konstanter suchen - wi

Beitrag von dosenbrot » Fr 5. Apr 2013, 21:49

Ich möchte damit nur CMS_TEXT[0] durchsuchen, weiß aber nicht, wie ich es ändern muss.

Gesperrt