Seite 3 von 4
Verfasst: Do 11. Sep 2008, 07:55
von kummer
wahnsinns-thread. ihr versucht tatsächlich, die container-id herauszufinden? alles schön und gut. aber warum nicht einfach den wert von
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.
Verfasst: Do 11. Sep 2008, 07:59
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

Verfasst: Do 11. Sep 2008, 08:00
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
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

Verfasst: Do 11. Sep 2008, 08:07
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

Verfasst: Do 11. Sep 2008, 08:21
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?
Verfasst: Do 11. Sep 2008, 08:30
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
Verfasst: Do 11. Sep 2008, 08:37
von OliverL
@_wiewo_
_wiewo_ hat geschrieben:var ist ja mal ganz böse
Wenn var böse ist dann ist das auch bööööössseeee
$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
Verfasst: Do 11. Sep 2008, 08:39
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
$sCurrentContainer = substr("CMS_VAR[1]", 1, 2);
hehe, hab da mittlerweile deins genommen

Verfasst: Do 11. Sep 2008, 08:50
von kummer
OliverL hat geschrieben:Wenn var böse ist dann ist das auch bööööössseeee
$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.
Verfasst: Do 11. Sep 2008, 08:56
von _wiewo_
Code: Alles auswählen
preg_match('/^C(\\d*)CMS_VAR\\[\\d*]$/', "CMS_VAR[1]", $match);
$sCID = $match[1];
oder
wasn nun besser?

wobei besser glaub relativ ist

Verfasst: Do 11. Sep 2008, 09:01
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.
Verfasst: Do 11. Sep 2008, 09:16
von OliverL
Alter!
Jetzt kummer voll den Profi raushängen
( Regex und Sql-If )
mfg OliverL
Verfasst: Do 11. Sep 2008, 09:20
von _wiewo_
OliverL hat geschrieben:Alter!
Jetzt kummer voll den Profi raushängen
( 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 ><
Verfasst: Do 11. Sep 2008, 09:25
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

Verfasst: Do 11. Sep 2008, 09:42
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