rtgx

Hook pre triedu localRecordList

Zadanie

V backende Typo3 v module Zoznam potrebujeme pre určenú tabuľku (tx_extensionname_cars) zobraziť len záznamy podľa určitých kritérií, v podstate treba upraviť SQL select pre výber záznamov z databázy.

Riešenie

ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list_extra.inc']['getTable'][] =
'EXT:extensionname/lib/class.tx_rtghooks_db_list_extra.php:&tx_rtghooks_db_list_extra';

Page TS config

Nastavuje číslo BE skupiny užívateľov, pre ktorú budú platiť definované výberové kritériá.

mod.web_txrtghooks.usergroup = 1

PHP trieda

Definovaná trieda musí implementovať t3lib_localRecordListGetTableHook.
Do premennej $additionalWhereClause pridáme vlastnú podmienku pre SQL WHERE.

require_once( PATH_t3lib.'interfaces/interface.t3lib_localrecordlistgettablehook.php' );

/**
* Hook handler for Typo3 class localRecordList
*
* @author Robert Gonda
*/
class tx_rtghooks_db_list_extra implements t3lib_localRecordListGetTableHook {

public function getDBlistQuery( $table, $pageId, &$additionalWhereClause, &$selectedFieldsList, &$parentObject ) {

$modtsconf = t3lib_BEfunc::getModTSconfig( $pageId, 'mod.web_txrtghooks' );
$usergroup = intval( $modtsconf['properties']['usergroup'] );
$usergroups = explode( ',', $GLOBALS['BE_USER']->user['usergroup'] );
if( $table == 'tx_extensionname_cars' && in_array( $usergroup, $usergroups ) ) {
$additionalWhereClause .= ' AND '.$table.'.uid_dealer = '.intval( $GLOBALS['BE_USER']->user['uid'] ).' ';
}
}
}

if (defined('TYPO3_MODE') && $GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/extensionname/lib/class.tx_rtghooks_db_list_extra.php']) {
include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/extensionname/lib/class.tx_rtghooks_db_list_extra.php']);
}
 
 
Žiadne dokumenty ani odkazy k tejto stránke.

Generátor typoscriptu

Vytvára typoscript pre bežné použitie. Generátor je jednoduchý na obsluhu, stačí vyplniť zopár položiek formulára.

Odkazy