Array in CMS_VAR speichern

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Array in CMS_VAR speichern

Beitrag von matt.loker »

Hallo liebe Community,
ich arbeite gerade an einer Art "PageBuilder" - einem Modul bei dem man sich das Layout mit Layoutblöcken zusammenstellen kann. Ich greife dabei teilweise auf Code-Schnippsel bestehender Module zurück. Da meine PHP und Contenido Kenntnisse nicht Bombe sind, wird das Ganze erstmal über die Kategorie- oder Artikelkonfiguration konfigurierbar sein. Ich hätte es am liebsten direkt in der Artikelansicht gelöst, aber dazu fehlen mit einfach die Contenido-Kenntnisse. Ich hab vor das Modul, wenn es mal läuft, hier zu veröffentlichen damit man es vielleicht gemeinsam weiterentwickeln kann.

Momentan stehe ich aber vor einem großen Problem. Ich würde gern alle Konfigurationen des Modul in einem Array legen und das in einem z.B. CMS_VAR[10] speichern. Aktuell ist es so dass bei jedem Durchlauf (1 Durchlauf ist ein Layoutblock der eingefügt wird) um 25 erhöht wird. Zum besseren Verständnis poste ich das einen Teil des Codes

Code: Alles auswählen

/ Variable für Anzahl der angezeigten Layout-Blöcke
$fValue="CMS_VALUE[10]";  // Kann in der Artikelkonfig über ein Input-Feld konfiguriert werde

// Unterstützte Content Typen
$cTypes = array('CMS_HTMLHEAD','CMS_HTML','CMS_TEXT','CMS_IMG','CMS_LINK');

// Start-Wert für Content Typen CMS_VAR[X]
$fValueStartWert = 100; //Ab dem Wert fange ich mit den CMS_VAR[X] an

// Wert mit dem CMS_VAR[X] bei jeder Schleife erhöht wird
$fValuePlusWert = 25;

//Maximale Anzahl an Layout-Blöcken
$fValueMaxWert = 20;

