ProSearch Schnittstelle

ProSearch unterstützt alle Contao Core Module. Drittanbieter müssen eine Kleinigkeit erledigen bevor Ihre Module in die Suche aufgenommen werden.

Config.php erweitern

config.php erweitern

Wir wechseln in unser Modul Verzeichnis und öffnen unsere "config/config.php". Dort erstellen wir eine Globale Variable:

$GLOBALS['PS_SEARCHABLE_MODULES']

In diese Globale Variable übergeben wir unser Backend Modul als Array. Dieser Array benötigt folgende Informationen über das BE Modul.

  • icon (string): Hier wird Pfad zum Icon übergeben.
  • title (array): Hier werden alle Tabellen - Spalten eingetragen, welche als Titel fungieren können. Wenn er eine Spalte nicht findet, springt er zur nächsten.
  • searchIn (array): Wie bei Titel. Nur diese Spalten fungieren als Kriterium für die Suche.
  • tables (array): Hier werden Tabellen übergeben. Equivalent zu tables in BE_MOD. Die Tabelle tl_content muss nicht eingetragen werden!
  • shortcut (string): Hier kannst du ein Shortcut definieren.
<?php

	$GLOBALS['PS_SEARCHABLE_MODULES']['modulename'] = array(
	
		'icon' => 'path/to/icon.gif',
		'title' => array('title', 'headline', 'name'),
		'searchIn' => array('title','description', 'info'),
	    'tables' => array('tl_demo', 'tl_demo_data'),
	    'shortcut' => 'meinShortcut'
	    
	);

Fortgeschritten

Es gibt auch einige Methoden, welche uns erlauben für jede Tabelle oder gar für jeden Datensatz ein eigenses Shortcut oder Icon zu definieren.

  • setCustomIcon: Siehe im "setCustomIcon" Reiter.
  • setCustomShortcut: Siehe im "setCustomShortcut" Reiter.
<?php

	$GLOBALS['PS_SEARCHABLE_MODULES']['modulename'] = array(
	
		'setCustomIcon' => array( array('MeineKlasse', 'setCustomIcon') ),
		'title' => array('title', 'headline', 'name'),
		'searchIn' => array('title','description', 'info',),
	    'tables' => array('tl_demo', 'tl_demo_data'),
	    'setCustomShortcut' => array(array('MeineKlasse', 'setCustomShortcut')),
	    
	);
setCustomTitle

Die setCustomTitle Methode

Diese Methode erwartet ein String als Rückgabewert.

<?php

class meineKlasse
{
	public function setCustomTitle($table, $db, $titleFields, $doTable)
	{
		$title = '';
		
		if($table == 'tl_demo_user')
		{
			$title = $db['firstname'].' '.$db['lastname'];
		}
		
		return $title;
	}
}
setCustomIcon

Die setCustomIcon Methode

Diese Methode erwartet ein String als Rückgabewert.

<?php

class meineKlasse
{
	public function setCustomIcon($table, $db, $dataArr, $dca)
	{
		$iconName = '';
		
		if($table == 'tl_demo_data')
		{
			$iconName = 'path/to/new/icon.gif';
		}
		
		return $iconName;
	}
}
setCustomShortcut

Die setCustomShortcut Methode

Diese Methode erwartet ein String als Rückgabewert.

<?php

class meineKlasse
{
	public function setCustomShortcut($table, $db, $dataArr, $dca)
	{
		$shortcut = '';
		
		if($table == 'tl_demo_data')
		{
			$shortcut = 'demoData';
		}
		
		return $shortcut;
	}
}
Shortcut Titel

Shortcut Titel

Damit bei den Suchergebnissen auch eine Headline steht, sollten wir noch jeden Shortcut ein Label zuweisen. Dazu erzeugen wir im languages/en Verzeichnis eine neue Datei.

tl_prosearch_data.php

Dort tragen wir unser Label ein.

$GLOBALS['TL_LANG']['tl_prosearch_data']['shortcut']['meinShortcut'] = "Mein Modul Titel"

Einen Titel können wir für jede Sprache definieren.