Zum Inhalt springen

Bildumbenennung

Erstellt am 23. November 2004 · 17 Antworten · letzte Antwort am 24. November 2004

Tags: Frage

McGregor ·

Hi!

Ich versuche mehrere Bilder in einer Zeile anzuzeigen. Diese Bilder stehen in der Dateiliste einer erweiterten Seite.
Das klappt auch wunderbar, doch leider werden die Namen beim Einfügen geändert.

Aus dem ursprünglichen Bildnamen
Bild1.jpg
wird
Bild1_01.jpg

Wenn dann die Seite im Frontend angezeigt wird, dann fehlen diese Bilder, weil ich folgendermaßen drauf zugreife:

    10 = IMAGE
    10.file.import = fileadmin/images/
    10.file.import.data = levelmedia:2
    10.file.import.listNum = 0
    10.offset = 10,0
    20 < .10
    20.file.import.listNum = 1
    20.offset = [10.w]+20,0
    30 < .10
    30.file.import.listNum = 2

und so weiter...

Dadurch versucht T3 doch das File Bild1_01.jpg auf der Platte zu finden. Das gibt es natürlich nicht. Wie bekomme ich es hin, daß die Bilder wieder angezeigt werden.

Grüße
Jens

P.S. Wieso können nur 5 Bilder in eine erweiterte Seite eingebunden werden (ich bräuchte ca. 10)? Und kann man die Darstellung dieser 5 Bilder nicht dynamischer gestalten (also nicht für jedes Bild ein Objekt anlegen)?

Proximo ·

Soo viele Fragen 😉 na gut:

Typo beschriftet die Bilder gerne wenn er sie hochladet nach einem ganz einfachen Schema:

Bild1_01.jpg - Bild1_99.jpg

Sollte ein Bild mal nicht angezeit werden versuche das Bild in der Erweiterten Seite rauzulöschen und wieder einzufügen

Fall das nicht funktioniert oder du einfach den Filepfad für was anderes benötigst gibt es noch mehrere Alternativen:

# 1. Bannervariante mit Upload - jedoch muss man dann zu jeder Seite einen Upload machen !

temp.banner_1 = IMAGE
temp.banner_1 {
file.import.field = media
file.import = uploads/media/
file.import.listNum = 2
}

# 2. Bannervariante ohne Upload ueber UID der Seite

temp.banner_1 = TEXT
temp.banner_1 {
#data = field:uid
data = field:title
wrap = <img src="fileadmin/template/main/images/banner_|_small.jpg">
}

# 3. Bannervariante mit vererben von Level 1 abwaerts

temp.banner_1 = IMAGE
temp.banner_1 {
file.import.data = levelmedia: 1
file.import = uploads/media/
file.import.listNum = 0
}

Ok die 3. Variante hast du ja selber gemacht, aber zur Vollständigkeit halber sei sie mal Angeführt (dir macht es doch nichts aus wenn ich diesen Tread für "spätere Generationen" bewahre, ich bin es leid immer das selbe schreiben zu müssen 🙁)

Eine andere Möglichkeit wäre das Auslesen von Elemtenten aus den Content-Tabellen, so kommst du auch an die Bilder und den späteren Seitenadmins (oder auch Redakteuren) wird es leichter gemacht die Seite zu verwalten (wie gesagt unter manchen umständen)

