Es können keine (Site-) Vorlagenparameter aus dem Backend meines Moduls abgerufen werden

Nov 20 2020

Jemand von stackoverflow empfiehlt, die Frage hier zu stellen. Ich entschuldige mich, wenn dies als Cross-Posting angesehen wird.

ÜBERBLICK

Ich entwickle eine Reihe von benutzerdefinierten Vorlagen und eine Reihe von benutzerdefinierten Modulen.

Die Vorlagen sind unterschiedlich, aber ihre Parameter (definiert in templateDetails.xml) bleiben identisch.

Ich möchte, dass die Standardvorlage (Site) ihre Parameterwerte an eine Zwischendatei, variables.css.php, sendet

variables.css.php befindet sich derzeit in ../media/cms/css (nicht sicher, ob es an einem anderen Ort sein muss)

Der Zweck hierfür ist, dass die Module auch dann, wenn ich zwischen Vorlagen wechsle, die Parameterwerte an derselben Stelle finden können.

Auch hier können sich die Parameterwerte ändern, die Parameter selbst (Farbe1, Farbe2 usw.) jedoch nicht.

Ich habe ein Diagramm beigefügt, das hoffentlich zur Veranschaulichung beitragen wird:

Ich möchte, dass das Backend des Moduls die Parameterwerte erhält, damit ein Administrator sehen kann, welche Farbe er bei der Konfiguration der Module auswählt.

Das heißt, die Hintergrundfarbe einer Schaltfläche auf der Konfigurationsseite des Moduls stimmt mit der in templateDetails.xml definierten Farbe überein.

Ich habe eine Arbeitsvorlage erstellt.

Ich habe variables.css.php erstellt:

<?php
define( '_JEXEC', 1 );
define( '_VALID_MOS', 1 );
define( 'JPATH_BASE', realpath(dirname(__FILE__).'/../../..' ));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$app = JFactory::getApplication('site'); // $app->initialise();
$defaultTemplate = $app->getTemplate(true);
$params = $defaultTemplate->params;

header("Content-Type:text/css; charset=UTF-8");
header("Cache-Control:must-revalidate");
?>

.bg01 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color01'); ?>; } .bg02 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color02'); ?>; }
.bg03 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color03'); ?>; } .bg04 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color04'); ?>; }
.bg05 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color05'); ?>; } .bg06 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color06'); ?>; }
.bg07 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color07'); ?>; } .bg08 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color08'); ?>; }
.bg09 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color09'); ?>; } .bg10 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color10'); ?>; }
.bg11 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color11'); ?>; } .bg12 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color12'); ?>; }
.bg13 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color13'); ?>; } .bg14 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color14'); ?>; }
.bg15 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color15'); ?>; } .bg16 {text-shadow: 0px 0px 4px #000; color: #fff; background-color:<?php echo $params->get('color16'); ?>; }

Und ich habe ein Arbeitsmodul gebaut. Das Modul lädt mit diesem Trick die Datei variables.css.php

DAS PROBLEM

Das Problem ist, wenn ich in das Backend des Moduls gehe, sehen die Konfigurationsschaltflächen so aus

Wann sie so aussehen sollten

Wenn ich Chrome verwende, um die Konfigurationsseite des Moduls zu überprüfen, finde ich Folgendes:

.bg01 {
    text-shadow: 0px 0px 4px #000;
    color: #fff;
    background-color: ;
}

Ich weiß, dass das Modul variables.css.php lädt - weil es die Textschatten- und Farbwerte anzeigt. Die Hintergrundfarbe ist jedoch leer.

Dies bedeutet, dass die Parameterwerte in variables.css.php leer sind.

Hier brauche ich Hilfe.

Ich gehe davon aus, dass der Code (über dem CSS) in variables.css.php falsch ist.

Jede Hilfe wird sehr geschätzt!

Antworten

Bold Nov 20 2020 at 20:14

Nach viel Frust habe ich das Problem schließlich auf einen Tippfehler in der templateDetails.xml zurückgeführt. Nachdem ich das behoben hatte, funktionierte der oben beschriebene Code / die oben beschriebene Methode, und das Schaltflächen-Styling im Backend des Moduls erschien in seiner ganzen bunten Pracht.