Zum Inhalt springen

mehrere Bilder mit IMAGE ausgeben

Erstellt am 11. Juni 2009 · 5 Antworten · letzte Antwort am 12. Juni 2009

Tags: Bilder, Frage

mibmib ·

Hallo allerseits,

ich stehe vor dem Problem mehrere Bilder mit IMAGE / IMG_SOURCE auszugeben. Ich habe ein cObject Typ CONTENT erstellt welches mit nach einer DB Abfrage mehrere Bilder zurückgibt (in einer Reihe durch Komma getrennt).

Ich möchte nun gern all diese Bilder ausgeben, weiss aber nicht wie. ich kann bisher nur ein Bild mit "listNum = arrayNR" ausgeben und das klappt auch. Nur eben nicht für alle. Kann mir jemand weiterhelfen?

....
20 = IMAGE
  20.file = GIFBUILDER
  20.file {
  XY = [10.w], [10.w]
  
  10 = IMAGE
  10 {
   file.import = uploads/pics/
   file.import.field = image 
   file.import.listNum = 0   
   file.maxW = 150  
     }
  } 
....

Das ganze soll auch dynmaisch sein. In den unterschieldlichen Datensätzen sind unterschiedlich viele Bilder hinterlegt. Also kann ich das nicht einfach durch n viele Image Objekte machen...

Es wäre sehr wichtig. Bitte schreibt mal was dazu....

mfg,

mibmib

mibmib ·

Ich habe das Problem mehr oder weniger damit lösen können. Erst die DB Abfrage und dann das rendern.

lib.bilderliste = CONTENT
lib.bilderliste {
  wrap = |
  table = tt_news_cat
  select.selectFields = tt_news.image
  select.join = tt_news_cat_mm ON ( tt_news_cat.uid = tt_news_cat_mm.uid_foreign ) INNER JOIN tt_news ON ( tt_news.uid = tt_news_cat_mm.uid_local )
  select.andWhere = tt_news_cat.uid = {GPvar:tx_ttnews|cat}  
  select.andWhere.insertData = 1

  select.pidInList = 23
  
  renderObj = COA
  renderObj {
  
  1 = IMAGE
  1.file = GIFBUILDER
  1.file {
  XY = [10.w], [10.h]  
  10 = IMAGE
  10 {
   file.import = uploads/pics/
   file.import.field = image
   file.import.listNum = 0
   file.maxW = 100    
     }  
   }
  2 = IMAGE
  2 < .1
  2.file.10.file.import.listNum = 1
    
  3 = IMAGE
  3 < .1
  3.file.10.file.import.listNum = 2
    
  4 = IMAGE
  4 < .1
  4.file.10.file.import.listNum = 3
    
  5 = IMAGE
  5 < .1
  5.file.10.file.import.listNum = 4
  
  6 = IMAGE
  6 < .1
  6.file.10.file.import.listNum = 5
    
  7 = IMAGE
  7 < .1
  7.file.10.file.import.listNum = 6
    
  8 = IMAGE
  8 < .1
  8.file.10.file.import.listNum = 7
    

  }
}

Die Frage ist nun ob das ohne Parameterübergaben geht, also ohne "10 <. 20" oder irgendwie auf nem anderen Weg??? Die Anzahl der Bilder soll Variabel sein....

mfg, mibmib

Unbekannter Benutzer ·

Ja, auch wenns auf den ersten Blick komisch scheint, aber es geht mit einem TEXT Objekt, in dem du das feld mit den Bildern ausliest und dann split benutzt mit Komma als token und dann kannst du für die einzelnen Teile des split (d.h. die einzelnen Bildnamen) ein IMAGE Objekt definieren, das für alle benutzt wird. Dann musst du vorher nicht die Anzahl festlegen.

mibmib ·

Hallo Kitsunet und vielen Dank für den Denkanstoss.Ich habs jetzt mit dem TEXT Objekt lösen können. Musses zwar noch etwas formatieren, aber das passt jetzt.

Hier nochmal mein Snippet.

9 = TEXT
  9.field = image 
  9.split.token = ,    
  9.split.cObjNum = 1
  9.split.1.current = 1
  9.split.1.dataWrap = <li><img width="120px" src="uploads/pics/{current:1}" alt="{current: 1}">|</img></li> 
  9.wrap = <ul id="pictureList">|</ul>

lg,

mibmib

Unbekannter Benutzer ·

Hallo...

Jo, gar nich so schlecht, wenns funktionieren würde. Irgendwie verstehe ich nich was du da angeblich ausliest. Also bei mir klappts nur mit dem media-Feld. (field=image???) und im Pfad muss es dann auch uploads/media heißen. Außerdem gibts sowas wie <img></img> wohl eher auch nicht. Oder übersehe ich da noch was?
Außerdem ist die maximale Anzahl für Bilder im media-Feld bei 5 auch schon wieder erschöpft (Ohne weitere Anpassungen)

mibmib ·

