Zum Inhalt springen

TMENU mit beforeImg aus tt_content

Erstellt am 4. Dezember 2008 · 11 Antworten · letzte Antwort am 22. Januar 2009

Tags: Frage

CyprienDB ·

Hallo zusammen,

ich versuche, ein TMENU zu bauen, in dem als beforeImg zu jeder Unterseite ein Bild gezeigt wird. Wenn ich das Bild aus den Seiteneigenschaften der Unterseite nehme, klappt es wie es soll:

temp.produktnavi = HMENU
temp.produktnavi {
  special = directory
  special.value.data = leveluid:1
  1 = TMENU
  1 {
    noBlur = 1
    wrap = <div class="produktlinknavi"> | <div style="clear:both;"></div></div>
    NO = 1
    NO.beforeWrap = <div class="produktlinkbox"> | <br />
    NO.ATagTitle.field = abstract // description // subtitle // title
    NO.beforeImgLink = 1
    NO.beforeImg = GIFBUILDER
    NO.beforeImg {
      XY = 80,60
      backColor = #ffffff
      format = jpg
      quality = 100
      20 = IMAGE
      20.file {
        import = uploads/media/
        import.field = media
        import.listNum = 0
        width = 80
        height = 60
        }
      }
    NO.after = </div>
    }
  }

Nun muss ich aber das Bild nicht aus den Seiteneigenschaften auslesen, sondern aus Spalte 4 des Inhaltes der seite - ergo irgendwie auf tt_content zugreifen - und da hakt es bei mir. In meinem naiven Ansatz wollte ich die Zeilen 19 - 26 durch dies hier ersetzen:

20 = IMAGE
20.file {
  import {
    table = tt_content
    select.where = colpos=4
    select.selectFields = image
    field = image
    listNum = 0
    wrap = uploads/pics/ |
    }
  width = 80
  height = 60
  }

aber offenbar stimmt der Kontext, die UID, die PID oder was immer nicht. Hat irgendjemand eine rettende Idee?

Vielen Dank für jeglichen Input im voraus und beste Grüße aus dem Ländle.

just2b ·

Hallo,

da brauchst du zuerst das cObj RECORDS um an die Elemente zu kommen und dann kannst du da dein IMAGE reinhängen

georg

CyprienDB ·

Hallo just2b, Hallo Liste,

vielen Dank für Deine Antwort. Ich habe versucht, Deinen Hinweis bezüglich der RECORDS einzubauen, aber es will mir nicht gelingen...

 20 = RECORDS
 20 {
   source.current = 1
   tables = tt_content
   select.orderBy = sorting
   select.where = colPos=4
   select.selectFields = image
   10 = IMAGE
   10.file {
     import = uploads/pics/
     import.field = image
     import.listNum = 0
     width = 80
     height = 60
     }
   }

Ich stehe offenbar immer noch total auf dem Schlauch. Normalerweise bevorzuge ich ja auch eher einen dezenten Tip für die Selbsterleuchtung (wirkt länger und ist befriedigender), aber ich würge jetzt an diesem Problem mit Unterbrechungen zwei Wochen rum - wenn Du mir etwas auf die Sprünge helfen könntest, wäre ich wirklich dankbar.

Vielen Dank im Voraus.
Michael

PS: Gibt es eigentlich eine Einführung in Datenbankzugriffe, die auch für Vollhorste wie mich nachvollziehbar ist? Ich habe so langsam jeden Google-Link mit "RECORDS" "select" und "tt_content" durch.

#angry#

CyprienDB ·

Hallo Liste,

es geht um ca. 10 Zeilen Code, 20, wenn's viel ist. Ich bin offensichtlich zu blöd, es zu kapieren, aber gibt es denn wirklich niemand, der mir ein bisserl auf den Weg helfen kann - wenn's zu viel verlangt ist, auch gegen Honorar.

Oder, falls jemand Georgs Hinweis kapiert, muss ich das RECORDS noch ausserhalb des GIFBUILDER-Objekts einflanschen?

Bitte, ich verzweifele an dem Ding. 😢

Gruß

just2b ·

Hallo,

ich habs bisschen anders gelöst,

lib.menu = HMENU
lib.menu {
	special = directory
	special.value = 8

	1 = TMENU
	1 {
		wrap = <div class="produktlinknavi"> | </div>
		
		NO {
			
			allWrap.stdWrap.cObject = COA
			allWrap.stdWrap.cObject {
				10 = TEXT
				10.value = <div class="foo" style="background:url(
				
				50 = CONTENT
				50 {
					table = tt_content
					select {
						pidInList.field = uid
						#where = colPos = 3
						max = 1
					}
					renderObj = IMG_RESOURCE
					renderObj {
						file {
							import=uploads/pics/
							import.listNum = 0
							import.field = image
							
							maxW = 20
						}
					}
				}
				
				
				99 = TEXT
				99.value = ) no-repeat">|</div>
			}
		}
	
	}

}

ich hoffe das sollte dir auch passen, funktionieren tuts

georg

CyprienDB ·

Hallo Georg,

