[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
REDAXO Forum • [solved] Artikelweiterleitung
Seite 1 von 1

[solved] Artikelweiterleitung

Verfasst: 30. Mär 2016, 12:57
von Tizian
hallo,
ich brauche hilfe beim umschreiben eines moduls von r4 auf r5.

alter code eingabe:

Code: Alles auswählen

REX_LINK_BUTTON[1]
alter code ausgabe:

Code: Alles auswählen

if($REX['REDAXO']!=1 && REX_ARTICLE_ID != REX_LINK_ID[1]) //wenn Frontend
{
  if ( REX_LINK_ID[1] != 0) 
  {
   rex_redirect(REX_LINK_ID[1], $REX['CUR_CLANG']);
  }
}else // wenn Backend
{
  echo "Weiterleitung zu <a href='index.php?page=content&article_id=REX_LINK_ID[1]&mode=edit'>Artikel           REX_LINK[1]</a>";
}
so funktioniert es in r5:

neuer code eingabe:

Code: Alles auswählen

REX_LINK[id="1" widget="1"]
neuer code ausgabe:

Code: Alles auswählen

<?php

$article=rex_article::get(REX_LINK[1]);
$name=$article->getName(); 

if(rex::isBackend()){
   echo '<b>Backendinfo:</b> Modul wurde eingefügt/aktualisiert<br>';
   echo "Weiterleitung zu <a href='index.php?page=content&article_id=REX_LINK[1]&mode=edit'>Artikel: ".$name." ID:".REX_LINK[1]."</a>";
}
else
{
       rex_redirect(REX_LINK[1]);
}

?>
siehe auch die weitere lösungsmöglichkeit von PXDemon unten.
danke auch dafür.

Re: Artikelweiterleitung

Verfasst: 3. Apr 2016, 13:38
von PXDemon
Hi tizian,

hast du schon eine Lösung für ein Weiterleitungs Modul?

Re: Artikelweiterleitung

Verfasst: 3. Apr 2016, 17:26
von PXDemon
Ich hab mal auf die Schnelle was erstellt. Gibt bestimmt auch andere Wege, ich selber habs aber auch nicht mit der Funktion rex_redirect hin bekommen.

Meine Weiterleitung benötigt die URL und die Art der Weiterleitung, sprich 301, 302 oder 307.
  • 301 - Moved Permanently - dauerhafte Weiterleitung / alte Url existiert nicht mehr
    303 - See Other / normale Weiterleitung
    307 - Temporary Redirect / vorübergehende Weiterleitung in Zukunft kann der Inhalt unter der aufgerufenen Url wieder zu finden sein
Ich nutze eine Header Weiterleitung in PHP, was somit erforderlich macht das der Modul-Inhalt noch vor dem ersten HTML ausgegeben wird. Hierzu habe ich ein "$this->getArticle(X)" in das Template ganz nach oben geschrieben. Das X ist zu ersetzten durch dein logische nächste Anzahl der getArticle in deinem Template. Somit kann ich nun über das Backend in einem Artikel einfach das Redirect Modul einsetzten.

Im Template also...

Code: Alles auswählen

<?php 
print $this->getArticle(3);
/* THIS WILL ONLY USED FOR HEADER REDIRECTS*/
?>
In der Modul Eingabe

Code: Alles auswählen

<div class="modItemBlock">
	<h2>Neues Ziel<span class="modRequired">*</span></h2>
    <i>Wählen Sie eine Seite im System</i><br />
    REX_LINKLIST[id=1 widget=1]
</div>

<div class="modItemBlock">
	<h2>Weiterleitungsart<span class="modRequired">*</span></h2>
	<select name="REX_INPUT_VALUE[1]" style="width:100%;">
		<?php
	    foreach (array("301","303","307") as $value) {
	        echo '<option value="'.$value.'" ';
	        if ( "REX_VALUE[1]"=="$value" ) {
	            echo 'selected="selected" ';
	        }
	        echo '>'.$value.'</option>';
	    }
	    ?>
	</select>
</div>
In der Modul Ausgabe

Code: Alles auswählen

<?
#######################################################
### PREPAIR INCOMING DATA #############################
#######################################################
$pxRedirectPageId = "REX_LINKLIST[1]";
$pxRedirectPageGetUrl = rex_category::get($pxRedirectPageId);
$pxRedirectType = "REX_VALUE[1]";

#######################################################
### PRINT BACKEND INFO ################################
#######################################################
if(rex::isBackend()){
	echo '<b>Backendinfo:</b> Modul wurde eingefügt/aktualisiert<br>';
	echo 'Ziel:'.$pxRedirectPageGetUrl->getUrl().'<br>';
	echo 'Type:'.$pxRedirectType;
}else{
header("Location: ".$pxRedirectPageGetUrl->getUrl()."", true, $pxRedirectType);
exit;
}
?>

Re: Artikelweiterleitung

Verfasst: 3. Apr 2016, 22:44
von Markus.Staab
Statt rex_redirect() ist es in R5 rex_response::sendRedirect().

Siehe https://github.com/redaxo/redaxo/blob/m ... se.php#L57

Re: Artikelweiterleitung

Verfasst: 3. Apr 2016, 22:48
von Markus.Staab

Re: Artikelweiterleitung

Verfasst: 4. Apr 2016, 09:42
von Gregor.Harlan
@Markus da hast du nun aber etwas übersehen 8)

https://github.com/redaxo/redaxo/blob/m ... hp#L57-L69

Die Funktion gibt es also weiterhin. Sie ist für Weiterleitungen zu Artikeln. Die andere Funktion ist allgemein für Weiterleitungen (gab es in R4 nicht).