Standard Such-Modul - Artikeltitel auch durchsuchen

Gesperrt
qualtext
Beiträge: 17
Registriert: Di 19. Jun 2012, 10:04
Kontaktdaten:

Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von qualtext » Mi 4. Jul 2012, 14:04

Hallo Contenido-Gemeinde,

diese Standard-Such-Modul von Contenido durchsucht (je nach Einstellung) nur alle CMS_ Typen.

Laut class.search.php

Code: Alles auswählen

var $cms_options = array(); 
    
    /**
     * array of all available cms types
     * 
     * htmlhead		- HTML Headline
     * html			- HTML Text
     * head  		- Headline (no HTML)
     * text			- Text (no HTML)
     * img			- Upload id of the element 
     * imgdescr		- Image description
     * link			- Link (URL)
     * linktarget	- Linktarget (_self, _blank, _top ...)
     * linkdescr	- Linkdescription
     * swf			- Upload id of the element	
     * etc.
	 * 
     * @var array
     */
Wie bekomme ich die Suche dazu, auch den Artikeltitel (den man unter Content > Artikel > Eigenschaften - Titel angibt) in die Suche einzubeziehen?

Ich finde hierzu keine Option. Die Klasse an sich ist nur schwer zu durchschauen - Wäre über eure Hilfe sehr dankbar!

Vielen Dank,
Qualtext

qualtext
Beiträge: 17
Registriert: Di 19. Jun 2012, 10:04
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von qualtext » Di 10. Jul 2012, 13:53

Ich habe jetzt mein breadcrumb-modul, welches ich für den title-Tag benutze umgeschrieben. Damit speichert er mir den Titel und die Crumbs in einem CMS_HEAD. Dadurch kann die Suche auch die Titel des Artikels durchsuchen.

Leider wird der HEAD nur aus dem Titl geschrieben, wenn ich den Artikel im Contenido neu speichere.

Funktioniert die conSaveContentEntry() Funktion nur im Backend von Contenido, beim Speichern eines Artikels?
Ich wollte das die Funktion beim erstellen des Title-Tags automatisch diesen immer in eine CMS_HEAD schreibt.

Auszug:

Code: Alles auswählen

$writeTitelForSearch = true;
$titleCMSid = 1234567;

cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation_Breadcrumb.class.php');
try {
    $oBread = new Contenido_FrontendNavigation_Breadcrumb($db, $cfg, $client, $lang, $cfgClient);
    $oBreadCats = $oBread->get($idcat, 1);
    $sBread = 'Webseite - ';
    $aBread = array();
    foreach ($oBreadCats as $oConCat) {
        $aBread[] = $oConCat->getCategoryLanguage()->getName();
    }
    $sBread .= implode(' - ', $aBread);
    $oArticle = new Article($idart, $client, $lang);
    $sHeadline = strip_tags($oArticle->get('title'));
    if ($sHeadline != '') {
        $sBread .= ' · '.$sHeadline;
    }
    echo $sBread;
	// -------------------------------------------- hier soll auch beim aufruf im Frontend der Titel in den CMS_HEAD geschrieben werden
	if($writeTitelForSearch) {
		$oArticle = new Article($idart, $client, $lang);
		$curTit = $oArticle->getContent('HEAD',$titleCMSid);
		if($curTit!=$sBread) {
			conSaveContentEntry($idart, 'CMS_HEAD', $titleCMSid, $sBread);
		}
		
	}
	
}
Vielen Dank für die Bemühungen
Qualtext

qualtext
Beiträge: 17
Registriert: Di 19. Jun 2012, 10:04
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von qualtext » Di 10. Jul 2012, 16:45

Ich habe jetzt eine manuelle sql-query erstellt, die die CMS_HEAD in die Datenbank schreibt.

Beim Aufrufen mit

Code: Alles auswählen

print_r($oArticle) 
sehe ich auch, das der Head wirklich in den Contents vom Artikel gespeichert wurde.

Die Suchfunktion allerdings durchsucht meinen gespeicherten Head in den Contents dennoch nicht. Öffne ich den Artikel im Backend und speichere, so erkennt die Suche den HEAD.

Kann mir das bitte einer erklären?
Greift die Suche auf eine Art Cache zurück?
Wie sage ich der Suche, das der Artikel nun aktualisiert wurde?
Was macht Contnido beim speichern vom Artikel anders?
Fügt Contenido in eine Tabelle die Felder beim speichern nochmal ein, auf die nur die Suche zugreift?
Und wieso wird in die "conSaveContentEntry" die Class cInclude("classes", "class.search.php"); included, obwohl die da gar nciht benutzt wird?

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von Oldperl » Di 10. Jul 2012, 18:51

Hallo qualtext,
qualtext hat geschrieben:Wie bekomme ich die Suche dazu, auch den Artikeltitel (den man unter Content > Artikel > Eigenschaften - Titel angibt) in die Suche einzubeziehen?
Eigentlich garnicht, da dies ja auch zuerstmal wenig Sinn macht. Das Frontendsuchmodul soll Inhalte die im Frontend angezeigt werden durchsuchbar machen. Der BE-Titel macht da im 1. Moment wenig Sinn.