grossartig, jetzt sehe ich schon mal die Bilder, vielen Dank. Jetzt muss ich nur noch herausfinden, wie ich das Bild mit in den Link bekomme. Die Bildchen eignen sich nicht als Hintergrund und müssen anklickbar sein.

Deshalb habe ich ja so mit dem beforeImg und dem GIFBUILDER rumgewürgt - das schien die einzige Möglichkeit zu sein, das Bild mit dem gleichen Link zu versehen - und ausserdem will der Kunde die skalierten Bildchen via ImageMagick noch nachgeschärft haben...

Nochmals vielen Dank.

Michael

just2b ·

Hallo,

tja nichts gewesen mit meinem schönen entwurf, aber das sollte es dann doch sein

lib.menu = HMENU
lib.menu {
	special = directory
	special.value = 8
	
	1 = TMENU
	1 {
		wrap = <div class="produktlinknavi"> | </div>
		
		NO {
			stdWrap.prepend= CONTENT
			stdWrap.prepend {
				table = tt_content
				select {
					pidInList.field = uid
					#	where = colPos = 3
					max = 1
				}
				renderObj = IMAGE
				renderObj {
					file.import=uploads/pics/
					file.import.listNum = 0
					file.import.field = image
				}
			}
		}
	}
}

von dem beforeimage kram halt ich nicht soviel, lieber gleich richtig mit stdwrap, weil man da einfach mehr machen kann

georg

CyprienDB ·

Hallo Georg, Hallo Liste,

perfekt, genial, superb. Ich bin entzückt, der Welt entrückt, total beglückt (und vermutlich leicht verrückt) 😃

Vielen Dank für die zweifache Rettung, es muss bald Weihnachten sein.

Beste Grüße aus dem Ländle

Michael

ursbraem ·

Vielen Dank! Das hat mir auch sehr geholfen.
Bzw hat mir geholfen, einen Anfängerfehler zu isolieren.
Ich hatte (beim Versuch, das "Teaser-Menu" aus dem T3-Kochbuch umzusetzen), gar keine Bilder im Page-Media-Feld, sondern alles in den Content-Elementen.
Erst durch eure Diskussion bin ich drauf gekommen.

Aber das hat in mir die Frage keimen lassen, wozu denn dieses Seiten-Media-Feld überhaupt gut sein soll (ausser als Grundlage für irgendwelche Layoutelemente). Wird das wirklich gemacht, dass man Bilder zu einem Artikel dort deponiert, nur um sie dann mit Verrenkungen und Fallbacks wieder mit den Inhalten zusammenzubringen?...

Eine Frage zu obigem Bsp. hab ich aber auch noch:
Und wenn ich gleich 2 Bilder aus dem Image-Feld holen möchte? Was mach ich?

Frohe Festtage
Urs

just2b ·

Hallo Urs,

nunja ein Headerbild (typischer Anwendungsfall) gehört zur Seite und nicht zum Content, also in die Seiteneigenschaften!

Wenn du 2 Bilder holen willst, schaut das dann ca so aus

renderObj = COA
renderObj {

10 = IMAGE
10 {
so wie vorher
listNum = 0
}
20 = IMAGE
20 {
so wie vorher
listNum = 1
}
}

lg georg

Typo-Kathrin ·

Hallo,

ich habe mein HMENU ein wenig mit Hilfe Deines Superbeispiels umgebaut. Eines klappt jedoch nicht.
Der Link wird immer nach dem eingefügten Bild und text angezeigt statt davor.

Die Zeile

ATagTitle.field = abstract // description // title

wird ganz ignoriert.

Leider bin ich wirklich nicht so gut in Typoscript und wäre dankbar für etwas Hilfe..,

Danke, Kathrin

#Newsmenue rechts

10.marks.NEWS_MENU  = COA
10.marks.NEWS_MENU   {

20 = HMENU 

20{

       special = directory
       special.value = 41
       entryLevel = 0
          1 = TMENU
          1 {
                 
                 
                noBlur = 1
                NO = 1
                NO {


                      
                                            
                       wrapItemAndSub = <li>|</li>
                       ATagTitle.field = abstract // description // title

                        stdWrap.prepend= CONTENT
                        stdWrap.prepend {
                                table = tt_content
                                select {
                                        pidInList.field = uid
                                        where = colPos = 2
                                        max = 4
                                        }
                                renderObj = COA
                                renderObj {
                                                1 = TEXT
                                                1.value = <div class="teaser">
                  
                  
                                                10 = TEXT
                                                10.field = header
                                                10.wrap = <strong>|</strong>
                                                10.required = 1
                  
                                                20 = TEXT   
                                                20 {
                                                field = bodytext
                                                crop = 350 | ... | 1
                                                wrap= |
                                                stripHtml = 1
                                            }


                  40 = IMAGE
                  40 {
                        required = 1
                        wrap=|
                        file.import=uploads/pics/
                        file.import.field=image
                        file.width = 160
                     }
                  99 = TEXT
                  99.value = </div>                 
                 }                        
               }
             }
           }
         }
       }