[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
structure_separators - 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/
Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

structure_separators

26. Dez 2015, 13:20

Hallo Zusammen,

jdlx hatte mal für REX 4 ein be_sytel Plugin gebaut welches eine gesonderte Formatierung von Kategorien ermöglicht.

Hier ist der Code der mit REX 4 funktioniert:

Code: Alles auswählen

if(rex_request('page','string')=='structure'){
  rex_register_extension('OUTPUT_FILTER',
    function($params) use($REX){
      if(!isset($params['subject']) || $params['subject']==''){   // Das fehlt mir!
        return;
      }
      $dom = new DOMDocument();
      $dom->loadHTML($params['subject']);
      $xpath = new DOMXpath($dom);
      $TRs = $xpath->query(".//*[@id='rex-output']/table/tbody/tr");
      if (!is_null($TRs)) {
        foreach ($TRs as $TR) {
          $TDs = $TR->childNodes;
          foreach ($TDs as $TD) {
            if(substr($TD->nodeValue,0,10) == 'separator:'){
              #$TR->setAttribute('class','separator '.strtolower(preg_replace('/[^a-z-]/i','',$TD->nodeValue)));
              $TR->setAttribute('class','separator');
              foreach($TD->getElementsByTagName('a') as $A){
                $A->nodeValue = str_replace('separator:','',$A->nodeValue);
              }
              continue;
            }else{
              continue;
            }
          }
        }
      }
      $html = $dom->saveHtml();
      return $html;
    }
  );
}
Ich versuche gerade das für REX 5 zu übernehmen.

Wenn ich in einem Addon in der boot.php z.B. das schreibe

Code: Alles auswählen

if (rex::isBackend()) {
   if(rex_request('page','string')=='structure'){
    rex_extension::register('OUTPUT_FILTER',
      function(rex_extension_point $ep){

         $dom = new DOMDocument();
        @$dom->loadHTML($ep->getSubject());  // Warnings unterdrückt wegen Element: nav
        $dom->validate();
        $xpath = new DOMXpath($dom);

        $TRs = $xpath->query(".//table/tbody/tr");
        if (!is_null($TRs)) {
          foreach ($TRs as $TR) {
            $TDs = $TR->childNodes;
            foreach ($TDs as $TD) {
              if(substr($TD->nodeValue,0,10) == 'separator:'){
                $name = str_replace('separator:','',$TD->nodeValue);
                $TR->setAttribute('class','separator');
                $TD->nodeValue = $name;
                continue;
              }else{
                continue;
              }
            }
          }
        }
        $TRs = $xpath->query('.//tr[@class="separator"]');
          if (!is_null($TRs)) {
            foreach ($TRs as $TR) {
              $TDs = $TR->childNodes;
              $counter = 0;
              $replace = array(1,3,7);
              foreach ($TDs as $TD) {
                $counter++;
                if(in_array($counter,$replace)) {
                  $TD->nodeValue= ' ';
                }
              }
            }
          }
        $html = $dom->saveHtml();
        $ep->setSubject($html);
        }
      );
    }
  // rex_view::addCssFile($this->getAssetsUrl('css/be5plus.css'));
}
funktioniert es soweit wie gewünscht. Die fehlenden CSS Angaben sind grad nicht wichtig.
Leider fällt das Dingen auf die Nase sobald eine Kategorie angeklickt oder geändert wird.

Ich vermute entweder, dass ich hier ein jpax oder ein DOM Problem habe.
Es wäre toll, wenn Ihr einen Tipp hättet.

Was mir in "meinem" Code fehlt ist das hier:
(Das habe ich nicht umsetzten können)

Code: Alles auswählen

 if(!isset($params['subject']) || $params['subject']==''){
        return;
      }

Hier noch ein Bild wie es später aussehen soll:

[ externes Bild ]

Viele Grüße
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Frage zu structure_separators

9. Mai 2016, 11:05

So. Dank Thomas Blum gibt es jetzt das Plugin Structure Separator für das Out5 Addon im Installer und hier:
https://github.com/olien/out5

LG
Oliver

Idee und ursprüngliche Entwicklung von jdlx
http://www.redaxo.org/de/forum/post1050 ... or#p105022
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Zurück zu „AddOns / Packages [R5]“