web-dev-qa-db-fra.com

Obtenir les paramètres de template depuis template.css.php

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');


    ?>
5
webchun

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(); ?>
1
Adam Foster