Je crée un modèle joomla à l'aide de blank modèle de démarrage joomla. Le modèle joomla vide contient un fichier appelé template.css.php qui combine et compresse plusieurs fichiers CSS de modèle en un seul fichier de sortie pour réduire la demande http. Ce template.css.php est accessible directement à partir du navigateur (accès direct) et renverra une sortie en code CSS compressé.
Pour certaines raisons, je dois appeler mes paramètres de modèle depuis l’intérieur de template.css.php, mais lorsque j’essaie d’obtenir des paramètres de modèle, le fichier template.css.php n’est plus disponible pour un accès direct. Il retournera une page vierge.
Une idée comment obtenir ce travail?
Voici la version modifiée de mon fichier template.css.php:
<?php
/* modified code START */
require_once ( '../../../includes/defines.php' );
require_once ( '../../../includes/framework.php' );
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$params = $app->getParams();
$pageclass = $params->get('pageclass_sfx');
/* modified code END */
// initialize ob_gzhandler to send and compress data
ob_start ("ob_gzhandler");
// initialize compress function for whitespace removal
ob_start("compress");
// required header info and character set
header("Content-type:text/css; charset=UTF-8");
// cache control to process
header("Cache-Control:must-revalidate");
// duration of cached content (1 hour)
$offset = 60 * 60 ;
// expiration header format
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s",time() + $offset) . " GMT";
// send cache expiration header to broswer
header($ExpStr);
// begin function compress
function compress($buffer) {
// remove comments
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
// remove tabs, spaces, new lines, etc.
$buffer = str_replace(array("\r\n","\r","\n","\t",' ',' ',' '),'',$buffer);
// remove unnecessary spaces
$buffer = str_replace('{ ', '{', $buffer);
$buffer = str_replace(' }', '}', $buffer);
$buffer = str_replace('; ', ';', $buffer);
$buffer = str_replace(', ', ',', $buffer);
$buffer = str_replace(' {', '{', $buffer);
$buffer = str_replace('} ', '}', $buffer);
$buffer = str_replace(': ', ':', $buffer);
$buffer = str_replace(' ,', ',', $buffer);
$buffer = str_replace(' ;', ';', $buffer);
$buffer = str_replace(';}', '}', $buffer);
return $buffer;
}
// uikit.css
require('uikit.min.css');
require('uikit/slider.css');
require('uikit/slidenav.css');
// template css
require('template.css');
// load system stylesheets for system messages and default buttons
require('../../../media/system/css/system.css');
require('../../system/css/system.css');
require('../../system/css/general.css');
?>
Cela fonctionnera pour vous avec Joomla 3.
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', '../../../..' );//point to joomla root
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();
$template = $app->getTemplate(true);
$params = $template->params;
header("Content-Type:text/css; charset=UTF-8");
header("Cache-Control:must-revalidate");
$offset = 60 * 60 ; // 1 hour
$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s",time() + $offset) . " GMT";
header($ExpStr);
ob_start("compress");
function compress($buffer) {
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' '), '', $buffer);
$buffer = str_replace(array(', ', ' {'), array(',', '{'), $buffer);
return $buffer;
}
?>
body {background-color: <?php echo $params->get("templateBackgroundColor"); ?>;}
<?php ob_end_flush(); ?>