Seite 1 von 4
CMS-Value's
Verfasst: Mo 8. Sep 2008, 15:57
von _wiewo_
Hallo
Habe mich gerade mal an das Input Feld der Module gewagt wie es dort =>
http://lohkemper.team4media.net/handbuc ... 73-l8.html beschrieben ist.
So, den Wert speichert er auch den ich eintippe, also wenn ich wieder auf Vorkonfigurieren beim Template klicke steht der Wert da... aaaaaaaaber wenn ich dann im Frontend gucke.. joa.. nix

Da gibt er mir den Wert nicht aus. NUR wenn ich bei einem Artikel auf "vorkonfigurieren" gehe, das gibt er auch aus, aber es muss doch möglich sein das Template vorzukonfigurieren oder?
lG
_vivo_
Verfasst: Mo 8. Sep 2008, 16:33
von OliverL
[EDIT]
Wir haben fertig! Das Modul von _wiewo_ gibt es hier->
[/EDIT]
Soooaaa!
ich gehe davon aus das du schon einen Artikel hattest (eventuel den Beispiel-Mandanten) und hast das Modul erstellt und in einem vorhandenes Template eingebunden und dann das Template pre-konfiguriert.
Dann bist du in einen Artikel gegangen und da auf Editor bzw. Vorschau.
Dasteht dann nix.
Soweit richtig?
Dann solltest du dir die Artikel-Konfigs bzw. Kategorie-Konfigs anschauen.
Da wird dann auch eine Einstellung gesetzt.
mfg OliverL
Verfasst: Mo 8. Sep 2008, 16:37
von _wiewo_
Ja
ich bräuchte es einfach so das man das Template einstellt.
Nicht jeden Artikel einzeln.
Weil bei einem Template sind die Einstellungen für ein Modul so, in einem anderen Template zwar das gleiche Modul, aber andere Einstellungen.
Und das würd ich halt gerne über das Inputfeld, bzw. der Vorkonfiguration erledigen.
Verfasst: Mo 8. Sep 2008, 16:54
von OliverL
Dann ist der Beitrag eher etwas:
http://lohkemper.team4media.net/handbuc ... 81-l8.html
(
Mandanteneinstellungen oder
- Sprachspezifisch)
Wo bei das etwas aufwendiger ist und ein bisschen aufwendiger ist.
z.B.:
Code: Alles auswählen
// Laden von zusätzlichen Funktionen
cInclude("classes", "contenido/class.clientslang.php");
// Objekt laden/erstellen
$oClientLang = new cApiClientLanguage(false, $client, $lang);
if( $area = "tpl_cfg" ) {
$Typ = "templateconfig"
$Name = "CMS_VAR[0]"
$Wert = ${"CMS_VAR[0]"};
// Speichern
if(is_set(${"CMS_VAR[0]"}))
$oClientLang->setProperty($Typ, $Name, $Wert );
// Ausgabe
$Wert = $oClientLang->getProperty("Typ","Name");
echo '<input value="'.$Wert.'" name="CMS_VAR[0]">';
}
Ist jetzt nur so mal schnell aussem Kopf raus geschriebn muss nicht funktionieren.
Verfasst: Mo 8. Sep 2008, 17:00
von _wiewo_
danke für den Link
Dann wühl ich mich da wohl mal nen bisschen rein

Verfasst: Mo 8. Sep 2008, 17:30
von _wiewo_
Eingabe
Code: Alles auswählen
cInclude("classes", "contenido/class.clientslang.php");
$oClientLang = new cApiClientLanguage(false, $client, $lang);
$oClientLang->setProperty("Typ","Name", "Wert");
$sTyp = "templateconfig";
$sName = "CMS_VAR[1]";
$sWert = "CMS_VALUE[1]";
$oClientLang->setProperty($sTyp, $sName, $sWert);
?>
<input type="text" name="CMS_VAR[1]" value="CMS_VALUE[1]">
Ausgabe
Code: Alles auswählen
cInclude("classes", "contenido/class.clientslang.php");
$oClientLang = new cApiClientLanguage(false, $client, $lang);
echo $oClientLang->getProperty("templateconfig","C30CMS_VAR[1]");
jetzt muss ich nurnoch rausfinden warum C30 vor CMS_VAR steht und wie ichs am besten hinbekommen mehrere Variablen zu speichern

