Zum Inhalt springen

zweispaltiges Layout

Erstellt am 8. Oktober 2012 · 7 Antworten · letzte Antwort am 10. Januar 2013

Tags: Frage

marsu_2 ·

Hallo,
ich benutze das Government Package in der aktuellen Version.

Ich würde das Design nun gerne so anpassen das ich nur noch ein zweispaltiges Layout habe. Sprich der "content-right" soll weg und der main content soll die komplette breite einnehmen.

für das Frontend kann ich die Werte in der default/templates/css/style.css ändern.

Nur habe ich ja auch im Backend die Möglichkeit Inhalte in die mittlere oder rechte spalte zu stellen. Da weiß ich nicht wirklich wie ich das ändern kann?

neodot ·

Um im Gp nur die mittlere und rechte Spalte zu haben, musst du ein neues Backend-Layout anlegen.
Das machst du im SysOrdner Backend Layouts, den du im General Storage Folder findest. Dort gibt es zwei Layouts, 2 Columns und 3 Columns. Das bestehende 2 Columns lässt jedoch die linke Spalte und nicht die rechte wegfallen, weswegen es hier nicht hilft.
Lege also ein Drittes wie folgt an (Benenne es, wie du magst):

backend_layout {
	colCount = 2
	rowCount = 2
	rows {
		1 {
			columns {
				1 {
					name = Header
					colspan = 2
					colPos = 3
				}
			}
		}
		2 {
			columns {
				1 {
					name = Left Content
					colPos = 2
				}
				2 {
					name = Content
					colPos = 0
				}
			}
		}
	}
}

Dann schmeisst du als dem html-Template (fileadmin/default/templates/index.html) die rechte Spalte raus und passt den Stylesheet an.

Zum Schluss weise der Rootpage in den Seiteneigenschaften unter Erscheinungsbild das neue Backend-Layout zu. Ggf. musst du auf Unterseiten gesetzte Zuweisungen dieser Art entfernen.
Das TypoScript-Template im Ordner page_blocks_configuration lib.contentright kannst Du dann auch entsorgen.

marsu_2 ·

noch eine kleine Frage bleibt, wenn ich einen neuen Artikel erstelle kann ich noch den "right-content" als Position auswählen. Wie kann ich das ändern?

right_content.jpg

neodot ·

Hmm, also ich bekomme das nur noch auf Seiten angeboten, die auch auf ein Backend-Layout mit rechter Spalte eingestellt sind.
Ich habe das beschriebene Layout zusätzlich eingebaut und verwende alle drei, d.h. es kann nicht daran liegen, dass die entsprechenden Templates nicht deaktiviert wurden.
Ist die Konfiguration wie in meinem Beispiel, vor allem die colPos-Angaben?
Werden dir alle vier Spalten (Header,Content Left, Content und Content Right) angeboten oder ist dafür die falsche verschwunden?

Siehst Du denn im BE noch drei Spalten auf der betreffenden Seite oder ist die rechte jetzt weg?
Du solltest im Backend natürlich nur noch Header, Left Content und Content sehen, ansonsten steckt vielleicht doch noch irgendwo eine Zuweisung für das falsche BE Layout, z.B. als Zuweisung für die Unterseiten auf der Rootpage.

Im Template page unter page_configuration steckt noch ein
content-right < lib.contentright
aber das dürfte nicht stören, da es bei mir trotzdem funzt.
Das kannst Du aber auch entfernen, da Du es nicht mehr brauchst.
Blende doch mal die überflüssigen BE-Layouts aus, sofern noch vorhanden.
Ansonsten trübe ich jetzt auch etwas im Fischen.o.O

marsu_2 ·

Ich hatte das Layout nur für die Unterseiten gesetzt und nicht für die Hauptseite. Mein Fehler!

Wie benutzt du denn beide Layouts parallel?

Kann man das stylesheet und die index.html auch entsprechenden Seitenbäumen zuordnen?

neodot ·

Na, das GP stellt doch von Haus aus schon zwei Layouts zur Verfügung (2 Columns, 3 Columns), warum also nicht auch drei?
Natürlich kann ich jedem Ast des Seitenbaums ein Layout zuweisen, indem ich auf seiner oberen Ebene in den Seiteneigenschaften das entsprechende Layout zuweise, sonst wären die Layouts ja sinnlos.
Je nach Layout werden dann unterschiedliche IDs in den Body-Tag geschrieben, wodurch ich die Spaltenbreite des Content entsprechend im Stylesheet anpassen kann.
Also z.B.

/* wenn alle drei Spalten */
#three-columns #content-column {
    width: 20em;
}
/* wenn rechte Spalte und Content */
#two-columns #content-column {
    width: 40em;
}
/* wenn linke Spalte und Content */
#no-marginal #content-column {
    width: 40em;
}

Im Template page (unter page_configuration) findest Du folgenden Abschnitt, der festlegt, welche IDs dem Body gegeben werden:

bodyTagCObject = CASE
  bodyTagCObject {
    key.field = backend_layout
    key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
    
    # Define the default value
    default = TEXT
    default.value = <body>
    
    # Copy the default value to 0
    0 < .default
    
    # Add different values for cases 1, 2 and 3
    1 = TEXT
    1.wrap = <body id="|">
    1.value = three-columns
    
    2 < .1
    2.value = two-columns
    
    3 < .1
    3.value = no-marginal
    
  }

Die ID no-marginal habe ich für das neue Layout ohne rechte Spalte hinzugefügt.

OK, ich erhalte in der Ausgabe auch dann den Container für die rechte Spalte, wenn ich sie nicht brauche, da ich die rechte Spalte nicht aus dem Template entfernt habe, weil ich sie ja an anderer Stelle durchaus haben will, ich blende sie hier aber per css aus.
Wenn du die rechte Spalte nirgends nutzt und aus dem html-Template entfernt hast, erübrigt sich das.

Ho_Design ·

Moin,

auf der Suche nach einer Lösung für mein Problem bin ich sofort auf diesen Eintrag hier gekommen und habe auch ein 3. Layout (1 Column) erstellt.
Dabei bin ich nach dem letzten Eintrag hier vorgeganen und habe der Seite entsprechend das neue Layout zugewiesen.
Jetzt habe ich nur noch das Problem, das trotzdem die rechte Spalte angezeigt wird, dabei schwebt mir im Kopf, das es doch der Eintrag ist, welcher eingefügt wird, wenn kein anderer Eintrag erstellt wurde. Sozusagen von oben vererbt.

Könnt Ihr mir evtl. mitteilen, wie ich auf dieser einzigen Seite den rechten Content wegbekomme, so dass ich bis zum rechten Rand Platz für meinen Inhalt habe.

Gruß aus dem hohen Norden
Sven

Edit: Wer lesen kann ist klar im Vorteil. Im Letzten Satz wurde es ja bereits schon angedeutet..
Einfach per CSS den Container ausblenden.. und schon passt das auch wieder:

#one-column #content-right {
    display:none;
}