Zum Inhalt springen

paar grundlegende Fragen

Erstellt am 21. September 2010 · 5 Antworten · letzte Antwort am 24. September 2010

Tags: Bilder, Frage

xsonic ·

Hallo liebe Gemeinde,

Ich arbeite gerade an meiner ersten Extension. Nix großes, einfach ein neues Content Element, in dem Text und Bilder nachher zusammen mit etwas jQuery Schnickschnack ausgegeben werden.

Nun ein paar grundlegende Verständnisfragen:
In das DB-Feld schreibt der mir, wenn ich mehrere Bilder hochlade, die Dateinamen durch Komma getrennt.
Ich lese Sie wie folgt aus:

tt_content.jqbox_pi1.cObject.10.10.40 = TEXT
tt_content.jqbox_pi1.cObject.10.10.40.field = tx_jqbox_moreimg
tt_content.jqbox_pi1.cObject.10.10.40.data = levelmedia: -1, slide
tt_content.jqbox_pi1.cObject.10.10.40.listNum = 1
tt_content.jqbox_pi1.cObject.10.10.40.stdWrap.required = 1
tt_content.jqbox_pi1.cObject.10.10.40.stdWrap.wrap = <a href="fileadmin/portfolio/|" class="jqfancybox hidden">Gallerie</a>
tt_content.jqbox_pi1.cObject.10.10 {

		42 < .40 
		42.listNum = 2 
		
                ...
 
		48 < .40 
		48.listNum = 8
}

das funktioniert zwar, aber es muss doch auch eine andere Methode geben, die mir automatisch alle Einträge einzeln rendert, ohne dass ich alle aufzählen muss.

ok...
nun zum 2ten Problem:

oben die Bildausgabe läuft ja, nun soll aber jedes Bild ein title="" attribut bekommen. Die Titel sind ebenso kommagetrennt in einem Feld der DB, und ich lese Sie wie oben aus.
Aber nun fehlt mir die Grundlage, wie ich via TS beide ausgaben (img-src und title) in ein A-Tag rendern lassen kann.

Ich mein vom verständis her würd ich einfach sagen:
Hole Bild in Variable A,
Hole Titel in Variable B,
und dann mach: <a href="A" title="B"></a>

aber hab irgendwo mal gelesen dass es in TS keine wirklichen Variablen gibt. Deshalb steh ich ziemlich aufm Schlauch.

achja..und nochwas:
In der DB steht nur der Dateiname des Bildes, nicht der Pfad. Kann TypoScript checken, wo die betreffende Datei hochgeladen wurde?
Ich mein im BE weiß er ja auch wo die Bilder liegen, obwohl im DB-Feld nur der Dateiname steht.

Vielen Dank schonmal für alles was helfen könnte 8-)

Grüße,

Martin

SilentGhost ·

Hallo xsonic

Achtung, das ist ungetest und nur aus dem Kopf heruntergeschrieben. Ich hoffe es ist in Ordnung, wenn ich das Beispiel etwas abkürze 😉

In die localconf.php deiner Extension schreibst du:

$TYPO3_CONF_VARS['FE']['addRootLineFields'] .= ',tx_jqbox_moreimg,tx_jqbox_moretxt';
temp.image = TEXT
temp.image {
    data.import = levelfield: -1, tx_jqbox_moreimg, slide 
    split {
        cObjNum = 1
        1 {
            10 = IMAGE
            10 {
                current = 1
                altText.data =  levelfield: -1, tx_jqbox_moretxt, slide
                altText.listNum = register:SPLIT_COUNT
                imageLinkWrap = 1
                imageLinkWrap {
                    enable = 1
                    typolink.parameter = 
                    typolink.ATagParams = class="jqfancybox hidden"
                }
            }
        }
    }
}

Ich hoffe, dass das Beispiel nicht allzuweit daneben geht. Vielleicht habe ich später noch Zeit, um doch noch einen kurzen Test zu machen.

Gruss René

xsonic ·

Hi René,

erstmal vielen Dank für deine Antwort.

vorweg mal:

data.import = levelfield: -1, tx_jqbox_moreimg, slide

funktioniert irgendwie nicht.
Habe die Zeile in die ext_localconf.php meiner Extension eingebaut, aber er gibt mir auf diese Weise keine Daten aus.

