Hallo zusammen.
Ich benötige ein Modul, welches mir die Unterkategorien einer ausgewählten Kategorie als Listenpunkte darstellt und diese mit dem Startartikel der entsprechenden Unterkategorie verlinkt. Ich habe bisher nur Module gefunden, die die aktuellen Kategorien auflisten. Ich benötige aber eine Auswahlmöglichkeit.
Weiterhin benötige ich ein Teaser-Modul, welches mir alle Artikel einer Kategorie anteasert, auch wenn in dieser Kategorie noch Artikel in Unterkategorien existieren. Habe ich bisher auch noch nicht gefunden. Bei den üblichen Teaser-Modulen habe ich immer nur die Auswahl einer Kategorie. Aus dieser Kategorie werden dann die Artikel angezeigt, aber Artikel aus Unterkategorien der ausgewählten Kategorie werden nicht aufgelistet.
Hintergrund ist folgender:
Ich habe ein Immobilienportal mit mehreren Kategorien, z.B. Ferienimmobilien, Gewerbeimmobilien und Kaufimmobilien. In den Kategorien stehen jeweils die Beschreibungen der Immobilien in einem Artikel. Als Startartikel gibts eine Übersicht der Immobilien der jeweiligen Kategorie als Teaser. Auf diesem Startartikel muss ich aber eine Übersicht aller Kategorien haben, daher die Kategorien-Auswahlmöglichkeit, die ich benötige.
Dazu benötige ich zusätzlich eine Gesamtliste aller Artikel unabhängig von der Unterkategorie.
Ich hoffe, das ist verständlich und Ihr könnt mir helfen.
Vielen Dank schonmal,
Karsten
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
-
- Beiträge: 41
- Registriert: 26. Nov 2007, 22:33
- Kontaktdaten: Website
-
- Beiträge: 41
- Registriert: 26. Nov 2007, 22:33
- Kontaktdaten: Website
OK, die Kategorienliste habe ich hinbekommen, aber was muss ich anstellen, damit ich eine Liste aller Artikel einer Kategorie inkl. Unterkategorie bekomme?marry hat geschrieben:tipp: jeder artikel und jede kategorie basieren auf eine basisklasse, und die haben wunderbare get'er und set'er. damit dürfte sich sowas realisieren lassen
Code: Alles auswählen
[....]
$articles = OOArticle::getArticlesOfCategory('20', true);
[...]
Gruß,
Karsten
-
- Beiträge: 224
- Registriert: 18. Feb 2005, 14:00
- Wohnort: stuttgart
geschwisterkategorien!
hallo,
nur als anregung ein teaser auf alle geschwister.
hier müssen dann noch die startartikel rausgefiltert werden ...
hoffe es hilft.
nur als anregung ein teaser auf alle geschwister.
hier müssen dann noch die startartikel rausgefiltert werden ...
Code: Alles auswählen
<?php
$cat = OOCategory::getCategoryById($this->getValue(category_id));
$cats = $cat->getChildren();
$wordsPerArticle = "REX_VALUE[1]";
if (is_array($cats)) {
foreach ($cats as $cat) {
$i += 1;
if ($i <= $itemsPerSide)
{
if($cat->isOnline()){
$catId = $cat->getId();
$catName = $cat->getName();
$article = $cat->getArticles();
if (is_array($article)) {
foreach ($article as $var) {
$articleId = $var->getId();
$articleName = $var->getName();
$articleDescription = $var->getDescription();
$art = new article();
$art->setArticleId($articleId);
$articleContent = $art->getArticle();
$articleContent = trim($articleContent);
$articleContent = str_replace("</p>", " </p>", $articleContent);
$articleContent = str_replace("<br />", " <br />", $articleContent);
$articlePPath = $REX["HTDOCS_PATH"]."files/".$var->getValue("file");
$output = "";
$words = explode(" ",$articleContent);
$wordsCount = count($words);
if ($wordsCount < $wordsPerArticle) $wEnd = $wordsCount;
else $wEnd = $wordsPerArticle;
for ($w=0;$w<$wEnd;$w++) {
$output .= $words[$w]." ";
}
$output = trim($output);
$isCloseParagraph = substr($output,-4);
$link = '<a href="'.rex_getUrl($articleId).'"> ...mehr</a>';
$newString = $link.'</p>';
if ($isCloseParagraph == '</p>') {
$output = substr_replace($output,$newString,-4);
}
else {
$output .= $newString;
}
print '<div class="teaser2">'.$output.'</div>';
}
}
}
}
}
}
?>
Re: geschwisterkategorien!
Hallo Tizian!
Das Problem mit dem Wörter zählen hatte ich auch gerade.
Um den Text aufzusplitten, würde ich stattnutzen.
Das Problem mit dem Wörter zählen hatte ich auch gerade.
Um den Text aufzusplitten, würde ich statt
Code: Alles auswählen
$wordCount = count(explode(' ',$text));
Code: Alles auswählen
$wordCount = count(preg_split('/(\s)|( )|( )/si', strip_tags($text)));
Beliebige "Tiefen" lösen sich am einfachsten rekursiv auf:
PS-EDIT: Tiefe.Enum entfernt, da Unsinn!)
PS-EDIT-2: Allgemeiner mit "sinvollen" Array Keys!)
Code: Alles auswählen
<?php
/**
* Alle Artikel einer Kategorie inkl. deren Unterkategorien ermitteln
* die nicht Startartikel der jeweiligen Kategorie sind.
*
* @param mixed $mCatId integer ID der Kategorie oder eine Instanz von OOCategory
* @param &array $aArticles Array das die Artikel aufnimmt
* @param bool $bIOL wenn TRUE werden Artikel die NICHT "Online" sind ignoriert
* @param int $iDepth -1 für beliebige Verschachtelung, sonst max. Verschachtelungstiefe
* @param string $sPath intern - Verwendet zum generieren der "Keys" von $aArticles
* @return bool TRUE wenn keine Fehler aufgetreten sind, sonst FALSE
*/
function getArticlesRecursive($mCatId, &$aArticles, $bIOL = FALSE, $iDepth = -1, $sPath = NULL)
{
$aArticles = (array)$aArticles;
$oCategory = NULL;
if($mCatId instanceof OOCategory)
{
$oCategory = $mCatId;
$iCatId = intval($oCategory->getId());
}
elseif(NULL !== $mCatId) // ID der Kategorie
{
$iCatId = intval($mCatId);
$oCategory = OOCategory::getCategoryById($iCatId);
}
if(NULL === $oCategory)
{
return FALSE;
}
$sPath = NULL === $sPath ? (string)$iCatId : sprintf('%s.%s', $sPath, $oCategory->getId());
foreach($oCategory->getArticles($bIOL) as $oChild)
{
if(NULL === $oChild)
{
return FALSE;
}
$iChildId = intval($oChild->getId());
if($iCatId !== $iChildId)
{
$sKey = sprintf('%s.%d', $sPath, $iChildId);
$aArticles[$sKey] = $oChild;
}
}
if(0 !== $iDepth)
{
foreach($oCategory->getChildren() as $oChild)
{
if(FALSE === getArticlesRecursive($oChild, $aArticles, $bIOL, $iDepth - 1, $sPath))
{
return FALSE;
}
}
}
return TRUE;
}
$test = array(
'category' => 3,
'ignore offlines' => FALSE,
'max depth' => -1,
'result' => FALSE,
'articles' => array(),
'articles ksorted' => array()
);
$test['result'] = getArticlesRecursive(
$test['category'],
$test['articles'],
$test['ignore offlines'],
$test['max depth']
);
$test['articles'] = array_map(create_function('$o', 'return htmlspecialchars($o->getName());'), $test['articles']);
$test['articles ksorted'] = $test['articles'];
ksort($test['articles ksorted']);
var_dump($test);
PS-EDIT-2: Allgemeiner mit "sinvollen" Array Keys!)
about: Enterprise Development