Hallo Experten,
ich habe folgendes Problem:
In einer geschriebenen Extension werden Datensätze in einem Systemordner abgelegt und auf einer Seite inm Seitenbaum per Front-End-Plugin ausgegeben. Die Eingabe der Datensätze ist an Workspaces angeschlossen und funktioniert wunderbar im Backend.
Leider bekomme ich es nicht hin, dass Datensätze, die noch nicht veröffentlicht sind, für den Redakteur im Frontend Preview sichtbar sind.
Wie muss die Abfrage im FE-Plugin aussehen, damit die Vorschau klappt?
Gruß
Roland
Hallo Roland,
nutzt du enableFields?
z.B.:
$where_clause = 'pid = 1'.$this->cObj->enableFields('yourTable'),
Grüße, Alex
Ich glaube die sache ist etwas komplizierter. in der tt_news extension habe ich folgendes entdeckt:
// filter Workspaces preview.
/ Since "enablefields" is ignored in workspace previews it's required to filter out news manually which are not visible in the live version AND the selected workspace.
if ($GLOBALS['TSFE']->sys_page->versioningPreview) {
// execute the complete query
$wsSelectconf = $selectConf;
$wsSelectconf['selectFields'] = 'uid,pid,tstamp,crdate,deleted,hidden,fe_group,sys_language_uid,l18n_parent,l18n_diffsource,t3ver_oid,t3ver_id,t3ver_label,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_count,t3ver_tstamp,t3_origuid';
$wsRes = $this->exec_getQuery('tt_news', $wsSelectconf);
$removeUids = array();
while ($wsRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($wsRes)) {
$orgUid = $wsRow['uid'];
$GLOBALS['TSFE']->sys_page->versionOL('tt_news',$wsRow);
if (!$wsRow['uid']) { // if versionOL returns nothing the record is not visible in the selected Workspace
$removeUids[] = $orgUid;
}
}
$removeUidList = implode(',',array_unique($removeUids));
// add list of not visible uids to the whereclause
if ($removeUidList) {
$selectConf['where'] .= ' AND tt_news.uid NOT IN ('.$removeUidList.')';
}
}
Das scheint die STelle zu sein, die ich brauche.