TYPO3 Reea Blog

This will be shown to users with no Flash or Javascript.

Filtrare în sysfoldere

Uneori ai nevoie să afișezi elementele dintr-un sysfolder pe backendul de typo3 filtrate după anumite criterii. Pentru aceasta trebuie făcut un hook la clasa din core-ul de typo3, typo3/class.db_list.inc, funcția makeQueryArray, și modificat parametrul $addWhere.

Exemplu:

- adaugi hook-ul în ext_localconf.php din extensia în care extinzi clasa class.db_list:

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/class.db_list.inc']['makeQueryArray'][] ='typo3conf/ext/pt_list/res/class.user_ptlist_filter.php:user_ptlist_filter';

- în clasa user_ptlist_filter extinzi funcția makeQueryArray_post după cum ai nevoie. În exemplul de mai jos trebuie afișate numai elementele mai noi de o lună din tabela tx_ptlist_search_queries:

class user_ptlist_filterNewslistSearchQueries
{
    function makeQueryArray_post(&$queryParts, $db_list_obj, $table, $id, $addWhere, $fieldList, $_params)
    {
        if($table == 'tx_ptlist_search_queries')
        {
            $addWhere = " AND crdate>".(time() - 30*24*3600);
            
            global $TCA;
    
                // Set ORDER BY:
            $orderBy = ($TCA[$table]['ctrl']['sortby']) ? 'ORDER BY '.$TCA[$table]['ctrl']['sortby'] : $TCA[$table]['ctrl']['default_sortby'];
            if ($db_list_obj->sortField)    {
                if (in_array($db_list_obj->sortField,$db_list_obj->makeFieldList($table,1)))    {
                    $orderBy = 'ORDER BY '.$db_list_obj->sortField;
                    if ($db_list_obj->sortRev)    $orderBy.=' DESC';
                }
            }
    
                // Set LIMIT:
            $limit = $db_list_obj->iLimit ? ($db_list_obj->firstElementNumber ? $db_list_obj->firstElementNumber.',' : '').($db_list_obj->iLimit+1) : '';
    
                // Filtering on displayable pages (permissions):
            $pC = ($table=='pages' && $db_list_obj->perms_clause)?' AND '.$db_list_obj->perms_clause:'';
    
                // Adding search constraints:
            $search = $db_list_obj->makeSearchString($table);
    
                // Compiling query array:
            $queryParts = array(
                'SELECT' => $fieldList,
                'FROM' => $table,
                'WHERE' => $db_list_obj->pidSelect.
                            ' '.$pC.
                            t3lib_BEfunc::deleteClause($table).
                            t3lib_BEfunc::versioningPlaceholderClause($table).
                            ' '.$addWhere.
                            ' '.$search,
                'GROUPBY' => '',
                'ORDERBY' => $GLOBALS['TYPO3_DB']->stripOrderBy($orderBy),
                'LIMIT' => $limit
            );
        }
    }
}

blog comments powered by Disqus

In aceasta sectiune

La sectiunea Extensii TYPO3 vom incerca sa punem exemple de extensii folosite de noi, unele exemple the extensii, si chiar extensii dezvoltate de Reea.

Premium Sponsor

TYPO3camp Mallorca 14/09/12-16/09/12