CMS-Value's

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

wahnsinns-thread. ihr versucht tatsächlich, die container-id herauszufinden? alles schön und gut. aber warum nicht einfach den wert von

Code: Alles auswählen

$cCurrentContainer
verwenden? der steht dort nämlich drin.

offengestanen ist mir einfach nicht klar, was du genau vor hast. wenn du das mal erklärst, kann man dir möglicherweise ganz einfach helfen.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

kummer hat geschrieben:du hast den query zwar abgesetzt, aber du befindest dich noch auf zeile 0. du musst mindestens einen aufruf von $this->db->next_record() vornehmen um auf den ersten eintrag zu gelangen.

normalerweise schlaufst du ja durch die ergebnisse mit

Code: Alles auswählen

while ($this->db->next_record()) {
    $meinWert = $this->db->f('meinFeldBezeichner');
}
wenn du nur ein ergebnis erwartest (einen einzelnen record) kannst du auch sowas machen:

Code: Alles auswählen

if ($this->db->next_record()) {
    $meinWert = $this->db->f('meinFeldBezeichner');
} else {
    // der query gab kein ergebnis zurück
}
wahhhh *wand* danke stimmt
versuchs jetzt aber mit in conti integrierten klassen ^^
mal gucken obs geht, is dann bisschen schlanker der code :)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

kummer hat geschrieben:wahnsinns-thread. ihr versucht tatsächlich, die container-id herauszufinden? alles schön und gut. aber warum nicht einfach den wert von

Code: Alles auswählen

$cCurrentContainer
verwenden? der steht dort nämlich drin.

offengestanen ist mir einfach nicht klar, was du genau vor hast. wenn du das mal erklärst, kann man dir möglicherweise ganz einfach helfen.
ne, die Template ID im output :)

und werd glaub heut noch mein modul hier ins forum stellen komplett
da könnt ihr euch dann alle dran auslassen :)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

Code: Alles auswählen

class Hauptklasse{
	function __construct(){
		$this->db			=	$GLOBALS['db'];
		$this->cfg			=	$GLOBALS['cfg'];
		$this->client		=	$GLOBALS['client'];
		$this->lang			=	$GLOBALS['lang'];
		$this->cfgClient	=	$GLOBALS['cfgClient'];
		$this->sess			=	$GLOBALS['sess'];
	}
}

[...]

class TemplateID extends Hauptklasse {
	function auslesen($idart){
		$this->idart = $idart;
		
		
		$oArticle = new Article($this->idart, $this->client, $this->lang);
		$sTplID = $oArticle->getField('idtplcfg');
		
		
		$sql = 'SELECT ca.idcat, ca.idart, tca.idtpl AS tca, tcc.idtpl AS tcc'
        . ' FROM con_cat_art AS ca, con_art_lang AS al'
        . ' LEFT JOIN con_template_conf AS tca ON al.idtplcfg = tca.idtplcfg, con_cat_lang AS cl'
        . ' LEFT JOIN con_template_conf AS tcc ON cl.idtplcfg = tcc.idtplcfg'
        . ' WHERE al.idart = '.$this->idart.''
        . ' AND al.idlang = '.$this->lang.''
        . ' AND ca.idart = al.idart'
        . ' AND ca.idcat = cl.idcat'
        . ' LIMIT 0 , 30';
		$this->db->query($sql);
				
		if ($this->db->next_record()) { 
			$iArtTpl = $this->db->f('tca');
			$iCatTpl = $this->db->f('tcc');
		}
		if( $iArtTpl ) $iThisTpl = $iArtTpl;
		else  $iThisTpl = $iCatTpl;
		
		return $iThisTpl;
	}
}
das funzt jetzt richtig so, danke für eure hilfe :)
gleich gibts dann nen thread im modul forum :)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

warum einfach, wenn es kompliziert auch geht. folgender query gibt dir die verwendete idtpl eines artikels zurück (entweder aus der kategorie oder dem artikel).

Code: Alles auswählen

select
	templateconf.idtpl as idtpl
from con_art_lang as artlang
left join con_cat_art as catart on artlang.idart = catart.idart
left join con_cat_lang as catlang on artlang.idlang = catlang.idlang and catart.idcat = catlang.idcat
left join con_template_conf as templateconf on templateconf.idtplcfg = if(artlang.idtplcfg > 0, artlang.idtplcfg, catlang.idtplcfg)
where
	artlang.idartlang = {$idartlang}
eine extra-klasse ist dafür eher ein overkill, nicht?
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

kummer hat geschrieben:warum einfach, wenn es kompliziert auch geht. folgender query gibt dir die verwendete idtpl eines artikels zurück (entweder aus der kategorie oder dem artikel).

Code: Alles auswählen

select
	templateconf.idtpl as idtpl
from con_art_lang as artlang
left join con_cat_art as catart on artlang.idart = catart.idart
left join con_cat_lang as catlang on artlang.idlang = catlang.idlang and catart.idcat = catlang.idcat
left join con_template_conf as templateconf on templateconf.idtplcfg = if(artlang.idtplcfg > 0, artlang.idtplcfg, catlang.idtplcfg)
where
	artlang.idartlang = {$idartlang}
eine extra-klasse ist dafür eher ein overkill, nicht?
danke, werd ich gleich mal einbauen und testen

PS: find das forum hier echt klasse, danke
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL »

@_wiewo_
_wiewo_ hat geschrieben:var ist ja mal ganz böse
Wenn var böse ist dann ist das auch bööööössseeee 8)
$sCurrentContainer = substr("CMS_VAR[1]", 1, 2);


