[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Problem Modulausgabe im BE > Blöcke nach Editieren weg - 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/
Aemilia
Beiträge: 136
Registriert: 6. Jul 2007, 12:14
Wohnort: Friedrichsdorf
Kontaktdaten: Website Facebook

Problem Modulausgabe im BE > Blöcke nach Editieren weg

27. Apr 2016, 13:41

Hey liebe Community,

ich hab einen seltsamen Bug und bräuchte hier mal eure Unterstützung... :|
Folgendes Verhalten:

Ich habe ein Modul in dessen Ausgabe ich via if ($REX['REDAXO'] == true) für Backend und Frontend unterscheide. Klappt auch einwandfrei. Zumindest, bis ich einen vorhandenen Block innerhalb der Artikelblöcke editiere (egal welchen). Speichere ich den geänderten Block, so sind alle anderen Blöcke in der Backenddarstellung auf einmal weg. Die Spaltenanzeige und auch die Funktionen, Metadaten etc. rechts verschwinden. Neu anlegen & Block löschen = Geht alles fehlerfrei.

Gehe ich dann erneut auf den Artikelinhalt (über die Struktur), so sind die Blöcke wieder da. Das betrifft also nur den unmittelbaren Zustand nach dem edit (redaxo/index.php#sliceXXXX).

Innerhalb der Modulausgabe für das Frontend habe ich eine php-Funktion drin, um mir die Slices des aktuellen Artikels auszulesen (getSortedSlices). Diese Funktion funktioniert im FE einwandfrei. Ich habe auch zum Testen die Funktion sowohl in der Modulausgabe selbst, als auch in einem weiteren Versuch über nen include so reingesetzt, dass die Funktion definitiv vorhanden ist. Egal ob FE oder BE. Nichts hilft...

Habe auch testweise sowohl im BE als auch im FE die Listenausgabe reingesetzt, gleiches Verhalten...

Hier meine Modulausgabe (Eingabe ist leer):

Code: Alles auswählen

<?php
if ($REX['REDAXO'] == true) {
	echo '<p>Dynamische Ausgabe</p>';
	
}else{
	$article_id = $this->getValue('article_id');
	$allSlicesSorted = getSortedSlices($article_id, 0, 12);
	echo '<div id="specsubnav"><ul>';
	foreach($allSlicesSorted as $slice){
			echo '<li><a href="'.rex_getUrl($article_id).'#'.$slice->getValue('id').'">';
			echo $slice->getValue(1);
			echo '</a></li>';
	}
	echo '</ul></div>';
}
?>
Könnt ihr mir sagen, wieso während der Situation – "Block editiert > Speichern / übernehmen" > Feedback, dass Block editiert worden ist – die Modulausgabe scheinbar nicht korrekt zwischen FE und BE unterscheidet? Leider hat das zur Verfügung stellen der Funktion selbst sowohl in BE und FE nicht geholfen...

hier noch die Funktion, die in der Ausgabe aufgerufen wird (und im FE & BE in allen anderen Zuständen fehlerfrei funktioniert):

Code: Alles auswählen

function getSortedSlices($articleId, $clang = false, $moduleId = 0) {
    $slices = array();
    $slicesTmp = OOArticleSlice::getSlicesForArticle($articleId, $clang);
    if ($slicesTmp) {
        if (is_array($slicesTmp)) {
            $sliceMap = array();
            $sliceRefMap = array();
            foreach ($slicesTmp as $slice) {
                $sliceMap[$slice->getId()] = $slice;
                $sliceRefMap[$slice->_re_article_slice_id] = $slice->getId();
            }
            $nextSlice = $sliceMap[$sliceRefMap[0]];
            while ($nextSlice) {
                $slices[] = $nextSlice;
                if (!isset($sliceRefMap[$nextSlice->getId()])) {
                    break;
                }
                $nextSlice = $sliceMap[$sliceRefMap[$nextSlice->getId()]];
            }
        } else {
            $slices = array($slicesTmp);
        }
    }
    if ($moduleId > 0) {
        $moduleSlices = array();
        foreach($slices as $slice) {
            if ($slice->getModuleId() == $moduleId) {
                $moduleSlices[] = $slice;
            }
        }
        return $moduleSlices;
    } else {
        return $slices;
    }
}
Hatte auch die Vermutung, dass es doch nicht mit diesem Modul zusammenhängt, aber der Fehler verschwindet, wenn ich die Ausgabe leere, den Block entferne oder auch nur den Kram im else-Bereich raus nehme...

Interessanter Weise kann ich das nur bei "alten" Artikel beobachten. Wenn ich einen neuen Artikel anlege, dann habe ich den Fehler nicht... Habt ihr noch Ideen, wo ich suchen kann?

Hüülfe... *-*

Aemilia
Beiträge: 136
Registriert: 6. Jul 2007, 12:14
Wohnort: Friedrichsdorf
Kontaktdaten: Website Facebook

Re: Problem Modulausgabe im BE > Blöcke nach Editieren weg

3. Mai 2016, 17:40

Hey Leutz :)

ich bin nach wie vor auf der Suche und habe folgendes Verhalten festgestellt:

Kopiere ich einen "beschädigten" Artikel, funktioniert die Editiererei einwandfrei. Wandle ich die Kopie dann in einen Startartikel um, tritt der Fehler wieder auf.

Im umgekehrten Fall reagiert der "alte" Startartikel nach der "Degradierung" zu einem normalen Artikel ebenfalls wieder korrekt.

Ändere ich alles wieder zurück, dann ist wieder der Startartikel der, der den Fehler hat, die Kopie dann wieder nicht.

Es scheint irgendwie mit dem Status "Startartikel" zu tun zu haben... Wenn ihr da noch ne Idee habt... Gerne her damit ^^

Zurück zu „Allgemeines [R4]“