Hook processFieldSQL und seine Funktion
Hallo,
ich habe den Catalog mal nach Hooks durchforstet und in Zeile 2032 den processFieldSQL Hook gefunden. Laut Kommentar können mit seiner Hilfe die SQl-Daten beeinflusst werden. Leider werde ich nicht so wirklich schlau aus dem Code:
PHP-Code:
protected function processFieldSQL($arrVisible)
{
$arrConverted = array();
// iterate all catalog fields
$objFields = $this->Database->prepare("SELECT * FROM tl_catalog_fields f WHERE f.pid=(SELECT c.id FROM tl_catalog_types c WHERE c.tableName=?)")
->execute($this->strTable);
$arrFields = array();
if ($objFields->numRows)
{
while ($objFields->next())
{
$row = $objFields->row();
$arrFields[$row['colName']] = $row;
}
foreach ($arrVisible as $id=>$field)
{
if (array_key_exists($field, $arrFields))
{
switch ($arrFields[$field]['type'])
{
case 'calc':
// set query value to forumla
$value = '('.$arrFields[$field]['calcValue'].') AS '.$field; //.'_calc';
$arrConverted[$id] = $value;
break;
default:
$arrConverted[$id] = $field;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// HOOK: allow third party extension developers to prepare the SQL data
if(is_array($GLOBALS['TL_HOOKS']['processFieldSQL']) && count($GLOBALS['TL_HOOKS']['processFieldSQL']))
{
foreach($GLOBALS['TL_HOOKS']['processFieldSQL'] as $callback)
{
$this->import($callback[0]);
$this->$callback[0]->$callback[1]($this->catalog, $id, $field, $arrFields, $arrConverted, $this->strTable);
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
}
return $arrConverted;
}
Kann ich mit Hilfe des Hooks die SQL-Query beeinflussen und wenn ja, wie? Ich würde gerne eine individuelle Sortierreihenfolge integrieren. Ist das möglich?
Wäre super wenn mir jemande helfen kann, da ich bereits die Zeile
PHP-Code:
$this->$callback[0]->$callback[1]($this->catalog, $id, $field, $arrFields, $arrConverted, $this->strTable);
in ihrer Wirkung nicht verstehe.
Viele Grüße