Zum Inhalt springen

Sind verschiedene Datensatzlayouts möglich?

Erstellt am 9. November 2010 · 17 Antworten · letzte Antwort am 16. November 2010

Tags: Frage

Kamasutra ·

Ist es möglich, dem Redakteur verschiedene Datensatzlayouts anzubieten?

Es geht darum, dass er unter dem Seitenmenü noch Text und/oder Bilder einfügen kann, was standardmäßig ohne Rahmen dargestellt wird, jedoch ggfs. einen Rahmen erhalten soll. Grundsätzlich wäre das ja via RTE regelbar, aber da kann ich ja nur je p einen Rahmen vergeben, nicht je div. Oder irre ich da?

Shark1982 ·

Je nachdem wie du deinen RTE konfiguriert hast kannst du einem P oder DIV im RTE doch klassen zuweisen über blockstil.
Hier gehen auch mehrere Klassen als Zuweisung

igorshmigor ·

Im Reiter Allgemein eines Content-Elements kannst du doch aus der Select-Box "Rahmen:" ein Layout aussuchen. Z.B. Linie davor, Linie danach oder aber halt Rahmen 1, Rahmen 2. Das CSS dazu musst du noch selbst erstellen, damit das dann auch wirklich aussieht wie gewünscht.

Kamasutra ·

Wenn ich euch richtig verstehe, dann geht beides in gleiche Richtung: classesParagraph für den blockstyle. Dabei dann entweder einen voreingestellten nutzen (csc-frame-frame1) und an die eigenen Wünsche anpassen oder halt ganz und gar eigene Klassen anlegen. Folge ich euch so weit richtig?

Dann habe ich aber grundlegend etwas nicht kapiert: Wie kann ich das einem div zuweisen? Als Redakteur kann ich das einzelnen Absätzen (also p) zuweisen, aber wie erhalte ich ein div? Spontan würde ich sagen: alle gewünschten Absätze markieren, aber dann kann ich nichts aus dem Klappmenü auswählen.

Wo ist mein Denkfehler?

igorshmigor ·

Wieso, csc-frame-frame1 ist doch schon ein div. Oder sollen es nur bestimmte divs innerhalb des Content-Elements sein? Ich dachte du wolltest das gesamte Ding umrahmen.

lisardo ·

Hallo,

Ihr redet aneinander vorbei. Man kann einen Rahmen wählen in der Karteikarte "Allgemein" - das ist eine Klasse, die auf ein div gelegt wird rund um das ganze Inhaltselement. Dazu gibt es noch die Möglichkeit, einem Absatz oder einer Headline im RTE einen Blockstil zuzuweisen, was ebenfalls eine Klasse ist (im Endeffekt kann es die gleiche sein), aber hier einem einzelnen p oder hx zugewiesen wird.

Was Kamasutra will, ist den Rahmen im RTE um mehrere Absätze zu legen, und das geht in der Grundkonfiguration nicht. Man muss dazu zuerst im RTE das div-Werkzeug freischalten. Das mache ich nicht, weil damit kein normaler Redakteur ohne HTML-Kenntnisse klarkommt. Aber prinzipiell gehts.

Ist etwas lang her, aber ich glaube man kann insertTag erlauben:

RTE.default {
	showButtons = inserttag, .... etc. + die anderen. 
}

Damit kann man dann einen Div-Tag einfügen. Schau dir diese JavaScript-Applikation mal an, da kann man alle Buttons des RTE auswählen und sich den passenden Code anzeigen lassen. Achtung: nicht drauf verlassen, nur als Anhaltspunkt verwenden.

In der Doku des RTE ist auch noch was anderes zu finden:

RTE.default {
	buttons.formatblock.removeItems = 
        #  p, h1, h2, h3, h4, h5, h6, pre, address, blockquote, div
}

In der Standard-Installation wird hier vermutlich im Dialog, mit dem die Headlines definiert werden, das div rausgenommen. Müsste also so ausgebessert werden (ungeprüft):

RTE.default {
	buttons.formatblock.removeItems >
}

Achtung: da steht eine Anmerkung, dass das ein Synonym ist für hidePStyleItems, also evtl. damit nochmals:
RTE.default {
hidePStyleItems >
}

Versuchs mal, ich bin ehrlich gesagt zu faul, es jetzt auszuprobieren. wie gesagt, meine Redakteure lasse ich da nicht ran, ich definiere einfach zusätzliche Rahmen für das Rahmenwerkzeug in der Karteikarte Allgemein.

