Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 10. November 2019 21:19

parsec
kennt CMS/ms
Registriert: 04. Oktober 2012
Beiträge: 172

Template Spaltenwahl mit Listit2

Hallo Leute,

ich habe ein für PHP7 modifiziertes CMSMS1 frisch aufgesetzt. Ich benutze Listit2 mittlerweile für jeden Content. Da ich nun zum wiederholten Male vor der gleichen Problematik stehe, frage ich mich, ob es dafür eine elegantere Lösung gäbe.

Hier mal ein vorbereitetes Summary Template. 

[== Smarty ==]
{if $items|@count > 0}
	<div class="row gutters">
	{foreach from=$items item=item}
		
		//Zustand mit 3 Spalten
		
		<div class="col span_8">
			{if $item->fielddefs.content1!= ''}{$item->fielddefs.content1.value}{/if}
		</div>
		<div class="col span_8">
			{if $item->fielddefs.content2!= ''}{$item->fielddefs.content2.value}{/if}
		</div>
		<div class="col span_8">
			{if $item->fielddefs.content3!= ''}{$item->fielddefs.content3.value}{/if}
		</div>
		
		
		//Zustand mit 2 Spalten
		
		<div class="col span_12">
			{if $item->fielddefs.content1!= ''}{$item->fielddefs.content1.value}{/if}
		</div>
		<div class="col span_12">
			{if $item->fielddefs.content2!= ''}{$item->fielddefs.content2.value}{/if}
		</div>
		
		
		//Zustand mit 1 Spalte
		
		<div class="col span_24">
			{if $item->fielddefs.content1!= ''}{$item->fielddefs.content1.value}{/if}
		</div>
		
		
	{/foreach}
	</div>
{/if}

Wie man hier gut erkennen kann, habe ich hier 3 Zustände aufgezeigt. Eine Zeile mit 3 Boxen eine Zeile mit 2 Boxen und eine mit einer Box. Bei den drei Boxen sind die einzelnen Boxen ein drittel breit. Bei den zwei boxen jeweils die hälfte. Bei der einen volle Breite. Natürlich will ich aber bei jedem Eintrag immer nur einen der Zustände haben und eine "row".

Bisher hab ich nach "Holzhackermethode" gearbeitet. Mit 3 Boxen die immer im Backen vorhanden wären und dort jeder Boxe die ich benötige eine Breite gegeben und die die ich nicht brauche nicht ausgefüllt und somit ausgeblendet.

Nun zu meinem Anliegen, gibt es dafür eine elegantere Lösung? Zum Beispiel mit Dropdownauswahl, eine zwei oder drei Spalten wählen und anschließend nur die Felder anzeigen die zur Verfügung stehen.

Ich bin für jede Idee dankbar.

Beitrag geändert von parsec (10. November 2019 21:21)


"Es ist unmöglich, alles zu wissen" - Horaz

Offline

#2 11. November 2019 22:25

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.298

Re: Template Spaltenwahl mit Listit2

Fällt mir auf die Schnelle keine bessere Lösung ein.
Ich hätte es genauso gemacht.

So ähnlich habe ich z.B. auch immer bei AdvancedContent gearbeitet.
D.h. im Backend sind imer alle Inhalts-Möglichkeiten vorhanden.

Im Template habe ich dann geprüft, welche Blöcke Inhalt haben und dann entschieden, wieviel Spalten es werden bzw. in welche Spalte welcher Inhalt kommt - sofern vorhanden.

D.h. ich hatte z.B. einen normalen Inhaltsblock und dazu ein Inhaltsblock vom Typ Dropdown mit verschiedenen Bereichen des Templates (oben, mitte, links, rechts, footer). Dadurch konnte ich jeden Inhaltsblock einem bestimmten Bereich im Template zuordnen. Waren für diese Bereiche keine Inhalte vorhanden, konnte ich je nach Design im Template entscheiden, ob der Bereich einfach leer bleibt, oder ob er überhaupt ausgegeben wird und die anderen Bereiche dafür dann eben entsprechend "größer" werden sollten oder nicht.

Durch die Blocktabs/Blockgruppen konnte ich da auch etwas mehr Ordnung im Backend halten.

War aber immer ein sehr aufwendiges Template mit ziemlich vielen Blöcken und sehr viel Smarty und mir irgendwie zu starr.

Deshalb hatte ich damals mal die Idee, einen neuen Blocktypen vom Typ "content_area" einzuführen der selber nur ein Wrapper für andere Contentblöcke sein sollte. Diese Contentblöcke sollten aber nicht im Template vorgegeben sein, sondern dynamisch im Backend hinzugefügt werden können. D.h. pro Contentarea hat man im Backend einen Button "Block hinzufügen" und dann ist da plötzlich ein Textfeld das auch nur zu dieser Area gehört. (eine Art "Formbuilder" fürs Backend - im Prinzip so ähnlich wie bei Processwire)
Im Frontend soll dann für jede Contentarea geprüft werden, ob es Blöcke gibt und dann auch nur diese ausgegeben werden. Macht sowohl Backend als auch Template schlanker.

Technisch ist die Idee mit CMSms nicht sonderlich schwer umzusetzen.
Ich hatte bisher nur leider noch nie die Zeit dazu.

Offline

#3 14. November 2019 17:29

parsec
kennt CMS/ms
Registriert: 04. Oktober 2012
Beiträge: 172

Re: Template Spaltenwahl mit Listit2

Danke Nan,

zumindest weis ich jetzt, dass ich nicht wie so oft, auf dem Schlauch stand. Ich hab aber dazu trotzdem noch ne Frage. Gibt es ne Möglichkeit, die Extrafelder für bessere Übersichtlichkeit, ähnlich wie bei Templates mit Advanced Content zu Block-Groups im Backend zu gruppieren?

Gruß

Beitrag geändert von parsec (14. November 2019 17:32)


"Es ist unmöglich, alles zu wissen" - Horaz

Offline

#4 15. November 2019 22:02

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.298

Re: Template Spaltenwahl mit Listit2

Nicht dass ich wüsste.
Weil die Extra-Felder leider nicht via Smarty-Template ausgegeben werden.
Das ist noch Hardcoded im PHP-Code.
Da wird einfach nur pauschal pro Tab ein Array mit Inhalts-Eigenschaften abgearbeitet, ohne Rücksicht darauf, wie diese zusammengefasst werden könnten.
Bei AdvanedContent habe ich zumindest den Teil für die Inhaltsblöcke in Smarty-Templates auslagern können. Da kann man dann machen was will. Aber der Teil, der mit dem Inhalt vom Core her "fest verdrahtet" ist, lässt sich leider nicht so einfach verändern.

Offline