# Auslesen einer ganzen Tabelle:
temp.banner_1 = CONTENT
temp.banner_1 {
table = tt_content
select {
pidInList = 155
orderBy = sorting
where = colPos=1

Oder auch sehr beliebt um einzelne Contentelemente statisch zu machen:

temp.banner_1 = RECORDS
temp.banner_1 {
tables = tt_content
source = 503
dontCheckPid = 1
}

Phuu *Schweiß von der Stirn wisch*

5 Bilder... hmm soviele hab ich zwar noch nie Gebraucht aber es wunter mich das es da eine Beschränkung gibt, vorallem so eine enge, falls die Beschränkung wirklich per Typo3 festgelegt wurde, kann man sie nur durch bearbeiten der PHP von Typo erweitern

Sag mir wenn die Probs weiter bestehen oder du bei etwas nicht weiterkommst

MFG Proximo

McGregor ·

Hi!

Danke für die ausführliche Antwort - und natürlich kannst du diesen Text für spätere Zwecke verwenden 😉

Ich habe noch keine Variante ausprobiert. Setze mich aber gleich dran. Vielleicht erklär ich, was ich erreichen will:

Ich möchte im oberen Bereich meiner Page einen Streifen (Zelle) mit Bildern füllen. Diese Bilder sind alle gleich groß und sollen über die ganze Breite des Bildschirms angezeigt werden. Die Bilder sind dabei (zum Beispiel) 50x60px groß. Wenn ich nun die ganze Breite des Fensters ausnutzen will (vorausgesetzt ich habe eine Auflösung von 1024x768px) dann brauche ich ca. 18 Bilder. Und schon bekomme ich Probleme.
Da ich Anfänger bin und mit dem dynamischen Anzeigen von Inhalten noch Probleme habe, habe ich das Beispiel aus dem T3-Buch verwendet (jenes, welches ich momentan benutze). Dafür brauche ich aber eine erweiterte Seite, sonst klappt das nicht.
Idealerweise hätte ich folgende Sache:
Meine Seitenstruktur sieht folgendermaßen aus:

root
-Menu
--Item1
---SubItem1-1
---SubItem1-2
---SubItem1-3
---SubItem1-4
--Item2
---SubItem2-1
---SubItem2-2
--Item3
---SubItem3-1
---SubItem3-2
---SubItem3-3
-SubMenu
--ItemA
--ItemB
--ItemC

root, Menu und SubMenu sind Shortcuts auf Item1

Nun möchte ich erreichen, daß beim Aufruf der Homepage in dem oberen Bereich (wie oben beschrieben) Bilder angezeigt werden.
Diese Bilder können irgendwo stehen (System, Datenbank - das ist mir völlig egal). Nur sollten die Bilder idealerweise irgendwo sein, wo der Frontend-User sie komfortabel wechseln kann.
Ändert sich die Seite auf z.B. Item2 so sollen andere Bilder angezeigt werden. Jedoch sollen die Bilder die selben bleiben, wenn man ein Subitem aufruft.

Bei dem Aufruf einer Seite aus dem SubMenu sollen die aktuellen Bilder bestehen bleiben. Falls dies zu kompliziert ist, dann können auch hier irgendwelche Standardbilder angezeigt werden.

Ich hoffe du kannst mir da einen guten Tipp geben

Grüße
McGregor

Proximo ·

Du willst du das in der jeweiligen Kategorie die gleichen Bilder angezeigt werden? (5 Bilder in Item 1 und dessen Unterseiten, 5 Bilder für Item 2 und dessen Unterseiten,...)

Einfachste Lösung für alle Parteien^^ Contentelemente

Wenn du zb den Contentbereich "Rand" nicht brauchst, verwende ihn um die Bilder zu... lagern...

temp.banner_1 = CONTENT
temp.banner_1 {
table = tt_content
select {
pidInList = 10
orderBy = sorting
# 3 ist is bei mir Rand
where = colPos= 3

Die reine Typolösung hat eigendlich nur einen echten Nachteil, du mußt die Übergeordnete Seite jeweils definieren, also nehmen wir an Item1 hat die ID 10 und Item 2 die ID 20 würde der Typoskript so aussehen:

[PIDinRootline =10]
temp.banner_1 = CONTENT
temp.banner_1 {
table = tt_content
select {
pidInList = 10
orderBy = sorting
where = colPos= 3
[GLOBAL]

[PIDinRootline =20]
temp.banner_1 = CONTENT
temp.banner_1 {
table = tt_content
select {
pidInList = 20
orderBy = sorting
where = colPos= 3
[GLOBAL]

Natürlich müßte man das auchnoch für Item3 machen (und jedes andere "Item" was sich je ergeben würde) aber der Vorteil wäre das es nachvollziehbar wäre wie das ganze funktioniert, ein weiterer Vorteil das man die Bilder auch dann einbinden kann wenn es stat 5 zb 3 kurze und 1 doppelt so lange wären.

Durch diesen Typoskript bekommen alle Unterseiten einer Kategorie die selben Bilder UND zwar einfach aus dem Content der in der Spalte "Rand" auf der Übergeordnetenseite mit der PID 10 oder PID 20 (und auch auf der Seite mit der PID 10 und 20 selbst)

Ach ja damit das ganze auch so funktioniert wie es da steht:

subparts.BANNER_1 < temp.banner_1

und im Html-Template (oder xHtml bzw xml......)

<!--- ###BANNER_1### --->BANNER_1<!--- ###BANNER_1### --->

Phuu... den Post bewahr ich mir echt auf 😉

MFG Proximo

mstuebner ·
McGregor schrieb

Aus dem ursprünglichen Bildnamen
Bild1.jpg
wird
Bild1_01.jpg

Deswegen kannst Du bei Verweisen auch angeben: Bild1*.jpg

Proximo ·

Jop tatsache, wenn du Bilderverweise verwendest solltest du das probieren... aber hab ich das nicht schon vorher irgendwo geschrieben?

Edit:

Typo beschriftet die Bilder gerne wenn er sie hochladet nach einem ganz einfachen Schema:

Bild1_01.jpg - Bild1_99.jpg

Sollte ein Bild mal nicht angezeit werden versuche das Bild in der Erweiterten Seite rauzulöschen und wieder einzufügen

Gut das war n bischen undeutlich aber die *Range* sollte ein Hinweiß drauf sein das man stat den Zahlen (und nicht zu vergessen dem _ wenn man keine * verwendet) Joker einsetzen kann

mstuebner ·
Proximo schrieb

Jop tatsache, wenn du Bilderverweise verwendest solltest du das probieren... aber hab ich das nicht schon vorher irgendwo geschrieben?

Nein, denn in dem Thread kommen drei * vor, von denen zwei mit Deinem Schweiss auf Deiner Stirn in Zusammenhang stehen. 😃

Proximo ·

^^ Das ändert aber an der Endlösung nix, also ist das SOO wichtig?^^ Die Joker reichen leider nicht wenn du genau mitgelesen hättest wüßtest du auch das er eine Contentlösung braucht und gleichzeitig das "Anzeigen für Unterseiten hat" und die Beschränkung von 5 nur eines einer langen Kette von Problemen ist (wobei jeder weiß welche Probs das ganze noch machen kann wenn man stat einer erweiterten Seite blöderweise ein Shortcut braucht)

MFG Proximo

McGregor ·
Proximo schrieb

Wenn du zb den Contentbereich "Rand" nicht brauchst, verwende ihn um die Bilder zu... lagern...

Geile Sache. Super. Danke.

temp.banner_1 = CONTENT 
temp.banner_1 { 
table = tt_content 
select { 
pidInList = [b]155 [/b]
orderBy = sorting
# 3 ist is bei mir Rand
where = colPos= 3

Das funktioniert aber nur für die PID 155. Ich habe natürlich eine andere PID. Aber wie erreiche ich die Dynamik für jede Seite? Ersetze ich die 155 durch this, dann werden immer die korrekten Bilder der Seiten angezeigt, doch leider nicht für die Unterseiten, was ja auch logisch ist, da diese eine andere PID haben. Gibt es eine andere Lösung als das StandardTemplate mit einem ext-template zu überschreiben und dort die PID zu überschreiben?

Die TYPO-Lösung möchte ich nicht benutzen, da ich nicht weiß, ob der Frontenduser vielleicht einen weiteren Menüpunkt hinzufügen will.

Aber das kann ich wohl eh vergessen, denn in obigen Fall (also mit den Contentelementen) müsste ich dann jeweils ein ext-Template vom Frontenduser anlegen und konfigurieren lassen...

Mal sehen, was ich mache...
Eine wichtige Frage habe ich aber noch auf dem Herzen. Sorry. Ich benutze nun als Seiteninhalt für den Rand den Typ Bild, damit ich meine Bilder einbinden kann. Leider benutzt der eine seltsame Formatierung, die ich gerne überschreiben würde. Doch leider komme ich nicht ganz dahinter wie.
Ein

tm.10 < temp.banner
tm.10.wrap = |

hat leider nicht funktioniert. Wie geht's?

Grüße
McGregor

P.S. Hoffentlich halten das deine Finger aus :o

Proximo ·

Ok nochmal langsam meine Idee durchdenken 😉

[PIDinRootline =10] = Wird nur angezeigt wenn die PID 10 in der Root zu finden ist, also muss die Seite auf der der Inhalt angezeigt wird die seite mit der PID 10 ODER EINE UNTERSEITE SEIN

temp.banner_1 = CONTENT
temp.banner_1 {
table = tt_content
select {
pidInList = 10
orderBy = sorting
where = colPos= 3
# ENDE des Bedingten Typoskripts

Die PID 10 ist die Seite von der die Bilder Stammen und zwar aus spalte 3

Alles zusammen:

Wenn man seite PID 10 oder EINER DER UNTERSEITEN aufruft dann werden die Bilder aus der 3. Spalte von PID 10 angezeigt

MFG Proximo

McGregor ·

Hi!

Ich nochmal. Danke für die letzte Aufklärung. Ich hab's verstanden. Genau das mache ich jetzt auch. Ist einfacher.
Doch leider passt die Formatierung nicht.
Ich hätte gerne lediglich die Bilder ohne eine Tabelle drumrum :-)
Wie stelle ich das an?

Grüße
McGregor

McGregor ·

OK.

Das Ergebnis auf Browserseite weist eine Tabelle auf.

folgendermaßen:

[...]
<table width="306" border="0" cellspacing="0" cellpadding="0"  class="imgtext-table">
<tr>
<td colspan="9"><img src="clear.gif" width="306" height="1" alt="" /></td>
</tr><tr>
<td valign="top"><img src="typo3temp/pics/2db4f4315c.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/878dae3d70.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/9872468ac8.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/c4894f5341.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/1c48c49a41.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/9c706db023.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/9cfdf21d5f.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/cb74cbb5eb.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
<td valign="top"><img src="typo3temp/pics/cabafacd70.jpg" width="34" height="27"  border="0" align="top" alt="" title="" />
<br />
</td>
</tr>
</table>
[...]

Diese Tabelle ist mittlerweile schon modifiziert worden (ich war nicht untätig). Ich habe folgende Änderungen vorgenommen:

tt_content.image.20.cols.field >
tt_content.image.20.cols = 100
tt_content.image.20.borderThick = 0
tt_content.image.20.colSpace = 0
tt_content.image.20.rowSpace = 0
tt_content.image.20.textMargin = 0

Dadurch habe ich alle Bilder nebeneinander stellen können (auch mehr als 8 Stück und ohne Abstand zueinander)

Jetzt bin ich noch auf der Suche, wie ich das

<br>

nach jedem Bild entfernen kann?

Zusätzlich ist noch folgendes Problem aufgetaucht.
Damit die Bilder einen festen Abstand vom linken Rand haben, habe ich ein CLEARGIF eingefügt. Dies habe ich folgendermaßen gelöst (ich verwende momentan eine CTABLE für das Layout):

   tm.5 = CLEARGIF
   tm.5.width = 100
# entferne das <br> nach dem CLEARGIF
   tm.5.wrap = |
# kopiere die Condition
   tm.10 < temp.banner
   tm.TDParams = bgcolor="{$layoutBGColor}" height="10px"

Ich setze erst ein CLEARGIF und dann kopiere ich die entsprechende Condition in das Objekt 10. Danach setze ich die TDParameter (aber ihr könnt ja alle lesen :-))
Das Ergebnis ist aber, daß T3 aus den beiden getrennten Objekten ein zusammenhängendes macht. Dies geschieht derart, daß das CLEARGIF über alle Spalten der Bildtabelle gezeigt wird (colspan = 9). Damit verfehle ich logischerweise mein Ziel. Soll ich vielleicht ein COA dafür benutzen? Oder wie bekomme ich dieses Problem in den Griff?

Danke nochmal
McGregor

Proximo ·

Deswegen waren ja die BR drin... hmm hast du schonmal versucht Bilder als contentobject zusammenzulassen? alle 8? und dann auf:

Spalten = 8 (oder mehr je nach dem)

Dann macht er erst nach 8 bildern einen Zeilensprung

McGregor ·
Proximo schrieb

Deswegen waren ja die BR drin...

weswegen???

Proximo schrieb

hmm hast du schonmal versucht Bilder als contentobject zusammenzulassen?

Wie - zusammenlassen? Ich gebe doch nur eine Tabelle an. T3 macht mir da eine Tabelle draus. Ich würde sie liebend gerne zusammenlassen, aber wie?

Proximo schrieb

alle 8? und dann auf:
Spalten = 8 (oder mehr je nach dem)

Wieso 8? Ich wollte alle nebeneinander haben, deswegen habe ich doch

tt_content.image.20.cols.field >
tt_content.image.20.cols = 100

gesetzt...

Proximo schrieb

Dann macht er erst nach 8 bildern einen Zeilensprung

Am liebsten wäre mir überhaupt kein Zeilensprung

Grüße
McGregor

Proximo ·

^^ Ich wurde noch nie so schlecht übersetzt^^ das soll keinesfalls eine Beleidigung sein 😉 es ist einfach tatsache 😃

Also nochmal:

BR verhindern im Quelltext das nebeneinanderstellen von Objecten (jaja ich weiß du willst die Bilder ja nebeneinander aber nicht nur die Bilder sind nebeneinander sondern es gibt auch so komische Effeckte wie du sie beschrieben hast...)

Was gibst du an? Eine Tabelle? Nein gibst du nicht an, du gibts eine Spalte, also eine Serie von Contentobjecten an.. außerdem kann ja der Abstand der Bilder trotz der Tabelle auf 0 gestellt werden...

8 Spalten damit jedes in einer eigenen ist, dann bleiben die auch nebeneinander...

Der Zeilensprung ist nur ein <br> und wird nix machen außer das danach die neuen elemente ohne abstand anschließen

MFG Proximo

McGregor ·
Proximo schrieb

^^ Ich wurde noch nie so schlecht übersetzt^^ das soll keinesfalls eine Beleidigung sein 😉 es ist einfach tatsache 😃

Sorry, aber da wußte ich nicht, was du meinst :o

Proximo schrieb

8 Spalten damit jedes in einer eigenen ist, dann bleiben die auch nebeneinander...

Ja genau das hatte ich ja durch das Überschreiben des tt_content erreicht. Ich brauche nämlich mehr als 8 Spalten

Proximo schrieb

Der Zeilensprung ist nur ein <br> und wird nix machen außer das danach die neuen elemente ohne abstand anschließen

Im Gegenteil. Da diese Bilder in einer Tabellenzeile angzeigt werden sollen (diese Tabelle wurde von mir persönlich erzeugt) wird durch das BR die Zeilenhöhe größer als gewollt. Dadurch verhaut es mir mein Layout.
Naja. Da muß ich wohl noch ein wenig suchen, damit ich das BR wegbekomme. Oder ich finde vielleicht einen anderen Weg

Ich danke dir. Auch wenn sich neue Fragen aufgetan haben, so bin ich doch ein großes Stück weitergekommen.

Grüße
McGregor

Proximo ·

BR... wenn du sie wegbekommen willst (ich warn dich davor) und die Typoabstände auch (dann hast die aber auch in Contentelementen wo es sinnvoll wäre nicht mehr):

tt_content.image.20.spaceBelowAbove = 0
# entfernt 1-pixel clear.gif über jedem Bild mit Text
tt_content.textpic.20.noStretchAndMarginCells = 1
# entfernt 1-pixel clear.gif über jedem Bild
tt_content.image.20.noStretchAndMarginCells = 1
tt_content.textpic.20.noStretchAndMarginCells = 1

tt_content {
# remove comment for content elements
stdWrap.prefixComment =
# remove comment for text elements
text.20.prefixComment =
# remove comment for bullet lists
bullets.20.stdWrap.prefixComment =
# remove comment for tables
table.20.stdWrap.prefixComment =
# remove comment for images
image.20.stdWrap.prefixComment =
# remove comment for headers
header.20.stdWrap.prefixComment =
}

tt_content.image.20.spaceBelowAbove = 0
tt_content.header.stdWrap.space = 0|0
tt_content.stdWrap.space = 0|0
tt_content.stdWrap.spaceBefore = 0
tt_content.stdWrap.spaceAfter = 0
lib.stdheader.stdWrap.space = 0|0

ne Typo generalreinigung... schreib dir raus was du brauchst

MFG Proximo