Um diesem Div dann ein Blockformat zuzuweisen, muss man es auswählen. Das geht sicher nicht über eine Auswahl im Textfeld selbst, sondern wenn, dann geht es nur indem man in der Statuszeile auf das div klickt. Musst du selbst testen, ich weiss nicht, ob das klappt.

Gruß
Peter, TYPO3 @ lisardo (Augsburg)

igorshmigor ·

Ne, in der Standardkonfiguration gibt es bereits die Möglichkeit, Divs als Block-Format auszuwählen. Das findet man in der deutschen Übersetzung unter dem Titel "Behälter". Das erzeugt dir ein Div. Du kannst diesem div aber keine Klasse zuweisen, zumindest nicht so, wie du es machen kannst mit Paragraphen und Listen, denen du in deinem RTE-CSS Klassen zuweist, die du dann unter Blockstil oder Textstil auswählen kannst. Das ist sein Problem.

Aber die Frage ist ja, ob das überhaupt nötig ist. Die ursprüngliche Frage

Kamasutra schrieb

Es geht darum, dass er unter dem Seitenmenü noch Text und/oder Bilder einfügen kann, was standardmäßig ohne Rahmen dargestellt wird, jedoch ggfs. einen Rahmen erhalten soll.

klang doch ganz so, als ob der Rahmen um das gesamte Ding erscheinen soll. Und in dem Fall würde ich halt im CSS schreiben

