[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Weiterleitung aus Kategorie - 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/
DerFrank
Beiträge: 16
Registriert: 27. Jan 2005, 19:33
Wohnort: Hamburg

Weiterleitung aus Kategorie

7. Feb 2005, 14:49

hallo,

habe folgendes modul zur weiterleitung geschrieben:
Eingabe:

Code: Alles auswählen

Die Startseite braucht kein Template, der Link geht per Location header auf die neue Seite. Alternativ beherbergt das Script noch eine Javascript Variante, die aber nicht zu empfehlen ist (PopUp Blocker...)<br />Externen Link eingeben: <input type=text size=25 class=inp100 name=VALUE[1] value="REX_VALUE[1]"><br />
Ausgabe:

Code: Alles auswählen

<?
 header("Location: REX_VALUE[1]");
 exit;
?>
<?
//oder variante mit javascript...?
echo "<script language=\"JavaScript\" type=\"text/JavaScript\">
<!--
/*window.open('REX_VALUE[1]','','');
history.back();*/
//-->
</script>";
?>
wobei der auskommentierte javascript code zur weiterleitung des links in einem neuem fenster dient.
jetzt habe ich noch folgendes problem (nicht gravierend aber unschön): wenn ich den block per übernehmen sichere, dann ist alles gut, wenn ich aber auf speichern klicke, dann erfolgt (logischerweise!) folgende fehlermeldung:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /Volumes/Daten/Webserver/actebis_redaxo/redaxo/include/layout_redaxo/top.php:20) in /Volumes/Daten/Webserver/actebis_redaxo/redaxo/include/classes/class.article.inc.php(341) : eval()'d code on line 38
da ja der header von der seite schon geschickt wurde.
fällt irgendwem ein weg ein, um diese fehlermeldung zu unterdrücken und nur den gesetzten link anzuzeigen?

danke,
frank
/*
Felix qui potuit rerum cognoscere causas* (Vergil)

*=Glücklich, wem es gelang, den Grund der Dinge zu erkennen.
*/

DerFrank
Beiträge: 16
Registriert: 27. Jan 2005, 19:33
Wohnort: Hamburg

Re: Weiterleitung aus Kategorie

7. Feb 2005, 16:25

hallo,

