PHP code example of pixelpoems / silverstripe-search
1. Go to this page and download the library: Download pixelpoems/silverstripe-search library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pixelpoems / silverstripe-search example snippets
public function updateSearchIndexData(array &$data)
{
$data['content'] = $this->owner->Content;
}
public function getList()
{
return DataObject::get();
}
public function addSearchData($data)
{
$tags[] = $this->getList()->map()->values();
// Make sure other tags do not get overwritten by this function
if($data['tags']) $data['tags'] = array_merge($data['tags'], $tags);
else $data['tags'] = $tags;
return $data;
}
public function addSearchData($data)
{
$tags = [];
// Add Name of an HasOne relation
if($this->HasOneID) {
$tags[] = $this->HasOne()->Name;
}
// Add Names of an HasMany relations
if($this->HasMany()->exists()) {
foreach ($this->HasMany() as $item) {
$tags[] = $item->Name;
}
}
// Make sure other tags do not get overwritten by this function
if($data['tags']) $data['tags'] = array_merge($data['tags'], $tags);
else $data['tags'] = $tags;
return $data;
}
public function populateAdditionalData($pageIndexFileName, $locale, &$additionalData)
{
$dataObjects = ClassInfo::subclassesFor(DataObject::class);
foreach ($dataObjects as $dataObject) {
$additionalData = $this->owner->getData($dataObject, $locale);
$this->owner->log('Data Entities (DataObject / '. $dataObject . '): ' . count($additionalData));
// Add your additional data to the given array to return this data!
$additionalData = array_merge($additionalData, $additionalData);
}
$this->owner->log($pageIndexFileName . "\n");
}
public function populateAdditionalData($pageIndexFileName, $locale, &$additionalData)
{
$additionalData[] = [
'title' => 'Title',
'id' => 123456789, # Make sure to add an identifier here
'content' => 'Content',
'link' => '/link-to-your-site',
];
$this->owner->log($pageIndexFileName . "\n");
}
public function updateAjaxTemplateData(&$data)
{
$additionalList = ArrayList::create();
$data['AdditionalBool'] = true;
$data['AdditionalList'] = $additionalList
}
public function addSearchData($data)
{
$data = [];
foreach (DataObject::get() as $dataObject) {
$data[] = $dataObject->Title . ' '. $dataObject->Content;
}
$data['dataObjects'] = implode(' ', $data);
return $data;
}
public function updateSearchResultBeforeLimit(&$list): void
{
$currentSiteID = Multisites::inst()->getCurrentSiteId();
$list = $list->filter(['SiteID' => $currentSiteID]);
}
public function updateSearchResultAfterLimit(&$list): void
{
// Do some extra filter or attachment here
}
public function updateSearchResult(&$list): void
{
// Do some extra filter or attachment here
}