Simplification du code

cpalocpalo Member
12 oct. modifié dans Entraide

Bonjour
Mon dossier thèmes
themes
--> assets
--> theme1
--> theme2
Dans header.php :

<link rel="stylesheet" href="<?= $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']) ?>assets/framework/base.css">
<link rel="stylesheet" href="<?php $plxShow->template(); ?>/css/theme.css"> 
<link rel="stylesheet" href="<?= $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']) ?>assets/fonts/fontawesome/css/fontawesome.css">

Dans footer.php

script>
if (typeof jQuery == "undefined") { 
    document.write('<script src="<?= $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']) ?>assets/libs/jquery-3.5.1.js"><\/script>');
}
</script>
<script src="<?php $plxShow->template(); ?>/js/theme.js"></script>
<script src="<?= $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']) ?>assets/vendors/prism/prism.js"></script>

Par quoi pourrai-je remplacer

<?= $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']) ?>

afin que cela soit plus court à ré-utiliser?

Réponses

  • 12 oct. modifié

    Bonjour,

    peut-être en utilisant une constante dans le premier fichier commun de ton/tes thémes:

    ROOT_THEMES = $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']);
    

    ensuite <?= ROOT_THEMES ?> devrait être plus court à réutilisé et compréhensible.

    Pas tester , mais devrait se suffire :)
    Cdt

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • cpalocpalo Member
    12 oct. modifié

    Effectivement... et cela fait resurgir mon ancien post sur comment inclure des constantes personnalisées. Et solutions que j'avais un peu oubliées.
    Le problème que je rencontre, c'est dès que j'entre la définition de la constante, cela provoque une page blanche de pluxml.

    <?php if (!defined('PLX_ROOT')) exit; ?>
    
    <?php
    const ROOT_THEMES = $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']);
    ?> 
    
    <!DOCTYPE html>
    
  • 12 oct. modifié

    Ah zut! mais bien sur, il faut l'injecter dans le code avant de traiter les template, j'opterais dans ou plutôt avant avant le prechauffage , il te faut bricoler un plugin avec un seul hook (Index ou IndexBegin ) et une seule ligne pour injecter la constante (des que plxShow et plxMotor sont dispos) ;)

    Cdt

    Edit : Une variable est aussi suffisante,
    exemple de plugin minimal :

    <?php
        if(!defined('PLX_ROOT')) {
            die('oups!');
        }
        class themeSroot extends plxPlugin {
            const HOOKS = array(
                'IndexBegin',
            );
            const BEGIN_CODE = '<?php' . PHP_EOL;
            const END_CODE = PHP_EOL . '?>';
    
            public function __construct($default_lang) {
            # appel du constructeur de la classe plxPlugin (obligatoire)
            parent::__construct($default_lang);
    
            # Ajoute des hooks
            foreach(self::HOOKS as $hook) {
                $this->addHook($hook, $hook);
            }
        }
            #variable chemin themes
        public function IndexBegin() {
            echo self::BEGIN_CODE;
    ?>
    $rootStheme =  $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']);   
    <?php
               echo self::END_CODE;
        }
     }
    ?>
    

    et de l'autre coté ça donne : <?= $rootStheme; ?> , plus court à l'usage :)

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

  • cpalocpalo Member
    12 oct. modifié

    Merci
    je ne pensais pas retravailler sur un petit plugin tout de suite. Mais voilà une bonne occasion pour en refaire un.
    Ce plugin injecterai le code dans index.php?
    Par contre ce que je ne comprends pas, c'est que normalement en début du header.php on doit pouvoir déclarer des constantes?
    Cordialement

  • On ne peut pas utiliser la directive "const" pour évaluer une constante à partir d'une valeur variable à l'exécution.
    Il faut utiliser la fonction "define" :
    https://www.php.net/manual/fr/function.define
    https://www.php.net/manual/fr/language.constants.syntax.php

    <?php
    if(!defined('PLX_ROOT')) {
        die('oups!');
    }
    
    define('ROOT_THEMES', $plxShow->plxMotor->urlRewrite($plxShow->plxMotor->aConf['racine_themes']));
    ?>
    

    const évalue une constante à la compilation.

  • cpalocpalo Member

    @bazooka07
    Bonsoir
    Oups!! Merci pour ce rappel. Cela fonctionne correctement maintenant.
    Content de te revoir sur le forum.
    Cordialement

  • cpalocpalo Member
    13 oct. modifié

    Oups...erreur d'envoi

  • On peut aussi utiliser directement la variable $plxMotor déclaré dans index.php :

    <?php
    if(!defined('PLX_ROOT')) {
        die('oups!');
    }
    
    define('ROOT_THEMES', $plxMotor->urlRewrite($plxxMotor->aConf['racine_themes']));
    ?>
    
  • Ayden29Ayden29 Member

    Moi, j’ai remarqué que lorsque je passe un objet par référence à une fonction, cet objet est constant.

  • et moi j'avais complétement zappé les ob_start();et CIE et surtout totalement ignoré le define()
    Petite question simple au départ qui s’avère bien plus . Merci @cpalo

    Remise en ligne et test de mon vieux site re7net.com . le design et moi on ne sait ... s'est jamais reconnu en fait! mais je fait des efforts.

Connectez-vous ou Inscrivez-vous pour répondre.