@Kummer (alles bis zum ende)
kummer hat geschrieben:du hast den query zwar abgesetzt, aber du befindest dich noch auf zeile 0. du musst mindestens einen aufruf von $this->db->next_record() vornehmen um auf den ersten eintrag zu gelangen.
Verdam** voll vergessen!
kummer hat geschrieben:wahnsinns-thread. ihr versucht tatsächlich, die container-id herauszufinden? alles schön und gut. aber warum nicht einfach den wert von
Im Input steht $cCurrentContainer nicht zur Verfügung.
-----------------------------------------------------------------------
Was soll das hier?
_wiewo_ möchte gerne Werte ausschließlich über die Template-Konfiguration setzen.
So hab ich ihm geraten das als (Sprachspezifische-) Mandanten-Einstellung zuspeichern
Typ: templateconfig
Name: ~ tpl{Tpl-ID}c{cCurrentContainer}_Feldname
Value: - ergibt sich -

Input: Die Template-ID wird in Style->Template per GET übergeben jedoch cCurrentContainer müssen wir ermitteln.

Output: Somit müssen wir im Output ermitteln weche Template-ID der Artikel hat bzw wenn der null ist soll er die ID der Kategorie nehmen. Und haben schon $cCurrentContainer
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

OliverL hat geschrieben:@_wiewo_
_wiewo_ hat geschrieben:var ist ja mal ganz böse
Wenn var böse ist dann ist das auch bööööössseeee 8)
$sCurrentContainer = substr("CMS_VAR[1]", 1, 2);
hehe, hab da mittlerweile deins genommen :P
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

OliverL hat geschrieben:Wenn var böse ist dann ist das auch bööööössseeee 8)
$sCurrentContainer = substr("CMS_VAR[1]", 1, 2);
so wäre besser:

Code: Alles auswählen

preg_match('/^C(\\d*)CMS_VAR\\[\\d*]$/', "CMS_VAR[1]", $match);
$sCurrentContainer = $match[1];
übrigens hat var die gleiche funktion wie public (oder auch wie wenn da gar nichts steht). das ist zwar nicht grundsätzlich 'böse'. in der regel aber ungünstig. ich stelle members nie auf public. entweder private oder protected.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

Code: Alles auswählen

preg_match('/^C(\\d*)CMS_VAR\\[\\d*]$/', "CMS_VAR[1]", $match);
$sCID = $match[1];
oder

Code: Alles auswählen

$sCID = substr(strtok("CMS_VAR[1]","_"), 1, -3); 
wasn nun besser? :) wobei besser glaub relativ ist :)
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

das spielt dann keine grosse rolle mehr. habe das auch mehr als variante für die lösung mit substr verstanden. mit strtok ist absolut ok und sollte immer das richtige ergebnis liefern.
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL »

Alter!
Jetzt kummer voll den Profi raushängen :D
( Regex und Sql-If )

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

Beitrag von _wiewo_ »

OliverL hat geschrieben:Alter!
Jetzt kummer voll den Profi raushängen :D
( Regex und Sql-If )

mfg OliverL
das if im sql hab ich vorher nichmal gehört xD
und dabei hab ich meine AP medienoperator mit datenbanken gemacht ><
_wiewo_
Beiträge: 358
Registriert: Mo 8. Sep 2008, 11:12

Beitrag von _wiewo_ »

falls ihrs noch nicht gesehen habt

http://forum.contenido.org/viewtopic.php?t=22480

hab da nun mal das ganze modul on gestellt ;)
OliverL
Beiträge: 870
Registriert: Do 28. Jun 2007, 09:28
Kontaktdaten:

Beitrag von OliverL »

Warum machste den so?

Code: Alles auswählen

    echo '<table>';
        echo '<tr>';
            echo '<td colspan="2" style="height: 30px; vertical-align: bottom"><strong>H-TAG</strong></td>';
        echo '</tr>';
       
        echo '<tr>';
            echo '<td>H-TAG über den Artikeln und Kategorien einblenden</td>';
            echo '<td><input type="Checkbox" name="CMS_VAR[1]" value="1"'.( "CMS_VALUE[1]" ? ' checked' : '' ).'></td>';
        echo '</tr>';
       
        echo '<tr>';
            echo '<td>H-TAG verlinken</td>';
            echo '<td><input type="Checkbox" name="CMS_VAR[2]" value="1"'.( "CMS_VALUE[2]" ? ' checked' : '' ).'></td>';
        echo '</tr>';

    echo '</table>';
ich mach das immer im Style von so:

Code: Alles auswählen

<table>
  <tr>
    <td colspan="2" style="height: 30px; vertical-align: bottom"><strong>H-TAG</strong></td>
  </tr>
  <tr>
    <td><?php echo mi18n("H-TAG über den Artikeln und Kategorien einblenden"); ?></td>
    <td><label><input type="Checkbox" name="CMS_VAR[1]" value="1"<?php echo ( "CMS_VALUE[1]" ? ' checked' : '' ); ?>> <?php echo mi18n("aktiv"); ?></label></td>
  </tr>
</table>
Hab mal die Übersetzung in das Modul mit ergänzt und label für Checkbox (für die Benutzerfreundlichkeit).

Info: Bei der Übersetzung geh ich neuerdings soweit im Input (Weil nur im Input funktioniert) das ich in der PO-Datei nach einer passenden *Übersetzung suche und dann sowas mache:
<?php echo i18n(mi18n("Please select")); ?>
So können russen und deutsche Admins zusammen Arbeiten, weil die Felder über die Backend-Sprache gesteuert werden. Wahlweise kann mann dann wenn man möchte in der Modul-Übersetzung das noch ändern.

mfg OliverL
Gesperrt