und selbst gelöst (dank dieses posts http://forum.redaxo.de/viewtopic.php?t=22)
lösung:
eingabe:

Code: Alles auswählen

Externen Link eingeben: <input type=text size=25 class=inp100 name=VALUE[1] value="REX_VALUE[1]"><br />
ausgabe:

Code: Alles auswählen

<?
if($REX[REDAXO]!=1){
 header("Location: REX_VALUE[1]");
 exit;
}else{
echo "Weiterleitung zu REX_VALUE[1]";
}
?>
war mir nicht über die verwendung (und exitenz :roll: ) des flags $REX[REDAXO] bewusst...
so gehts auf jeden fall. danke jedenfass an vscope für den hinweis in oben zitiertem post...

gruss,
frank
/*
Felix qui potuit rerum cognoscere causas* (Vergil)

*=Glücklich, wem es gelang, den Grund der Dinge zu erkennen.
*/

shaded
Beiträge: 7
Registriert: 7. Apr 2005, 17:03
Wohnort: Potsdam
Kontaktdaten: Website

Weiterleitung / Redirect zu internem Artikel

4. Jun 2005, 15:06

Das folgende Modul übernimmt die Weiterleitung auf einen internen Artikel per HTTP-Location-Header. Die Auswahl des Artikels erfolgt über ein Dropdown, in dem die Sitestruktur angezeigt wird. Voraussetzung: Alle Kategorien sind in einer Root-Kategorie (hier: ID 1) enthalten. (Grund: Leider lässt sich die "echte" Root-Kategorie 0 nicht als OOCategory erstellen, wäre mal eine praktische Sache für neue Versionen)

Eingabe:

Code: Alles auswählen

<p>Redirect auf gewünschten Artikel per HTTP-Location-Header.</p>
<p><strong>Für diesen Artikel darf kein Template festgelegt werden!</strong></p>

Artikel: 

<?php

function showtree($parent, $indent) {
  $n = 0;

  foreach ($parent->getArticles(true) as $article) {
    if (!$article->isStartPage()) {
      $selected = ("REX_VALUE[1]" == $article->getId()) ? 'selected="selected"' : '';
      echo '<option '.$selected.' value="'.$article->getId().'">';
      echo $indent.htmlspecialchars($article->getName()).' ['.$article->getId().']'."</option>\n";
      $n++;
    }
  }

  foreach ($parent->getChildren(true) as $cat) {
    $article = $cat->getStartArticle();
    $n++;
    $selected = ("REX_VALUE[1]" == $article->getId()) ? 'selected="selected"' : '';
    echo '<option '.$selected.' value="'.$article->getId().'">';
    echo $indent.htmlspecialchars($cat->getName()).' ['.$article->getId().']'."</option>\n";
    showtree($cat, $indent.'&nbsp;&nbsp;&nbsp;&nbsp;');
  }
}
?>

<select name="VALUE[1]">
<?php showtree(OOCategory::getCategoryById(1),''); ?>
</select> <br/>
Ausgabe:

Code: Alles auswählen

<?php 
if($REX[REDAXO]!=1){ 
  header("Location: $REX[WWW_PATH]/?article_id=REX_VALUE[1]"); 
  exit; 
}
else { 
  $art = OOArticle::getArticleById("REX_VALUE[1]");
  echo "Weiterleitung zu Artikel: ".$art->getName()." [REX_VALUE[1]]"; 
} 
?>

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

4. Jun 2005, 15:38

Übrigens würde eine javascript weiterleitung ohne PopUp folgendermaßen funktionieren:

Code: Alles auswählen

<script language="JavaScript" type="text/JavaScript">
<!--
self.location = 'REX_VALUE[1]';
//-->
</script>
shaded hat geschrieben:Voraussetzung: Alle Kategorien sind in einer Root-Kategorie (hier: ID 1) enthalten. (Grund: Leider lässt sich die "echte" Root-Kategorie 0 nicht als OOCategory erstellen, wäre mal eine praktische Sache für neue Versionen)
Warum nicht einfach per getRootCategories()?


Gruß,
Markus

shaded
Beiträge: 7
Registriert: 7. Apr 2005, 17:03
Wohnort: Potsdam
Kontaktdaten: Website

4. Jun 2005, 16:18

kills hat geschrieben:
shaded hat geschrieben:Voraussetzung: Alle Kategorien sind in einer Root-Kategorie (hier: ID 1) enthalten. (Grund: Leider lässt sich die "echte" Root-Kategorie 0 nicht als OOCategory erstellen, wäre mal eine praktische Sache für neue Versionen)
Warum nicht einfach per getRootCategories()?
Klar, nur ist das nicht "schön" im Sinne eines Objektbaums, über den REDAXO ja effektiv verfügt... Mit einer RootCategory 0 kann man rekursive Funktionen wirklich überall einsteigen lassen, und es existiert nur eine OOCategory, bei der der Aufruf von getParent() einen Fehler liefert (nämlich die mit der ID 0). Beim jetzigen Modell musst du das über isAncestor() usw abchecken. Im Endeffekt gehts nur darum, dass ein "echtes" Rootobjekt das Handling logischer und einfacher macht.

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

4. Jun 2005, 16:42

Hi,

mein Vorschlag: (ungestest & vereinfacht ohne Artikel)

Code: Alles auswählen

<p>Redirect auf gewünschten Artikel per HTTP-Location-Header.</p>
<p><strong>Für diesen Artikel darf kein Template festgelegt werden!</strong></p>

Artikel:

<?php

function showtree($cats, $indent = '') {
  $n = 0;
  if ( $cats === null || count($cats) == 0) {
    return;
  }

  foreach ( $cats as $cat) {
     echo $indent. '<option value="'.$cat->getId().'"n>'. $cat->getName() .'</option>';
     showtree( $cat->getChildren(), '   ');
  }
}
?>

<select name="VALUE[1]">
<?php showtree(OOCategory::getRootCategories()); ?>
</select> <br/> 
Gruß,
Markus

Zurück zu „Allgemeines [R2]“