Seite 1 von 2
Artikel auf Startseite setzen
Verfasst: Mo 17. Dez 2012, 10:41
von derju
Guten Morgen
Ich schreibe gerade an einem Modul welches jeden Artikel als News auf die Startseite setzen lässt.
Will ich einen Srtikel auf die Startseite setzen wähle ich in der Artikel Konfiguration auf Startseite setzen:
Code: Alles auswählen
<input type="checkbox" name="CMS_VAR[1]" value="start"<?php echo ($aSettings['showall']?' checked="checked"':'');?>>
Jetzt will ich das News Modul so abändern das nur die Artikel die in CMS_VAR[1] start stehen haben aufgelistet werden.
Wie komme ich aus dem Newsmodul an die Variable CMS_VAR[1] der Artikel?
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Mo 17. Dez 2012, 13:24
von Spider IT
Hallo derJu,
soweit ich weiß gar nicht.
Du könntest aber diese Angabe in den Modul-Output verpflanzen, um ihn in den Editor zu zeigen:
Code: Alles auswählen
<?php
# Show a html select in edit mode, the selected value in frontend
$oArt = new Article($idart, $client, $lang, $idartlang);
$selected = $oArt->getContent('CMS_TEXT', 1001);
if ($edit) {
if (isset($_POST['mySwitchValue'])) {
# Wert speichern
conSaveContentEntry($idartlang, 'CMS_TEXT', 1001, $_POST['mySwitchValue']);
$selected = $_POST['mySwitchValue'];
}
?>
<input type="checkbox" id="mySwitch" name="mySwitch" value="start" onchange="saveSwitch()"<?php (($selected == 'start') ? 'checked="checked"' : ''); ?> />
<script type="text/javascript">
//<![CDATA[
function saveSwitch() {
var f = document.forms['editcontent'];
var s = ((document.getElementById('mySwitch').selected) ? 'start' : '');
var c = document.createElement('input');
c.type = 'hidden';
c.name = 'mySwitchValue';
c.value = s;
f.appendChild(c);
f.submit();
}
//]]>
</script>
<?php
}
?>
Im Newsmodul wird mit der Objektvariable $article gearbeitet, über diesen kannst du jedes Feld der Artikel abfragen.
In diesem Fall wäre das dann
Code: Alles auswählen
if ($article->getContent('CMS_TEXT', 1001) == 'start') {
Damit kannst du dann den Artikel, falls er ausgegeben werden soll, ausgeben (also die Ausgabe in diese Verzweigung einsetzen).
Bedenke aber, dass du dann die Prüfung der eingestellten Anzahl auszugebender Artikel nach unten verschieben musst, da die nicht ausgegebenen Artikel nicht mitgezählt werden dürfen.
Gruß
René
Re: Artikel auf Startseite setzen
Verfasst: Do 3. Jan 2013, 14:55
von derju
Hallo René
Danke für deine Antwort, leider ist das Newsmodul von Contenido beschränkt auf eine Kategorie und ich benötige es für alle Artikel aus allen Kategorien.
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Do 3. Jan 2013, 16:24
von Spider IT
Hallo derJu,
ich habe lediglich deine Frage beantwortet, du wolltest die jeweilige Einstellung im Newsmodul auslesen können.
Um das Newsmodul zu erweitern, musst du die Funktion conDeeperCategoriesArray() nutzen, um alle Kategorien innerhalb der aktuellen Kategorie aufzulisten.
Damit kannst du dann je Kategorie wieder die Funktionalität der Newsliste nutzen.
Gruß
René
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 10:48
von derju
Hallo René
Genau, danke nochmals.
Gibt es für conDeeperCategoriesArray() irgentwo ein Beispiel?
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 11:06
von Spider IT
Keine Ahnung, aber es ist denkbar einfach anzuwenden.
Du übergibst der Funktion eine idcat und kriegst ein Array mit den darin enthaltenen idcats zurück (eine Ebene).
Also, wenn "Hauptnavigation" die idcat 1 hat und darin die Kategorien wie folgt liegen
Code: Alles auswählen
- Contenido (idcat = 2)
- Erste Schritte (idcat = 3)
- Features (idcat = 4)
- - Navigation (idcat = 5)
- - Content (idcat = 6)
- - - News (idcat = 7)
- - - Bildergalerie (idcat = 8)
- - Geschlossener Bereich (idcat = 9)
- - - Vertraulich (idcat = 10)
- Der Experte (idcat = 11)
- Services (idcat = 12)
- - Hosting (idcat = 13)
liefert dir
ein Array mit idcats 2, 3, 4, 11, 12.
Gruß
René
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 12:35
von derju
Danke, hat super geklappt.
Ein Kleines Problem hab ich noch, in der Artikel Konfiguration hab ich eine checkbox das Auswählen funktioniert.
Wenn ich jetzt die checkbox abwählen will funktioniert das nicht, und ich hab keine Ahnung wo der Fehler liegt habe es mit dem Newsmodul verglichen (#Include start article):
Code: Alles auswählen
?><?php
if ("CMS_VALUE[3]" != '') {
$start = ' checked';
} else {
$start = '';
}
echo '<table cellpadding="0" cellspacing="0" border="0">';
#Include start article
echo '
<tr>
<td class="text_medium" style="padding:5px;">'.mi18n("Artikel auf Startseite setzen").':</td>
<td style="padding:5px;"><input type="checkbox" name="CMS_VAR[3]" value="start" checked></td>
'.$start.'
</tr>';
echo '</table>';
?><?php
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 12:40
von derju
Danke, hat super geklappt.
Ein Kleines Problem hab ich noch, in der Artikel Konfiguration hab ich eine checkbox das Auswählen funktioniert.
Wenn ich jetzt die checkbox abwählen will funktioniert das nicht, und ich hab keine Ahnung wo der Fehler liegt habe es mit dem Newsmodul verglichen (#Include start article):
Code: Alles auswählen
?><?php
if ("CMS_VALUE[3]" != '') {
$start = ' checked';
} else {
$start = '';
}
echo '<table cellpadding="0" cellspacing="0" border="0">';
#Include start article
echo '
<tr>
<td class="text_medium" style="padding:5px;">'.mi18n("Artikel auf Startseite setzen").':</td>
<td style="padding:5px;"><input type="checkbox" name="CMS_VAR[3]" value="start" '.$start.'></td>
</tr>';
echo '</table>';
?><?php
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 12:59
von Spider IT
Versuch es doch mal mit
Code: Alles auswählen
if ("CMS_VALUE[3]" == 'start') {
$start = ' checked';
} else {
$start = '';
}
Allerdings löst das nicht dein Problem aus deine Frage im ersten Post, wofür meine Lösung war, diese Checkbox mittels ein eigenes Modul in den Contentbereich zu verpflanzen.
Gruß
René
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 13:17
von derju
Das bringt auch nichts.
Das Problem aus dem ersten Post ist gelöst nur die checkbox will noch nicht.
Für mich gehört das in die Konfiguration und nicht in den Contentbereich.
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 14:26
von Spider IT
Ich kann mir nur vorstellen, dass es nicht funktioniert weil NUR die Checkbox in der Konfig ist, dadurch wird beim Deaktivieren nichts an das Modul geschickt und das Speichern auch nicht ausgelöst.
Pack doch mal ein input type="hidden" mit anderem CMS_VAR mit rein und schau ob das dann geht (ein input, auch hidden, schickt immer Daten).
Bei mir funktioniert es sonst in allen Modulen, aber da sind immer auch Eingabefelder mit dabei.
Gruß
René
Re: Artikel auf Startseite setzen
Verfasst: Fr 4. Jan 2013, 15:02
von derju
Hallo René
Vielen Dank, daran hat es gelegen, da muss man erst mal drauf kommen.
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Di 15. Jan 2013, 10:38
von derju
Moin
Gibt es eine Möglichkeit diese Array zu sortieren:
LG - derJu
Re: Artikel auf Startseite setzen
Verfasst: Di 15. Jan 2013, 11:01
von Spider IT
Moin,
das Array
$myList beinhaltet mehrere Ebenen mit den unterschiedlichsten Angaben, u.A. Datenbankzugangsdaten (warum auch immer), aber zu den Artikeln nur die idarts.
Du kannst aber die Artikelinformationen die du brauchst in ein Array sammeln und das sortieren, z.B. nach Aktualisierungsdatum:
Code: Alles auswählen
# ...
$myArts = array();
for ($i = 0, $n = $myList->count; $i < $n; $i ++) {
$oArt = $myList->nextArticle();
$h1 = $oArt->getContent('CMS_HTMLHEAD', 1);
$h2 = $oArt->getContent('CMS_HTMLHEAD', 2);
$c1 = $oArt->getContent('CMS_HTML', 1);
$c2 = $oArt->getContent('CMS_HTML', 2);
$lm = $oArt->getField('lastmodified');
$myArts[] = array('h1' => $h1, 'h2' => $h2, 'c1' => $c1, 'c2' => $c2, 'lm' => $lm);
}
$myArray = sitCascadedArraySort($myArray, 'lm', SORT_STRING, SORT_ASC);
# Ausgabe, Werte aus $myArray...
function sitCascadedArraySort() {
$args = func_get_args();
$marray = array_shift($args);
if (count($marray)) {
$msortline = 'return(array_multisort(';
foreach ($args as $arg) {
$i ++;
if (is_string($arg)) {
foreach ($marray as $row) {
$sortarr[$i][] = $row[$arg];
}
} else {
$sortarr[$i] = $arg;
}
$msortline .= '$sortarr['.$i.'],';
}
$msortline .= '$marray));';
eval($msortline);
}
return $marray;
}
Gruß
René
Re: Artikel auf Startseite setzen
Verfasst: Di 15. Jan 2013, 11:30
von derju
Hallo René
Danke für deine Antwort.
Folgendes Problem habe ich noch:
Code: Alles auswählen
foreach($catIds as $key=>$val) {
$myList = new ArticleCollection(array("idcat"=>$val, "start" => $start_article, "order"=>"lastmodified", "direction"=>"asc"));
}
$myList gibt so nur ein Wert zurück, ich bekomme es aber nicht hin das sich $myList bei jedem Durchlauf erweitert.
Ist das hier überhaupt möglich?
LG - derJu