Da benötigte Infos in der Klassenmethode start() per Parameter übergeben werden, so auch der zu indexierende Content, müßte in den Aufrufen zum Beispiel in functions.con2.php das übergebene Array entsprechend erweitert werden. Alternativ könnte man ein Chain-Plugin schreiben, das beim Speichern eines Artikel selbst einen Index über den BE-Titel erstellt und als Keywords wegspeichert.
Einen direkten Eingriff in die class.search.php, hier in die Klasse index(), oder in andere Teile des Core finde ich daher nicht notwendig und wenig sinnvoll, zumal gemachte Änderungen beim nächsten Update/Upgrade erneut ergänzt bzw. eingebaut werden müßten.

Interessant wäre trotzdem die Begründung einer Indexierung des BE-Titels für die Suche.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

qualtext
Beiträge: 17
Registriert: Di 19. Jun 2012, 10:04
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von qualtext » Di 10. Jul 2012, 19:17

Interessant wäre trotzdem die Begründung einer Indexierung des BE-Titels für die Suche.
Wenn man Artikel erstellt und dabei Namen vergeben muss, ist es viel einfacher, diesen Namen für die Headlines der Artikel zu nutzen. Der Kunde muss dann nicht die Titel doppelt eingeben (bspw. der Headline). Also erstelle ich die Headlines per

Code: Alles auswählen

$oArticle = new Article($idart, $client, $lang);
if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}
$tpl->reset();
$tpl->set('s', 'HEADLINE', $oArticle->get('title'));
$tpl->generate('templates/-auto-headline.html');
Doch nun tritt das Problem eben auf, dass diese Titel eben nicht mit der Standard-Suche durchsucht werden. Daher entsteht diese Problem.

Dennoch bleibt die Frage offen, wieso die CMS_HEADS, die ich nachträglich per PHP speichere, nicht in die Suche aufgenommen werden. Worauf greift denn die Suche zu? Erst nachdem ich den Artikel im Backend öffne, ein Element ändere und dann speichere, wird der Head in die Suche einbezogen, obwohl er vorher auch schon existierte.

Das finde ich verwirrend.

qualtext
Beiträge: 17
Registriert: Di 19. Jun 2012, 10:04
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von qualtext » Di 10. Jul 2012, 19:22

Ich habe gerade eine Tipp bekommen: conMakeArticleIndex($idartlang, $idart);
Dies werde ich ersteinmal hinzufügen und schauen, ob es danach endlich funktioniert.

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von Oldperl » Di 10. Jul 2012, 19:37

qualtext hat geschrieben:Ich habe gerade eine Tipp bekommen: conMakeArticleIndex($idartlang, $idart);
Da würde ich eher einen Blick auf die Funktion conSaveContentEntry werfen, damit kannst du deinen per Article-Klasse gewonnene Headline direkt auch als CMS_HEAD speichern, und nicht nur per Template-Klasse anzeigen.
qualtext hat geschrieben:Dennoch bleibt die Frage offen, wieso die CMS_HEADS, die ich nachträglich per PHP speichere, nicht in die Suche aufgenommen werden. Worauf greift denn die Suche zu? Erst nachdem ich den Artikel im Backend öffne, ein Element ändere und dann speichere, wird der Head in die Suche einbezogen, obwohl er vorher auch schon existierte.

Das finde ich verwirrend.
So wie du das löst ist das keines Falls verwirrend. Du speicherst in deiner Funktion den BE-Titel doch garnicht direkt als Content-Eintrag ab, woher soll daher Contenido wissen, das es diesen Eintrag gibt?
Benutze die von mir genannte Funktion und Contenido "kennt" die Headline beim Indexieren auch. Eine zusätzliche manuelle Indexierung per conMakeArticleIndex ist total unnötig und wird keine Änderung bringen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

qualtext
Beiträge: 17
Registriert: Di 19. Jun 2012, 10:04
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von qualtext » Mi 11. Jul 2012, 13:09

Wenn du in meine ersten Beiräge schaust siehst du, dass ich bereits 'conSaveContentEntry($idart, 'CMS_HEAD', $titleCMSid, $sBread);' benutzte, aber auch hier die Suche nicht auf die gespeicherten HEADS zugreift. Erst nach dem Neuöffnen und Überspeichern des Artikels im Backend greift die Suche auf den CMS_HEAD zu, der auch vorher schon da war.

Deshalb verwirrt mich das ja... Ich werde die Indexierung jetzt manuell durchführen und schauen ob es daran liegt.

Oldperl
Beiträge: 4255
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Standard Such-Modul - Artikeltitel auch durchsuchen

Beitrag von Oldperl » Mi 11. Jul 2012, 19:26

qualtext hat geschrieben:Deshalb verwirrt mich das ja... Ich werde die Indexierung jetzt manuell durchführen und schauen ob es daran liegt.
Ja sorry, übersehen durch das Scrolling des Codes. ABer ich denke die Indizierung wird auch bei Contenido beim BE-Edit durch das Reload des Artikels nach der CMS-Typ Eingabe erst gemacht, sogar beim Inline-Editing wird der Artikel ja beim Speichern erneut geladen. Kann sein das du eventuell nach einer manuellen Eintragung nur einfach den Artikel z.B. per header() einmal reloaden solltest. Hier könnte dann natürlich auch die besagte Index-Funktion zum Einsatz kommen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Gesperrt