Verfasst: Mo 8. Sep 2008, 19:31
von OliverL
1. Vergiss nicht im Input die if( $area = "tpl_cfg" ) sie sagt das nur gespeichert wird wenn du in den Template-Konfigurationen bist
2. C30 steht für Container-ID30
2.1. Es gibt ausschließlich im output ein Variable $cCurrentContainer (siehe DB:con_code) diese gibt den aktuellen Container aus.
INPUT:
$sName = "TPL".$idtpl."CMS_VAR[1]";
OUTPUT:
echo $oClientLang->getProperty("templateconfig","TPL".$idtpl."CMS_VAR[1]");
"TPL".$idtpl hat den Vorteil das solltest du ein zweites Template haben was auch in Container 20 das Gleiche Modul hat diese Module sich nicht überschreiben.
mfg Oliver
PS: Da du schon sowas lustiges/gutes baust noch nen Extra!
Die Platzhalter werden beim erstellen des con_code ersetzt zu:
"CMS_VAR[1]" = HTML-Input-Name "C20CMS_VAR[1]"
"CMS_VALUE[1]" = Richtiger Wert zB: "123"
Spezial im Output: Sollte die ID (hier 1) nicht Numerisch sein wir der Platzhalter zur Variable.
OUTPUT-CODE:
<?php
for($i=1; $i<=20; $i++) {
echo "CMS_VALUE[$i]";
}
?>
DB:con_code:
<?php
$C20CMS_VALUE[1]="123";
$C20CMS_VALUE[2]="123";
$C20CMS_VALUE[3]="123";
?>
<?php $cCurrentModule = 48; ?>
<?php $cCurrentContainer = 20; ?>
<?php
for($i=1; $i<=10; $i++) {
echo "$C20CMS_VALUE[$i]".'<br>';
}
?>
Verfasst: Di 9. Sep 2008, 09:59
von _wiewo_
Eingabe
Code: Alles auswählen
cInclude("classes", "contenido/class.clientslang.php");
$oClientLang = new cApiClientLanguage(false, $client, $lang);
if($area = "tpl_cfg"){
$oClientLang->setProperty("templateconfig", "TPL".$idtpl."_sHTagShow", "CMS_VALUE[1]");
$oClientLang->setProperty("templateconfig", "TPL".$idtpl."_sHTagLink", "CMS_VALUE[2]");
$oClientLang->setProperty("templateconfig", "TPL".$idtpl."_sHTagNumber", "CMS_VALUE[3]");
$oClientLang->setProperty("templateconfig", "TPL".$idtpl."_sLinkMethode", "CMS_VALUE[4]");
}
if("CMS_VALUE[1]" == 1){
echo("<td><input type=\"Checkbox\" name=\"CMS_VAR[1]\" value=\"1\" checked></td>");
} else {
echo("<td><input type=\"Checkbox\" name=\"CMS_VAR[1]\" value=\"1\"></td>");
}
usw....
Ausgabe
Code: Alles auswählen
// Klasse für benutzerspezifische Werte initialisieren
cInclude("classes", "contenido/class.clientslang.php");
$oClientLang = new cApiClientLanguage(false, $client, $lang);
// Werte vom Input auslesen
$sHTagShow = $oClientLang->getProperty("templateconfig","TPL".$idtpl."_sHTagShow");
$sHTagNumber = $oClientLang->getProperty("templateconfig","TPL".$idtpl."_sHTagNumber");
$sHTagLink = $oClientLang->getProperty("templateconfig","TPL".$idtpl."_sHTagLink ");
$sLinkMethode = $oClientLang->getProperty("templateconfig","TPL".$idtpl."_sLinkMethode");
hab nur das problem das wenn ich im output
schreibe nur "TemplateID:" auf der Seite steht

im input wird mir die ID angezeigt

nur im output leider nicht
Was sagst du zu dieser Methode?

Wie bekomm ich jetzt noch die ID des Templates auf die Seite?
Ich glaub ich schicke dir die Tage das ganze Teil mal was ich Progge, wenn es dir nichts ausmacht würd ich da ne kurze/lange Kritik zu hören