div.csc-frame-frame1 {border:1px solid #666}

oder so ähnlich. Das ginge dann ja auch ohne RTE.

Kamasutra ·

Hey, vielen lieben Dank euch allen! Nach längerem Gegrübel und Ausprobieren bin schließlich genau zu diesem hier gekommen: "ich definiere einfach zusätzliche Rahmen für das Rahmenwerkzeug in der Karteikarte Allgemein." Das ist genau das, was ich suchte! Ich dachte nur die ganze Zeit, dieses Menü hätte eine andere Funktion. #paralyzed#

Für alle, die mal ähnlichen Grübeleien unterliegen sollten: hier ist eine schöne Erklärung/Anleitung für die Umsetzung -> http://maddesigns.de/rahmen-fuer-inhaltselemente-in-typo3-44-112.html

Danke noch mal!
(Konnte und sollte man hier nicht den Thread als gelöst markieren? Oder war das ein anderes Forum? Ich find' grad nix.)

lisardo ·

Hallo igorshmigor,

auch wenn das Problem gelöst ist, noch ein kleiner Nachtrag:
du hast Recht, man kann in der Standardinstallation divs einfügen. Aber du hast nicht Recht mit der Bemerkung, man könnte keine Klassen zuweisen. Es ist nur ein wenig tricky.

1. Etwas Text schreiben, cursor rein stellen
2. Blockformat Behälter zuweisen
3. Noch ein paar Absätze einfügen, nach Belieben auch Headlines.
4. in der Statuszeile des RTE mitlesen: da steht jetzt etwa so was: body > div > p oder ähnlich.
5. Auf das div klicken. Der gesamte container wird markiert.
6. Blockstil zuweisen
7. in der Statuszeile steht jetzt: body > div.irgendwas p
8. speichern
9. sollte auch nach dem Speichern noch vorhanden.
10. Natürlich muss das im CSS eine Entsprechung haben. Also nicht nur p.irgendwas {} sondern auch div.irgendwas () muss es geben.

Der RTE ist schon zickig, keine Frage. Aber er kann was ... Ich mag ihn 😃

Gruß
Peter, TYPO3 @ lisardo (Augsburg)

igorshmigor ·

Bist du sicher? Ich meine, hast du das getestet?
Ich habe es nämlich getestet und bei mir geht es nicht.

In meinem CSS:

ul.okay{}
ul.okay li {background:url(/fileadmin/img/okay.png) top left no-repeat; padding-left:23px;margin-bottom:0;padding-bottom:5px}
div.rahmen {border:1px solid #666}

In der Page TS-Config:

RTE {
    default {
    	contentCSS = fileadmin/css/rte.css
    	showTagFreeClasses = 1
    }
    classes {
       okay {
            name = Liste mit Haekchen
        }
        rahmen {
            name = Div mit Rahmen
        }
   }
}

Die Klasse "okay" für ul lässt sich auf Listen anwenden, die Klasse "rahmen" für divs lässt sich auf den div nicht anwenden, auch nicht wenn ich in der Statuszeile unter dem RTE auf "div" klicke.

Kamasutra ·

Da finde ich es aber einfacher, dem Redakteur das Klappmenü zu erklären, als das div. 😃

By the way, was ich gestern ganz vergaß: was ich da hinbekam funktioniert ja gar nicht wirklich 100%ig perfekt. In Anlehnung an die Lösung der bereits genannten Seite (http://maddesigns.de/rahmen-fuer-inhaltselemente-in-typo3-44-112.html) packte ich folgendes ins Root-Template

tt_content.stdWrap {
 innerWrap.cObject = CASE
 innerWrap.cObject {
  32 =< tt_content.stdWrap.innerWrap.cObject.default
  32.15.value = rahmen
  32.30.value = ><div class="mit">|</div></div>
 }
}

und dann dieses hier ins TSConfig:

TCEFORM.tt_content {
section_frame.removeItems = 1,5,6,10,11,12,20,21
section_frame.altLabels.0 = ohne Rahmen
section_frame.addItems.32 = mit Rahmen
}

Die Grundenstellung ("ohne Rahmen" ) liegt also zunächst einmal bei keinem Rahmen. Wenn ich jetzt zum Klappmenü gehe ist grundlegend alles paletti, die Einstellungen funktionieren auch, aber: da gibt es auch noch ein "No Frame" zur Auswahl, und bei dem habe ich keine Ahnung, wie ich das wegbekomme bzw. welche Bedeutung es hat oder wie ich ggfs. umbenennen kann. (Mit 2,3,4 rauslöschen hatte ich es schon mal versucht, aber das klappt nicht und ist ja nur blöder Versuch und Irrtum.)

Und wieso sind diese vorbelegten Rahmen nicht in Folge nummeriert, sondern in dieser seltsamen Reihenfolge? (1,5,6,10,11,12,20,21 plus 0 für die Voreinstellung) Ich würde irgendwie gerne den Hintergrund verstehen, auch, wenn es jetzt erst mal läuft. Vielleicht kann mir da ja noch jemand etwas zu erklären?

Kamasutra ·

😢 😢 😢

Jetzt funktioniert alles so schön, aber wo ich gar nicht auf die Idee kam, dass es Probleme geben könnte: Dem Redakteur wird gar nicht erst das Menü "Rahmen" angezeigt. Nur "Spalten" und "Index" (in dieser Zeile).

Habe ich da womöglich irgendwo zu viele Rechte eingeschränkt? Oder muss ich explizit etwas frei schalten? Aber wo?

Ich habe mal nach dem section_frame gewühlt, aber überall wird nur gesagt "Um es dem Readakteur einfacher zu machen"... Ist ja lieb und nett, und an sich funktioniert es ja auch - aber dazu muss er es doch auswählen können.

Kann jemand helfen?

lisardo ·

Hallo igorshmigor,

doch, ich habs getestet, sonst hätte ich nicht so selbstsicher geschrieben :-)
RTE-Tests

Ich habe allerdings eine ziemlich aufwändige RTE-Konfiguration. Nachfolgend mal ein kleienr Auszug:

RTE.classes {
  	 grossertext {
	   name = Textblock: große Schrift
	   value = 
	 } 
}

RTE.default {
    contentCSS=fileadmin/.../rte.css
    # Achtung: damit müssen alle Klassen für die passenden Tags def. werden. 
    showTagFreeClasses=0
    proc {
         allowedClasses (
             ..... grossertext, ....
         )
         entryHTMLparser_db {

             p {
                fixAttrib.class.list (
                    .....   grossertext, ....
                )
             }
             div <.p
             # das hier könnte es sein. Man muss es wohl eigens 
             # für die DIVs definieren. 
         }
    }
}

Und im CSS:

p.grossertext, div.grossertext {font-size:1.4em; line-height: 1.4em;}

Gruß
Peter, TYPO3 @ lisardo (Augsburg)

Kamasutra ·

"Oder du hast die Felder den Redakteuren nicht freigeschaltet."

=> Genau das meine ich. Ich finde kein passendes Stichwort und erst Recht keine Lösung. Alle Suchbegriffe bringen mich sonst wohin, nur nicht zu dem, was ich suche. Also konkret gefragt: WIE muss ich das freischalten?