CMS-Value's

_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

CMS-Value's

Beitrag 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_
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag 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
Zuletzt geändert von OliverL am Mo 6. Okt 2008, 08:22, insgesamt 2-mal geändert.
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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.
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag 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.
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

danke für den Link
Dann wühl ich mich da wohl mal nen bisschen rein :)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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 :)
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag 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>';
}
?>
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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

Code: Alles auswählen

echo("TemplateID: ".$idtpl."");
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 :)
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag 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
Zuletzt geändert von OliverL am Fr 10. Okt 2008, 21:13, insgesamt 1-mal geändert.
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag 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
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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? :)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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 ;)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag 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
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag 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 =/
Gesperrt