Verfasst: Di 9. Sep 2008, 13:03
von OliverL
Jo mach das. Kann ich sicher auch gut verwenden.
Bisschen getrickst wäre das:
Output:
Code: Alles auswählen
$sql = "SELECT ca.idcat, ca.idart, tca.idtpl as tca, tcc.idtpl as tcc
FROM con48_cat_art as ca,
con48_art_lang as al
LEFT JOIN con48_template_conf as tca
ON al.idtplcfg = tca.idtplcfg,
con48_cat_lang as cl
LEFT JOIN con48_template_conf as tcc
ON cl.idtplcfg = tcc.idtplcfg
WHERE al.idart = ".$idart."
AND al.idlang = ".$lang."
AND ca.idart = al.idart
AND ca.idcat = cl.idcat";
$db->query($sql);
$iArtTpl = $db->f('tca');
$iCatTpl = $db->f('tcc');
if( $iArtTpl ) $iThisTpl = $iArtTpl;
else $iThisTpl = $iCatTpl;
Das Script nimmt primär die Artikle-Template-Konfig-ID und dann die der Kategorie.
mfg OliverL
Verfasst: Di 9. Sep 2008, 13:05
von OliverL
Gut:
Code: Alles auswählen
if("CMS_VALUE[1]" == 1){
echo("<td><input type=\"Checkbox\" name=\"CMS_VAR[1]\" value=\"1\" checked></td>");
} else {
echo("<td><input type=\"Checkbox\" name=\"CMS_VAR[1]\" value=\"1\"></td>");
}
IMO besser:
Code: Alles auswählen
echo '<td><input type="Checkbox" name="CMS_VAR[1]" value="1"'.( "CMS_VALUE[1]" ? ' checked' : '' ).'></td>");
mfg OliverL
Verfasst: Mi 10. Sep 2008, 08:00
von _wiewo_
OliverL hat geschrieben:Jo mach das. Kann ich sicher auch gut verwenden.
Bisschen getrickst währe das:
Output:
Code: Alles auswählen
$sql = "SELECT ca.idcat, ca.idart, tca.idtpl as tca, tcc.idtpl as tcc
FROM con48_cat_art as ca,
con48_art_lang as al
LEFT JOIN con48_template_conf as tca
ON al.idtplcfg = tca.idtplcfg,
con48_cat_lang as cl
LEFT JOIN con48_template_conf as tcc
ON cl.idtplcfg = tcc.idtplcfg
WHERE al.idart = ".$idart."
AND al.idlang = ".$lang."
AND ca.idart = al.idart
AND ca.idcat = cl.idcat";
$db->query($sql);
$iArtTpl = $db->f('tca');
$iCatTpl = $db->f('tcc');
if( $iArtTpl ) $iThisTpl = $iArtTpl;
else $iThisTpl = $iCatTpl;
Das Script nimmt primär die Artikle-Template-Konfig-ID und dann die der Kategorie.
mfg OliverL
mal so ne Idee....

ähm, kann man im input nicht einfach die ID des Templates auch einfach als Wert speichern und dann ganz normal wie die anderen Werte auslesen?

Verfasst: Mi 10. Sep 2008, 08:00
von _wiewo_
OliverL hat geschrieben:Gut:
Code: Alles auswählen
if("CMS_VALUE[1]" == 1){
echo("<td><input type="Checkbox" name="CMS_VAR[1]" value="1" checked></td>");
} else {
echo("<td><input type="Checkbox" name="CMS_VAR[1]" value="1"></td>");
}
IMO besser:
Code: Alles auswählen
echo '<td><input type="Checkbox" name="CMS_VAR[1]" value="1"'.( "CMS_VALUE[1]" ? ' checked' : '' ).'></td>");
mfg OliverL
hatte noch mehr zwischen den { } daher diese Variante

Verfasst: Mi 10. Sep 2008, 08:24
von _wiewo_
wie krieg ichs denn wohl mal hin die ContainerID im input auszulesen?

würd die werte gern mit "TemplateID_ContainerID_Name" speichern um ganz sicher zu gehen das sich nichts überschneidet
Verfasst: Mi 10. Sep 2008, 08:49
von OliverL
Template-ID:
Ich würde die ID immer ermitteln da solltest du das Modul nachträglich ergänzen und hast somit die Values nicht in den Artikeln gesetzt müsstest du jeden Artikel um die Werte ergänzen. Im besten Fall würde das zwar nur heißen das du jede Artikel-Konfig öffnest und einmal speicherst aber das z.B. bei 400 Artikeln würde mich nerven.
Im Input die C.-ID ermitteln:
$iContainerId = substr(strtok("_", "CMS_VAR[1]"), 1, -3);
Erklärung:
"CMS_VAR[1]" --> "C123456CMS_VAR[1]"
strtok --> "C123456CMS"
substr -->"123456"
mfg OliverL
Verfasst: Mi 10. Sep 2008, 09:10
von _wiewo_
OliverL hat geschrieben:Template-ID:
Ich würde die ID immer ermitteln da solltest du das Modul nachträglich ergänzen und hast somit die Values nicht in den Artikeln gesetzt müsstest du jeden Artikel um die Werte ergänzen. Im besten Fall würde das zwar nur heißen das du jede Artikel-Konfig öffnest und einmal speicherst aber das z.B. bei 400 Artikeln würde mich nerven.
Stimmt, ja werd dann gleich mal deine Methode oben testen.
Und wenns dann klappt bekommste auch gleich mal was ich da bastel.
OliverL hat geschrieben:
Im Input die C.-ID ermitteln:
$iContainerId = substr(strtok("_", "CMS_VAR[1]"), 1, -3);
Erklärung:
"CMS_VAR[1]" --> "C123456CMS_VAR[1]"
strtok --> "C123456CMS"
substr -->"123456"
mfg OliverL
Code: Alles auswählen
$sCurrentContainer = substr(strtok("_", "CMS_VAR[1]"), 1, -3);
echo("ContainerID: ".$sCurrentContainer."");
funzt nicht

hinter "ContainerID:" steht nichts =/