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:
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
in ihrer Wirkung nicht verstehe.
Viele Grüße
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;
}
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);
Viele Grüße
Kommentar