Seite 1 von 2

content_article_include tut nichts

Verfasst: Fr 3. Mai 2019, 09:26
von Faar
Moin,
ich (will) benütze ausnahmsweise mal das Modul content_article_include und dann funktioniert es nicht.
Der blaue Button ist da, aber klicke ich darauf, tut sich nichts.
Keine Error-Meldung im Log, keine Meldung in der Konsole.
Es öffnet sich einfach kein Popupfenster.

Beim content_teaser Modul funktioniert es, also ein genereller Fehler dürfte es nicht sein.

Re: content_article_include tut nichts

Verfasst: So 5. Mai 2019, 18:52
von McHubi
Hallo Faar,

kann ich nicht bestätigen. Ich habe das Modul einfach mal auf einer Testseite eingeklinkt und beim Klick auf das Icon öffnet sich die Konfiguration zur Auswahl der Kategorie und des Artikels. Ich hab eine frische 4.10.0er Installation und das Ganze im Firefox getestet.

Re: content_article_include tut nichts

Verfasst: Mo 6. Mai 2019, 08:52
von Faar
McHubi hat geschrieben:
So 5. Mai 2019, 18:52
kann ich nicht bestätigen. Ich habe das Modul einfach mal auf einer Testseite eingeklinkt und beim Klick auf das Icon öffnet sich die Konfiguration zur Auswahl der Kategorie und des Artikels. Ich hab eine frische 4.10.0er Installation und das Ganze im Firefox getestet.
Hallo Hubi,
ich habe eine geupdatete 4.10 Installation und auch Firefox und bei mir tut es das eben nicht. :(

Re: content_article_include tut nichts

Verfasst: Mi 8. Mai 2019, 14:27
von McHubi
Mal eine Vorlage mit ausschließlich diesem Modul angelegt und wenn's dann klappt Stück für Stück mit den anderen Modulen auffüllen?

Re: content_article_include tut nichts

Verfasst: Fr 10. Mai 2019, 10:19
von homtata
Es könnte sein, dass das spinnt, je nachdem was im Layout oder durch Module an welcher Stelle an JS-Code eingeklemmt ist. Das kann sich mit dem JS des Backends beißen, das hier mit dazu gerendert wird. Schau mal in diese Richtung, ich denke, dass es daran liegt.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 09:51
von Faar
Da spinnt definitiv etwas, denn dieses Modul leert auch $idcat und $idart und vielleicht noch andere Variablen.
Wegen diesem Modul ging mein Level 2 Menü nicht mehr, da es in der tatsächlichen Reihenfolge im Layout als fast letztes Modul kam.

In Zeile 258 und 259 findet sich das da:

Code: Alles auswählen

        $idart = $_bakArticleId;
        $idcat = $_bakCategoryId;
Und vorher in 203 und 202 auch schon direkte Zuweisungen in diese globalen Variablen.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 10:01
von homtata
Okay... dann ist es besser, nicht darauf zu vertrauen, dass diese Variablen den Wert hat, den Contenido ihnen zuweist, sondern sie an der nötigen Stelle neu zu instanzieren aus ihren tatsächlichen Werten, im Stil von:

$lang = cRegistry::getLanguageId();
$idcat = cRegistry::getCategoryId();
$idart = cRegistry::getArticleId();
usw...

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 10:14
von Faar
Moin.
Wenn Du schaust, wie cRegistry::getCategoryId(); die idcat holt, wirst du feststellen, dass die globale $idcat der Ursprung ist.
Dein Code sieht in Wahrheit dann so aus:

Code: Alles auswählen

$lang = $lang;
$idcat = $idcat;
$idart = $idart;
Außer die Variable hat keinen Inhalt, dann sieht sie so aus:

Code: Alles auswählen

$lang = 0;
$idcat = 0;
$idart = 0;
Das liegt daran, dass cRegistry::getCategoryId() bei $idcat = "" eine 0 zurück gibt.
Der Fehler liegt eindeutig daran, dass ein Modul die globalen Variablen überschreibt.

Da bei mir das Modul noch nicht läuft, weil der blaue Button noch nicht geht (Javascript Kollission?), gibt es aus der Datenbank auch keine Ergebnisse ab Zeile 191.
$includeCatId = $db->f("idcat"); wird also nie true, folglich gibt es die $includeCatId noch gar nicht, wenn in Zeile 203 zugewiesen wird:
$idcat = $includeCatId;
Da ist dann ein leeres "" in $idcat für alle nachfolgenden Prozesse und Module.

Dieser erste Fehler wäre noch nicht so fatal, wenn $idcat = $_bakCategoryId; in Zeile 259 nicht falsch verschachtelt wäre.
Denn das steckt in einer weiteren if-Klammer, die Mangels ausgewählter Artikel nicht wahr wird und folglich die letzte Zuweisung auch nie stattfindet.
Denn in Zeile 201 hat jemand sinnvollerweise die gültige $idcat gespeichert: $_bakCategoryId = cRegistry::getCategoryId();
Nur wird sie dank der falschen Verschachtelung nie mehr zurück gespeichert.
Es wird im ganzen Modul nie daran gedacht, dass auch mal kein Artikel ausgewählt sein könnte und mal keine Ergebnisse in den Varaiblen stehen könnten, oder überhaupt die Variable definiert wird.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 11:19
von homtata
Dann musst du anders vorgehen und im Modul content_article_include zuvor die globalen Variablen zwischenspeichern in andere Variablen und später im Modul wieder neu $idart und $idcat zuweisen.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 11:33
von Faar
homtata hat geschrieben:
Do 16. Mai 2019, 11:19
Dann musst du anders vorgehen und im Modul content_article_include zuvor die globalen Variablen zwischenspeichern in andere Variablen und später im Modul wieder neu $idart und $idcat zuweisen.
Das macht doch dieses Modul bereits.
Ab Zeile 200 wird gesichert und ab Zeile 258 wird die Sicherung wieder zugewiesen.
Nur sollte es ab Zeile 263 vor der letzten Klammer stehen und nicht in 258.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 12:28
von homtata
Ich würde sogar lieber sehen, wenn die backup-Variablen oben gleich mitinstanziert werden, also eher:

Code: Alles auswählen

// Init vars and objects
$curContainerId = $cCurrentContainer;
$languageId = cRegistry::getLanguageId();
$clientId = cRegistry::getClientId();
$cfg = cRegistry::getConfig();
$db = cRegistry::getDb();
$tpl = cSmartyFrontend::getInstance();
$saved = false;
$_bakArticleId = cRegistry::getArticleId();
$_bakCategoryId = cRegistry::getCategoryId();
und NACH der letzten Klammer, ganz am Ende des Moduls, wieder zurückgeschrieben wird. Egal ob das Modul etwas tut oder nicht, es geht sicherheitshalber hinten mit der Neuinstanzierung zu Ende.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 12:29
von homtata
Faar, das ist somit ein Modulbug. Kannst du das entsprechend melden/vermerken oder xmurrix sonstwie darauf aufmerksam machen?

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 13:18
von Faar
Xmurrix habe ich es schon gemeldet aber ich müsste noch ein Issue aufmachen. Das kann er aber schneller und besser als ich oder ich muss mich da reinfuxen.
Vorher muss ich aber das YAML-Menü :( umgestalten und dann die content_article_include zum laufen bringen, denn es geht bei mir der Button ja noch nicht. Vielleicht finde ich da drin noch mehr Fehler, die gleich mitbehandelt gehören.

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 15:04
von Faar
Der Blaue Button
In der Konsole wird ein Fehler bei main-php 314:23 angezeigt:
Leerer String an getElementById() übergeben.
Hat vielleicht nichts damit zu tun.

Im Seitenquelltext findet sich folgendes:

Code: Alles auswählen

<img src="http://.../contenido/images/article_include.png" alt="" class="cms_abstract_img cms_teaser_img" id="article_include_62" style="cursor: pointer;" />

<script>
(function($) {
    $('.content_article_include .popup_opener img#article_include_62').click(function() {
        var holder = $(this).parent().parent().find('#article_include_container_62');
        holder.css("top", $(this).offset().top + holder.height() + (holder.height()/2) + 'px');
        holder.css("left", $(this).offset().left + (holder.width()/2) + 'px');
        holder.show();
    });
 ...
Die Reihenfolge .content_article_include .popup_opener img#article_include_62 stimmt, aber es tut nichts.
Kann es an den ' statt " liegen?

Re: content_article_include tut nichts

Verfasst: Do 16. Mai 2019, 15:39
von Faar
Ok, das position:absolute; im Element-CSS des article_include_container62 macht Probleme, denn das Popup ist da, aber außerhalb des Bildschirms.

Code: Alles auswählen

Element {
    position: absolute;
    top: 611.85px;
    left: 1304.17px;
    display: block;
}
Der Abstand left: 1304.17px; bezieht sich auf irgendein HTML-Element eher rechts im Bildschirm, so dass das Modul-Popup dadurch viel zu weit rechts ist und außerhalb des sichtbaren Bereiches.
Wenn ich statt 1304 eine 100 eintrage, sehe ich das Popup.
Oder wenn ich statt absolute ein fixed eintrage.

Tatsache ist, dass mein Browserfenster kleiner ist als der Bildschirm (3800Pixel) und der Abstand links vom Browserfensterrand mit 1304Pixel schon stimmen würde, in der normalen Ansicht im Browser.
Aber nicht mehr in der Editor-Ansicht, wo links der Artikelbaum-Frame ist.
Und schon gar nicht, wenn der Abstand von irgendeinem HTML-Element aus berechnet wird, in diesem Fall ist es in etwa die rechte Leiste mit News und eben dem vorgesehen Artikel-Inklude.
Eigentlich müsste dann der Abstand 0px sein, dann passt es auch.

Wenn ich mittels Debugger das CSS so hinbiege, dass das Formular erscheint, kann ich zwar etwas einstellen aber es erscheint in der Seite trotzdem nichts.
Was ist das eigentlich für ein Modul?