Naja also ich hatte das Problem einen Link auf eine Seite zu erstellen auf der alle Bilder aller Beiträge einer Kategorie aus tt_news ausgelesen werden. Die Bilder zu den Beiträgen sind in /uploads/pics gespeichert. Die Abfrage verknüpft die Tabellen und vergleicht die Kategorie ID mit der von dem Link übergebenen Kategorie ID und gibt die Bilder aus. Is alles noch ein wenig provisorisch aber es funktioniert. Hier mal alles zusammen als TS.

Das ist die Liste mit den Bildern.

lib.bilderliste = CONTENT
lib.bilderliste {
  wrap = |
  table = tt_news_cat
  select.selectFields = tt_news.image
  select.join = tt_news_cat_mm ON ( tt_news_cat.uid = tt_news_cat_mm.uid_foreign ) INNER JOIN tt_news ON ( tt_news.uid = tt_news_cat_mm.uid_local )
  select.andWhere = tt_news_cat.uid = {GPvar:tx_ttnews|cat}  
  select.andWhere.insertData = 1

  select.pidInList = 23
  
  renderObj = COA
  renderObj {
   
  10 = TEXT
  10.field = image  
  10.split.token = ,    
  10.split.cObjNum = 1
  10.split.1.current = 1
  10.split.1.dataWrap = <li><a href="uploads/pics/{current:1}"><img width="150px" src="uploads/pics/{current:1}" alt="{current: 1}"><p>|</p></img></a></li>  
  10.split.1.typolink.target = 27
  10.wrap = <ul id="pictureList">|</ul>    
   
  }
}

Hier ist die Tabelle auf einer anderen Seite, von wo aus man zu den Bildern verlinkt wird.

###############
### CATMENU ###

lib.catmenu = CONTENT
lib.catmenu {
        #5 = HTML
        #5.value =  <h1 class="csc-firstHeader">Presse</h1>
        table = tt_news_cat
        wrap = <table id="press_tbl"><tr class="press_tbl_head"><td><p>Firmenname</p></td><td><p>Kurzbeschreibung</p></td><td><p>Texte</p></td><td><p>Bilder</p></td><td><p>Kontakte</p></td></tr>|</table>
        select {
                selectFields = tt_news_cat.title, tt_news_cat.description, tt_news_cat.uid, tt_news_cat.parent_category
                #join =  tt_news_cat ON (tt_news_cat.uid = tt_news_cat_mm.uid_foreign) INNER JOIN tt_news ON (tt_news.uid = tt_news_cat_mm.uid_local)
                where = tt_news_cat.parent_category = 3
                pidInList = 23                
        }
        
        renderObj = COA
        renderObj {
                
        10 = TEXT        
        10.field = title        
        #10.typolink.parameter = 24
        #10.typolink.additionalParams = &tx_ttnews[cat]={field:uid}
        #10.typolink.additionalParams.insertData = 1
        #10.typolink.useCacheHash = 1          
        10.wrap = <tr class="press_tbl_rows"><td><p>|</p></td>       
          
        20 = TEXT    
        20.field = description       
        20.htmlSpecialChars = 1        
        20.wrap = <td><p>|</p></td>
          
        30 = IMAGE
        30.file = fileadmin/template/img/pfeil.gif
        30.htmlSpecialChars = 1          
        30.imageLinkWrap = 1
        30.imageLinkWrap {
        enable = 1
        typolink {
          parameter = 24
          additionalParams = &tx_ttnews[cat]={field:uid}
          additionalParams.insertData = 1
          useCacheHash = 1
          }
        }        
        30.wrap = <td>|</td>            
        
        #Link to single images
        40 = IMAGE
        40.file = fileadmin/template/img/pfeil.gif
        40.htmlSpecialChars = 1   
        40.imageLinkWrap = 1
        40.imageLinkWrap {
        enable = 1
        typolink {
        parameter = 27          
        additionalParams = &tx_ttnews[cat]={field:uid}
        additionalParams.insertData = 1
          useCacheHash = 1
          }
        }                    
        40.wrap = <td>|</td>
        #Link to contacts  
        50 = IMAGE
        50.file = fileadmin/template/img/pfeil.gif
        50.htmlSpecialChars = 1   
        50.imageLinkWrap = 1
        50.imageLinkWrap {
        enable = 1
        typolink {
        parameter = 30          
        additionalParams = &tx_ttnews[cat]={field:uid}
        additionalParams.insertData = 1
          useCacheHash = 1
          }
        }                    
        50.wrap = <td>|</td>
        }
}

plugin.tt_news >
plugin.tt_news < lib.catmenu

Kann sein dass das total umständlich is, aber es funktioniert und ich bin mir nach langem belesen keiner anderen lösung bewusst. Wenns eine gibt dann her damit 🙂. Man kann nur im Umgang mit Typoscript dazulernen (positiver Nebeneffekt 🙂) oder eine Extension dafür schreiben ^^.

mfg,

mibmib