Définir une nouvelle constante

cpalocpalo Member
Bonsoir,

Je souhaite faire référence à un dossier externe à mon site pluxml par le biais de son url .
Je pensais utiliser une constante du genre URL_FOLDER_EXT.
Pour définir cette constante, je pourrai créer un fichier siteconfig.php dans le dossier data (pour éviter de toucher au core)
define('URL_FOLDER_EXT', 'http://site.fr/dossier/');
Est-ce la bonne démarche? et comment l'utiliser dans un template ( par exemple header.php pour l'appel d'un fichier css, ou static.php pour le lien vers une image).

Cordialement

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mai 2017 modifié
    Je déposerai plutôt le fichier siteconfig.php dans le dossier data/configuration/.
    Et dans le template tu peux faire :
    [== PHP ==]
    <?php include(PLX_CONFIG_PATH.'siteconfig.php'); ?>
    
    La constante PLX_CONFIG_PATH est définie dans le fichier config.php à la racine du site.
  • YannicYannic Member
    mai 2017 modifié
    Salut, si ta constante ne vas être utilisé que dans et par ton thème autant la placer directement au debut de ton header.php a moins que tu utilise plusieurs themes ou header ou encore que tu compte la modifier souvent.

    Sinon idem à bazooka07 pour le choix du dossier de config.

    Buster/NGINX/PHP7/PluXml5.8

  • cpalocpalo Member
    Pour l'emplacement du dossier, entièrement d'accord surtout que j'ai déjà un dossier data/siteconfig dans lequel j'ai par exemple mon script google analytics.
    @yannic
    du genre :
    <?php include(dirname(__FILE__).'/siteconfig.php'); ?>
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    juin 2017 modifié
    Effectivement, le mieux est de déclarer la constante en début du fichier header.php.
    Cela évite un accès disque pour un fichier supplémentaire.
    D'où léger gain de vitesse.

    P.S.: remplacer dirname(__FILE__) par __DIR__.
    Lire plus d'infos sur les constantes magiques ici
  • cpalocpalo Member
    juin 2017 modifié
    @bazooka07
    Merci pour ce rappel, car j'utilise bien cette constante dans mes nouvelles pages php mais je n'ai pas eu le réflexe d'aller modifier mes templates pluxml. A faire donc dans mes prochains thèmes...

    j'ai:
    data/siteconfig/siteconfig.php
    et je bloque pour inclure ce fichier dans le header,
    car je dois mélanger chemin http et chemin des dossiers, et chemin relatif et absolu....
    <?php if (!defined('PLX_ROOT')) exit; ?>
    <?php include(__DIR__ . 'data/siteconfig/siteconfig.php'); ?> 
    <!DOCTYPE html>
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Include(__DIR__) pointe dans le dossier de ton thème.

    Comme disait Yannick mets ton fichier siteconfig.php dans ton thème directement et fais
    [== PHP ==]
    <?php include(__DIR__.'/siteconfig.php'); ?>
    

    Sinon mets ton fichier siteconfig.php dans le dossier data/configuration et fais
    [== PHP ==]
    <?php include(PLX_CONFIG_PATH.'siteconfig.php'); ?>
    
  • cpalocpalo Member
    juin 2017 modifié
    j'ai pris la première méthode:
    siteconfig.php dans le thème:
    define('URL_FOLDER_EXT', 'http://site-ext.local/folder-sharing');
    
    et dans le header.php j'ai:
    <?php if (!defined('PLX_ROOT')) exit; ?>
    
    <?php include(__DIR__.'/siteconfig.php'); ?>
    
    <link rel="stylesheet" href="<?php echo 'URL_FOLDER_EXT' ?>/style.css" />
    

    Mais cela ne fonctionne pas; c'est à dire que la valeur de la constante n'est pas affichée.
    En affichant le code source de la page dans le navigateur :
    <link rel="stylesheet" href="URL_FOLDER_EXT/style.css"/>
    
  • Salut,
    [== PHP ==]
    <link rel="stylesheet" href="<?php echo 'URL_FOLDER_EXT' ?>/style.css" />
    
    enlève les guillemets simples autour de ta constante.
  • cpalocpalo Member
    Merci,
    cela fonctionne
    ah ces guillemets!!
Connectez-vous ou Inscrivez-vous pour répondre.