// Schleife für Ausgabe der angegebenen Layout-Blöcke
for ($i=1;$i<=$fValue;$i++){
	$fVar=$fValueStartWert;

	// Template-Variable
	$fTemp			=$fVar;
	$fTempValue		="CMS_VALUE[$fTemp]";
	$fTempVar		="CMS_VAR[$fTemp]";	
	
	// Sortier-Variable
	$fSort			= 1+ $fVar;
	$fSortValue		="CMS_VALUE[$fSort]";
	if(strlen($fSortValue)== 0){ $fSortValue = $fSort; }
	$fSortVar		="CMS_VAR[$fSort]";	
	
	// ON/OFF-Variable
	$fStatus		= 2+ $fVar;
	$fStatusValue	="CMS_VALUE[$fStatus]";
	$fStatusVar		="CMS_VAR[$fStatus]";	
?>				
<li data-position="<?php echo $fSortValue; ?>">
?>	
<div class="row-fluid">
	<div class="span12" style="text-align:center;">
		<h3 ><?php echo mi18n("Der Layout-Builder");?></h3>
		<p><?php echo mi18n("Mit Hilfe des Layout-Builders kannst du dir dein eigenes individuelles Layout zusammenstellen. Hierfür kannst du auch eine Auswahl von vordefinierten Templates zurück greifen.");?></p>
	</div>
	<div class="span5"><?php echo mi18n("Anzahl der Layout-Blöcke angeben");?>:</div>
	<div class="span6"><input type="text" name="<?php echo "CMS_VAR[10]"; ?>" value="<?php echo "$fValue"; ?>" <?php if($fValue>$fValueMaxWert){?>style="border:1px solid red;" <?php } ?>size="3" /> <?php echo mi18n("speichern");?> <?php echo $sSubmitLink;?></div>
</div>
	<?php 
	if($fValue!=""){
		// Maxwert Abfrage
		if($fValue>$fValueMaxWert){ 
			$fValue = $fValueMaxWert; 
		?>
		<p style="background-color:red;color:#fff;line-height:1.6;padding:16px;text-align:center;">
			<strong><?php echo mi18n("Achtung"); ?></strong>: <?php echo mi18n("Maximalwert von"); ?> <?php echo $fValueMaxWert; ?> <?php echo mi18n("überschritten. Bitte passen Sie den Wert an"); ?>!
		</p>
	<?php } ?>			
<li data-position="<?php echo $fSortValue; ?>">
// INHALT DES MODUL-BLOCKS
// Hier werden weitere CMS_VAR[X] innerhalb des Layout-Blocks für bestimmte layoutspezifische Konfigurationen benötigt. Deshalb erhöre ich den "$fValuePlusWert" immer um 25 - damit genügend CMS_VAR pro durchlauf zur verfügung stehen.
</li>
Ich hoffe das hat jetzt nicht zu sehr verwirrt. Ich möchte den gesamten Code jetzt ungern posten weil er noch nicht fertig ist. Der ein oder anderen wird sicher die Augen verdrehen wie ich gewisse Sachen gelöst habe aber das ist ein anderes Thema :D

Zurück zum Problem. Ich würde gern alle Konfigurationen des Modul in nur einer CMS_VAR[X] speichern und zwar in einem Array. Einige Variablen werden über Input-Felder mit Werten befüllt. Andere Werte kommen direkt aus dem Modul.

Gibt es einen Weg ein Array in ein CMS_VAR[] zu speichern ohne JS verwenden zu müssen (hier im Forum gibt es Lösungen die auf JS setzen)? Werte die ich direkt aus dem jeweiligen Template beziehen sind dabei kein Problem. Hier kann ich die ja in einem versteckten Input-Feld packen und normal versenden. Aber wie mache ich es mit Werten die vom User erst über ein Input-Feld mit Werten befüllt werden?

Ich hoffe ich habe euch nicht zu sehr und hoffe noch mehr, dass mir jemand helfen kann. Sobald das Modul lauffähig ist würde ich es wie gesagt auch hier posten da ich finde, das sowas extrem nützlich sein kann.

Viele Grüße
Matt
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Array in CMS_VAR speichern

Beitrag von Oldperl »

Servus,

Array serialisieren und dann in die CMS-Var stecken.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Array in CMS_VAR speichern

Beitrag von matt.loker »

Oldperl hat geschrieben:Servus,

Array serialisieren und dann in die CMS-Var stecken.

Gruß aus Franken

Ortwin
Danke für das Stichwort :)
http://forum.contenido.org/viewtopic.php?f=51&t=16212

Grüße
Matt
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Array in CMS_VAR speichern

Beitrag von matt.loker »

Hallo Oldperl,
vielen Dank für den Tipp. Ich versteh leider nicht ganz wie ich das mit Serialiserung umsetzte. Mir fehlt gefühlt nur eine kleine Eselsbrücke damit ich weiterkomme. Könntest du mir an einem kleinen Beispiel zeigen wie das Konzept wäre. Ich wär dir sehr dankbar.

Eine normal Struktur sieht ja so aus (ich mach mal eine mit einer Schleife weils das meiner Idee nahe kommt)

Code: Alles auswählen


echo '<input id="conf" type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]" />';
for ($k=10;$k<=15;$k++){
   echo '<input id="meintextfeld" type="text" name="CMS_VAR[$k]" value="CMS_VALUE[$k]" />';
}
echo '<a href="javascript:if (document.tplcfgform.send) {document.tplcfgform.send.value = 0}; document.tplcfgform.submit();"><img src="images/submit.gif" /></a>';



Wie würde ich das Beispiel mit serialize lösen?

Vielen vielen Dank für die Hilfe!
matt.loker
Beiträge: 203
Registriert: Mo 7. Mai 2007, 09:05
Kontaktdaten:

Re: Array in CMS_VAR speichern

Beitrag von matt.loker »

Mit ein wenig Hirnschmalz bin ich nun doch selbst drauf gekommen :D
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Array in CMS_VAR speichern

Beitrag von Oldperl »

matt.loker hat geschrieben:Mit ein wenig Hirnschmalz bin ich nun doch selbst drauf gekommen :D
Glückwunsch! :D

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
Antworten