[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
[gelöst] Weiterleitung auf Artikel mit nächst höheren Prio - REDAXO Forum
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/
Surkan
Beiträge: 102
Registriert: 18. Apr 2009, 15:28
Wohnort: Jena

[gelöst] Weiterleitung auf Artikel mit nächst höheren Prio

12. Mär 2010, 22:54

Hallo
ich habe ein Problem bei dem ich nicht so ganz weiterkomme:

Ich habe eine "Projekt" Kategorie in der alle 2-3 Monate ein neuer Artikel hinzukommt. Von der Startseite wird gibt es einen direkten Link zu dem Startartikel (Aktuell Projekt-1) der "Projekt"Kategorie.
Nun möchte ich aber - wenn es ein neues Projekt gibt - einen neuen Artikel erstellen (Projekt-2). Dieser soll dann auch über den direkten Link erreicht werden können (und nicht mehr der Artikel von Projekt-1).

Nun habe ich dafür zwei Ansätze:

1. Ich baue den Link von der Startseite so um, dass er immer nur auf die Kategorie verweist (und sich somit den Startartikel selber sucht). Ich müsste dann immer nur den Startartikel ändern sodass der Artikel mit dem aktuellen Projekt der Startartikel ist.
Diese Lösung finde ich nicht so toll, da es auch andere einsetzen sollen (ich glaube ich muss nicht weiter reden...)

2. Ich lasse den direkten Link von der Sartseite auf den Startartikel der "Projekt"Kategorie so wie er ist.
In den Startartikel der "Projekt"Kategorie baue ich aber Weiterleitung ein, die automatisch auf den Artikel weiterleitet der die nächst höhere Prio hat.
Sprich:
Startartikel : Prio 1
Projekt-2 : Prio 2
Projekt-1 : Prio 3
usw.
Das heißt ich müsste nur in die Prio der Artikel eingreifen um die Reihenfolge der Artikel zu bestimmen. Das halte ich für den besseren Weg. Auch um es anderen Leuten zu erklären damit die das anwenden können.

Nur:
Wo finde ich denn eine solche Weiterleitung??? Bzw. geht das überhaupt??? Und wie sieht das ganze dann aus??? Hat jemand vielleicht schon so was???

Surkan

Edit:
Ich nutze Redaxo 4.2.1
Zuletzt geändert von Surkan am 16. Mär 2010, 12:04, insgesamt 1-mal geändert.

Goldfisch
Beiträge: 230
Registriert: 22. Sep 2004, 17:47
Wohnort: Aschaffenburg
Kontaktdaten: Website

13. Mär 2010, 15:12

Weiterleitung auf den Artikel einer Kategorie mit niedrigster Prio ausser Startartikel


Ein Ansatz sowas auf redaxo.de (Doku & Downloads) zu finden:


Weiterleitung
Download - Module - Suchbegriff: Weiterleitung

http://www.redaxo.de/165-0-moduldetails ... dule_id=92


Code: Alles auswählen

if (!$REX["REDAXO"])
{
ob_end_clean();
header("Location: ".rex_getUrl("REX_LINK_ID[1]"));
exit;
}





Artikel in Kategorie, ausser Startartikel

Doku - Entwickler & Admin - 3.6 Object Oriented Framework - 3.6.1 Category - getCategoryById()
http://www.redaxo.de/350-0-getcategorybyid.html


OOCategory::getCategoryById($category_id = false, $clang = false)

$category = OOCategory::getCategoryById(2, 1)



oder


Download - Module - Artikelliste
http://www.redaxo.de/165-0-moduldetails ... dule_id=20


<?php

Code: Alles auswählen

$cat = OOCategory::getCategoryById( 5); // hier die ID der Kategorie

$articles = $cat->getArticles( true); // Alle Artikel der Kategorie auslesen, die Online sind

if ( is_array( $articles) && count( $articles) > 0) {
  echo '<ul class="article-list">';
  foreach ( $articles as $article) {
    // Den aktuellen Artikel nicht verlinken
    if ( $article->getId() == REX_ARTICLE_ID) continue;

    // Startartikel ausblenden
    if ( $article->isStartPage()) continue;

    echo '<li><a href="'.$article->getUrl().'">'.$article->getName().'</a></li>';
   
  }
  echo '</ul>';
} 
?>


damit hat man eigentlich alles beisammen

Code: Alles auswählen

<?php

$cat = OOCategory::getCategoryById($this->getValue("category_id"));
$articles = $cat->getArticles( true); 


if ( is_array( $articles) && count( $articles) > 0) {
  foreach ( $articles as $article) {
    // Den aktuellen Artikel nicht verlinken
    if ( $article->getId() == REX_ARTICLE_ID) continue;
    elseif ( $article->isStartPage()) continue;
    else {
    	$url = $article->getUrl();
    	break;
    }
  }
} 


if (!$REX["REDAXO"] && isset($url))
{
	ob_end_clean();
	header("Location: ".$url);
	exit;
}

?>

Das kann bestimmt noch eleganter machen, aber ist Weg eine Lösung hier zu finden.

Surkan
Beiträge: 102
Registriert: 18. Apr 2009, 15:28
Wohnort: Jena

14. Mär 2010, 15:23

Super - das funktioniert ohne ein Problem...

Jetzt hab ich aber ein anderes :-(

Und zwar wird jetzt von dem Startartikel auf den zweiten Artikel weiter geleitet. In dem zweiten (sowie in allen nachfolgenden Artikeln) hab ich ein Modul, mit dem ich jeweils eine Artikel vor und zurück blättern kann (in der aktuellen Kategorie).
Das Problem ist nun, dass das Modul nun auch den Startartikel auflistet der aber nur die Weiterleitung beinhaltet.

Wie kann ich denn in folgenden Code einbauen, dass der Startartikel nicht mir angezeigt wird.

Hier das Modul: http://www.redaxo.de/165-0-moduldetails ... ule_id=321

Ich denke, dass es irgendwo in dem Abschnitt eingebaut werden muss:

Code: Alles auswählen

foreach(OOArticle::getArticlesOfCategory($REX_CAT_ID,TRUE) as $a) { 
    if($a !== NULL) { 

        $id = $a->getId(); 
        $locs2[$id] = $a->getName(); 

        if($id == $REX_ARTIC_ID) { 
          $prev = $last; 
        } 
        if($last == $REX_ARTIC_ID) { 
          $next = $id; 
          //$locs2[] = $a->getName(); 
          break; 
        } 
        $last = $id; 
    } 
} 
Leider hab ich keine Ahnung davon, wie man einen Startartikel ausmacht.
Kann jemand helfen???

Danke

Goldfisch
Beiträge: 230
Registriert: 22. Sep 2004, 17:47
Wohnort: Aschaffenburg
Kontaktdaten: Website

15. Mär 2010, 18:57

stand auch in meiner antwort

$article->isStartPage()

Surkan
Beiträge: 102
Registriert: 18. Apr 2009, 15:28
Wohnort: Jena

15. Mär 2010, 21:17

Sorry wenn ich mich zu doof anstelle, aber wenn ich in mein BlätterModul

folgenden Code einbaue,

Code: Alles auswählen

if ($a->isStartPage()) { 
   exit;
   }
dann zeigt er gar nichts an. Weder einen Artikel vor noch einen Artikel zurück.
Ich hab leider nicht so viel Ahnung, aber wo in dem Modul muss ich den Code einbauen???

Hier mal der komplette Modul Code

Code: Alles auswählen

<?php 
$REX_CAT_ID = $this->getValue('category_id'); 
$REX_ARTIC_ID = $this->getValue('article_id'); 
$modVariante = 2; // 1 = Ausgabe Standardtext ; 2 = Ausgabe Artikelname;
// Bezeichnung für Vor- bzw. zurück kann geändert werden
$locs1 = array('vorheriger Artikel','n&auml;chster Artikel');
// ####### Ab hier keine &Auml;nderung notwendig  ####### //
$locs2 = array(); 
$deli = ''; 
$prev = 0; 
$next = 0; 
$last = 0; 

foreach(OOArticle::getArticlesOfCategory($REX_CAT_ID,TRUE) as $a) { 

    if($a !== NULL) { 
        $id = $a->getId(); 
        $locs2[$id] = $a->getName(); 

        if($id == $REX_ARTIC_ID) { 
          $prev = $last; 
          } 
        if($last == $REX_ARTIC_ID) { 
          $next = $id; 
          //$locs2[] = $a->getName(); 
          break; 
          } 
        $last = $id; 
    } 
} 

if ($modVariante == 1) {
  $prevVariante = $locs1[0];
  $nextVariante = $locs1[1];
  }
elseif ($modVariante == 2) {
  $prevVariante = '&nbsp;<img src="'.$REX[HTDOCS_PATH].'/files/back.gif" width="7" alt="<" border="0" height="11"/>&nbsp;'.$locs2[$prev].'&nbsp;';
  $nextVariante = '&nbsp;'.$locs2[$next].'&nbsp;<img src="'.$REX[HTDOCS_PATH].'/files/next.gif" width="7" alt=">" border="0" height="11"/>&nbsp;';

}
if($prev != 0) 
  printf('<div class="back"><br/><a id="back" href="%s">%s</a></div>',rex_getUrl($prev),$prevVariante); 
if($next != 0) { 
  if($prev != 0) echo $deli; 
  printf('<div class="next"><br/><a id="next" href="%s">%s</a></div>',rex_getUrl($next),$nextVariante);  
} 

unset($id,$a,$last,$next,$prev,$deli,$locs1,$locs2); 
?>
Thx

Surkan
Beiträge: 102
Registriert: 18. Apr 2009, 15:28
Wohnort: Jena

16. Mär 2010, 12:04

Danke - gelöst

Code: Alles auswählen

    if($a !== NULL && !$a->isStartPage() ) {
Surkan

Zurück zu „Allgemeines [R4]“