Aber split war ein guter Ansatz.
Habs jetzt mal so:

    10 = TEXT {
        field = tx_jqbox_moreimg 
        split.token = ,    
        split.cObjNum = 1
        split.1.current = 1
        }

Was du weiter beschrieben hast, hat irgendwie nicht funktioniert.
Aber du hast mich glaub eh missverstanden.
Das würde mir ja ein Bild zurückliefern, ich will aber lediglich links aus den Bildpfaden rendern.

Hier mal zu Veranschaulichung ein Link:
http://www.form-fabrik.de/leistungen/textilien.html

Auf der Seite hab ich den Content per "Raw HTML" eingefügt, weil ich ja noch Anfänger in Sachen Typo3 bin.

Den HTML Code den ich rendern will sieht so aus:

<div class="boxgridwrap">
<div class="boxgrid">
    <img src="thumb.jpg" alt="" />
    <div class="boxcaption">
        <a href="bild_1.jpg" title="Titel 1" rel="1" class="jqfancybox">Arbeiten</a>
        <a href="bild_2.jpg" title="Titel 2" rel="1" class="jqfancybox hidden"></a>
        <a href="bild_3.jpg" title="Titel 3" rel="1" class="jqfancybox hidden"></a>
        <a href="bild_4.jpg" title="Titel 4" rel="1" class="jqfancybox hidden"></a>
        <h3>Headline</h3>
        <p>Fliesstext.</p>
    </div>        
</div>
</div>

Wie gesagt, ich hole mir die Bildlinks und die Titel aus der DB, und müßte die Links wie oben rendern. Das ganze drum herum hab ich mittels wraps gelöst, ging auch alles einwandfrei. Nur eben diese zwei Eigenschaften in ein A-Tag zu bekommen krieg ich nicht hin.

xsonic ·

ok...
inzwischen bin ich schon weitergekommen.
ich wrappe den Link jetzt wie folgt:

tt_content.jqbox_pi1.cObject.10.10 = TEXT
tt_content.jqbox_pi1.cObject.10.10 {
    field = tx_jqbox_moreimg
        split {
            token = ,
            cObjNum = 1
            1.current = 1
            1.filelink {
                titleText.field = tx_jqbox_imgtext
                titleText.split {
                    token = ,
                    returnKey.data = register:SPLIT_COUNT
                }
                path = fileadmin/portfolio/
                ATagParams = class="jqfancybox"
                labelStdWrap.cObject = TEXT
                labelStdWrap.cObject.value = Screenshot
            }
        }
}

Allerdings will er mir kein title reinmachen.
Selbst wenn ich statt der DB Abfrage "titleText = Blabla" reinsetzte, erscheint kein title Attribut.

Irgnedwelche Tipps?

xsonic ·

habs lösen können....
der Vollständigkeit halber:

temp.imagelink = TEXT
temp.imagelink {
	field = tx_jqbox_moreimg
	split {
		token = ,
		cObjNum = 1 || 2
		1.current = 1
		1 {
			typolink {
				title = Keine Beschreibung vorhanden
				title.override.field = tx_jqbox_imgtext
				title.override.split.token = ,
				title.override.split.returnKey.data = register:SPLIT_COUNT
				parameter.current = 1
				parameter.wrap = fileadmin/portfolio/|
				ATagParams = class="jqfancybox" rel="fancybox{field:uid}"
				ATagParams.insertData = 1
			}
			stdWrap.override = Screenshot
		}
		2.typolink < .1.typolink
		2.typolink {
			ATagParams = class="jqfancybox hidden" rel="fancybox{field:uid}"
			ATagParams.insertData = 1
		}
	}
}
tt_content.jqbox_pi1.cObject.10.10 < temp.imagelink

Nochmals Dank an René, du hast mir die richtigen Denkanstösse (google-Suchwörter ^^) gegeben.

Grüße,

Martin

SilentGhost ·

Entschudlige Martin, ich hatte dich tatsächlich falsch verstanden. Aber schön, dass du trotzdem eine Lösung gefunden hast.

Gruss René

P.S: das insertData = 1 müsstest du eigentlich weglassen können.