[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Artikel einbinden - Verschachtelung - Schleife vermeiden - 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/
netmanix

Artikel einbinden - Verschachtelung - Schleife vermeiden

16. Dez 2015, 12:48

Hallo,

ich verwende folgenden Code um einen Artikel einzubinden.
Wie könnte ich bei mehrfachen Einbindungen eine Schleife vermeiden?

Ein Redakteur hat es geschafft einen Artikel einzubinden in dem wieder ein Artikel eingebunden ist,
in dem wiederrum der Urpsprungsartikel eingebunden ist.

So entsteht eine Schleife, die zu einer leeren Seite führt.

Code: Alles auswählen

<?php 
if("REX_ARTICLE_ID" != "REX_LINK_ID[4]" && "REX_LINK_ID[4]"!="")
{
  if ("REX_LINK_ID[4]" != 0) 
  {
    $embarticle = new article("REX_LINK_ID[4]");
    $embarticle->setClang($REX['CUR_CLANG']); 
    if ($embarticle != null) 
    {
      echo $embarticle->getArticle(1); 
    } 
    else { } 
  }
}
 ?>

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Artikel einbinden - Verschachtelung - Schleife vermeiden

22. Dez 2015, 17:21

Hi,

du kannst folgende Aktion einbinden (Presave, Add+Edit):

Code: Alles auswählen

<?php
function checkembedcircle_REX_SLICE_ID($_article_id)
{
  global $REX;
  
  static $article_ids = array();
  
  if(empty($article_ids))
    $article_ids[] = $REX['ARTICLE_ID'];
  
  if(empty($_article_id))
    return true;
  
  if(in_array($_article_id, $article_ids))
    return false;
  
  $article_ids[] = $_article_id;
  
  $slices = OOArticleSlice::getSlicesForArticleOfType($_article_id, REX_MODULE_ID, $REX['CUR_CLANG']);
  
  if(is_null($slices))
    return true;
  
  if(!is_array($slices)) $slices = array($slices);
  
  foreach($slices as $slice)
  {
    return checkembedcircle_REX_SLICE_ID($slice->getLink(4));
  }
}

if(!checkembedcircle_REX_SLICE_ID($REX_ACTION['LINK'][4]))
{
  $REX_ACTION['SAVE'] = false;
  $REX_ACTION['MSG'] = 'Zirkeleinbettung!';
}
?>
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

netmanix

Re: Artikel einbinden - Verschachtelung - Schleife vermeiden

23. Dez 2015, 15:25

Super! Danke. :D
Schöne Feiertage wünsche ich.

Zurück zu „Allgemeines [R4]“