Hallo.
Ich möchte gerne immer nur bestimmte Inhalte in der Listenansicht meiner Ext anzeigen lassen.
(Kenne mich mit php leider auch kaum aus)
Dazu habe ich folgendes gefunden:
function listView($content,$conf) {
....
....
if ($this->piVars['mode']=1){
// Get number of records:
$res = $this->pi_exec_query('tx_rfvereine_vereinsdaten',1,'AND
stadt_land LIKE "%Stadt%"','','','');
list($this->internal['res_count']) = $GLOBALS['TYPO3_DB']-
sql_fetch_row($res);
// Make listing query, pass query to SQL database:
// additional where clauses
$res = $this->pi_exec_query('tx_rfvereine_vereinsdaten',0,'AND
stadt_land LIKE "%Stadt%"','','','');
$this->internal['currentTable'] = 'tx_rfvereine_vereinsdaten';
}
if ($this->piVars['mode']=2){
..das ganze mit %Land%....
}
Bei mir sieht das ganze nun aber etwas anders aus, wie kann ich in meiner Konfiguration den Filter einbauen?
function listView($content,$conf) {
....
....
if (!isset($this->piVars['pointer'])) $this->piVars['pointer']=0;
if (!isset($this->piVars['mode'])) $this->piVars['mode']=1;
// Initializing the query parameters:
list($this->internal['orderBy'],$this->internal['descFlag']) = explode(':',$this->piVars['sort']);
$this->internal['results_at_a_time']=t3lib_div::intInRange($lConf['results_at_a_time'],0,1000,3);
// Number of results to show in a listing.
$this->internal['maxPages']=t3lib_div::intInRange($lConf['maxPages'],0,1000,2);;
// The maximum number of "pages" in the browse-box: "Page 1", "Page 2", etc.
$this->internal['searchFieldList']='name,vorname,zwischenname';
$this->internal['orderByList']='uid,name,vorname,zwischenname';
// Get number of records:
$res = $this->pi_exec_query('tx_tkmitarbeiter_personen',1);
list($this->internal['res_count']) = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
// Make listing query, pass query to SQL database:
$res = $this->pi_exec_query('tx_tkmitarbeiter_personen');
$this->internal['currentTable'] = 'tx_tkmitarbeiter_personen';
// Put the whole list together:
$fullTable=''; // Clear var;
# $fullTable.=t3lib_div::view_array($this->piVars);
Liebe grüße,
funker18
welche inhalte möchtest du denn anzeigen lassen? gib mal ein beispiel.
Ich möchte erreichen, dass zb. nach einem Klick auf "Mode 1" nur Datensätze angezeigt werden bei denen der Inhalt des Felds "name" gleich "Hans" ist.
So wie in dem Beispiel mit den Vereinsdaten, nur leider sieht mein Code anders aus und ich weiß nicht wie ich das einbauen soll.
möchtest du das ganze im adminberich definieren (dass nur daten mit "hans" im namen ausgegeben werden) oder über die webseite (z.b. dass "mode 1" genommen wird).
matin schrieb
möchtest du das ganze im adminberich definieren (dass nur daten mit "hans" im namen ausgegeben werden) oder über die webseite (z.b. dass "mode 1" genommen wird).
Ja genau, über die webseite, also Benutzer klickt auf mode 1 und erhält dann eine gefilterte Liste zur Ansicht 🙂
versuch mal:
function listView($content,$conf) {
....
....
if ($this->piVars['mode']=1){
$varAbfrage = "Stadt";
// Get number of records:
$res=$GLOBALS['TYPO3_DB']->exec_SELECTquery(
'*', #select
'tx_rfvereine_vereinsdaten', #from
"(
stadt_land = '$varAbfrage'
OR
stadt_land LIKE '$varAbfrage,%'
OR
stadt_land LIKE '%,$varAbfrage'
OR
stadt_land LIKE '%,$varAbfrage,%'
) AND deleted = 0 AND hidden = 0
", # where
'', # groupBy
'' # orderBy
#$limit=$this->piVars['pointer']*3 . ',3' #limit
);
}
if ($this->piVars['mode']=2){
..das ganze mit %Land%....
}
bei der abfrage hast du dann in der variable $res die ergebnisse aus der datenbank und kannst sie weiterverarbeiten.
ich glaub, da war ich beim denken gestern etwas zu schnll ... "Stadt" steht ja im feld "stadt_land". wie werden die daten gespeichert? steht nur "Stadt" drin, oder stehen in diesem feld mehrere werte mit beistrich getretten (Stadt, Land, Ort) oder steht vielleicht sogar nur eine id (also zahl) drin?
stadt_land = '$varAbfrage'
OR
stadt_land LIKE '$varAbfrage,%'
OR
stadt_land LIKE '%,$varAbfrage'
OR
stadt_land LIKE '%,$varAbfrage,%'
das stimmt nicht! Es lässt sich auch vereinfachen:
stadt_land LIKE '%$varAbfrage%'
matin schrieb
ich glaub, da war ich beim denken gestern etwas zu schnll ... "Stadt" steht ja im feld "stadt_land". wie werden die daten gespeichert? steht nur "Stadt" drin, oder stehen in diesem feld mehrere werte mit beistrich getretten (Stadt, Land, Ort) oder steht vielleicht sogar nur eine id (also zahl) drin?
Nein immer nur ein Wert, was wäre bei einer Zahl (zb. einer PLZ) denn anders?
@steffenk: Danke, das funktioniert auch 🙂
EDIT:
if ($this->piVars['mode']==1){
offenbar mit == weils sonst eine Zuweisung ist, aber jetzt funktionierts auch mit mehreren modi, vielen Dank!
Auch wenns nicht mehr ganz zum Thema passt: die einzelansicht zu stylen ist ja nicht so schwer, aber die listenansicht?