Forums de la communauté francophone du CMS TYPO3: Microtut : Typo3_Context - Forums de la communauté francophone du CMS TYPO3

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Microtut : Typo3_Context variable d'environnement - TYPO3 6.2

#1 L'utilisateur est hors-ligne   Ch'typoteur 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 710
  • Inscrit(e) : 07-juin 07

Posté 15 décembre 2014 à 16:03

Bonjour à toutes et tous,

Afin de tenter d'apporter une modeste contribution à la nécessité collective de dynamiser la présente communauté TYPO3 francophone (cf par ailleurs le sujet 22711 que j'ai lancé sur ce sujet : http://forum.typo3-f...e-sur-le-forum/), vous trouverez ci-après quelques notes constituant un micro-tutoriel (d'où le titre MICROTUT)

C''est sans prétention. Cela synthétise brièvement quelques infos que je viens de glaner sur ce sujet qui n'était pas clair pour moi... Alors autant que tout le monde en profite...

Il y a sans doute des erreurs et manques... mais si cela peut aider certaines personnes à aller plus vite, j'en serais ravi.


Intro
  • TYPO3_CONTEXT est une variable d'environnement
  • support officiel depuis TYPO3 CMS 6.2 - 2014
  • concept : backport de TYPO3 FLOW : http://typo3.org/api...ionContext.html
  • la config peut se faire dans TYPO3 (install tool et/ou TYPOSCRIPT), sur le serveur (fichier .htaccess ou virtualhost).

TYPO3_CONTEXT pour faire quoi
  • TYPO3_CONTEXT est une variable d'environnement qui peut être spécifiée dans TYPO3 ou sur le serveur
  • Cette variable peut ensuite être "interrogée" via TYPO3 pour adapter le fonctionnement de TYPO3
  • => en cela on peut la considérer comme une variable définissant un contexte d'application de TYPO3
  • intérêt : une application web moderne (telle que TYPO3), peut être développée, testée... sur différents environnements, par des personnes différentes... On peut de ce fait vouloir générer une exécution différente de TYPO3 selon les cas
  • TYPO3 reconnaît les contextes de développement suivants
  • Development
  • Testing
  • Production
  • Il est en outre possible d'assigner des sous-contextes (séparés du contexte parent par un slash)

Usage dans des conditions Typoscript
  • les contextes peuvent être utilisés dans des conditions Typoscript du type '' [applicationContext = ...] ''
  • Les "wildcards", "+"et "*" et les expressions régulières sont supportées
Ref http://forge.typo3.o...-new.french.pdf p.89 et 157
      	[applicationContext = Development/Debugging, Development/Profiling]
        	# TYPO3 site in development stage
      	[global]
      	[applicationContext = Production*]
        	# TYPO3 site in production stage
        	# for example "Production/Live" or "Production/Staging"
      	[global]
      	[applicationContext = /^TestServer\d+$/]
        	# TYPO3 site on TestServer1 or TestServer2 or TestServer3, etc.
      	[global]
 



Ref : http://blog.marit.ag...n-und-anwenden/
    	
# Einstellungen für Entwicklunssysteme
[applicationContext = Development]
  config.absRefPrefix = http://projekt.dev/
  config.admPanel = 1
  [...]
[end]

# Einstellungen für ein Stagingsystem
[applicationContext = Production/Staging]
  config.absRefPrefix = http://projekt.staging/
  [...]
[end]
# Einstellungen für ein Produktivsystem
[applicationContext = Production/Live]
  config.absRefPrefix = http://projekt.live/
  [...]
[end]

# Einstellungen für alle Produktivsysteme via Wildcard-Selector
[applicationContext = Production*]
  config.debug = 0
  [...]
[end]

# Einstellungen für eine Liste von Systemen
[applicationContext = Development/Debugging, Development/ClientA]
  [...]
[end]



Ref : http://wiki.t3easy.d...-typo3-context/
  config.no_cache = 0
  config.concatenateJs = 1
  config.concatenateCss = 1
  config.compressJs = 1
  config.compressCss = 1
  
  [applicationContext = Development*]
   	# Overwrite configuration
  	config.no_cache = 1
  	config.concatenateJs = 0
  	config.concatenateCss = 0
  	config.compressJs = 0
  	config.compressCss = 0
  	config.disablePrefixComment = 0
  	config.admPanel = 1
  	lib.piwik.value = <!-- Piwik is disabled in development context -->
  [GLOBAL]
  • Note : cf. infra pour une variante reposant sur un fichier .htaccess


Configuration dans un fichier .htaccess

Ref : http://wiki.t3easy.d...-typo3-context/

#RewriteBase /

# Rules to set ApplicationContext based on hostname
#RewriteCond %{HTTP_HOST} ^dev\.example\.com$
#RewriteRule (.*) $1 [E=TYPO3_CONTEXT:Development]
#RewriteCond %{HTTP_HOST} ^staging\.example\.com$
#RewriteRule (.*) $1 [E=TYPO3_CONTEXT:Production/Staging]
#RewriteCond %{HTTP_HOST} ^www\.example\.com$
#RewriteRule (.*) $1 [E=TYPO3_CONTEXT:Production]



Ref : http://forge.typo3.o...-new.french.pdf
  	# File: .htaccess
  	# Rules to set Application Context based on hostname:
  	RewriteCond %{HTTP_HOST} ^dev\.example\.com$
  	RewriteRule (.*) $1 [E=TYPO3_CONTEXT:Development]
  	RewriteCond %{HTTP_HOST} ^www\.example\.com$
  	RewriteRule (.*) $1 [E=TYPO3_CONTEXT:Production]

  	# Sets an environment variable, which is then available to TYPO3 CMS:
  	SetEnv TYPO3_CONTEXT Production




Usage dans des extensions
* Dans une extension, l'utilisation semble se faire (désolé je ne suis pas développeur) via notamment
 \TYPO3\CMS\Core\Core\Bootstrap::getInstance()->getContext(); 
 \TYPO3\CMS\Core\Utility\GeneralUtility::getContext(); 

* ref 1 : http://forge.typo3.o...-new.french.pdf
* cf aussi par ailleurs http://blog.marit.ag...n-und-anwenden/
--o ChTypoteur o--
0

#2 L'utilisateur est hors-ligne   micka 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 645
  • Inscrit(e) : 17-juin 08

Posté 16 décembre 2014 à 08:28

Bonjour

Merci,
Je me suis posé d'emblée la question de l'utilisation dans typo3conf/LocalConfiguration.php
Le dernier lien que tu mentionnes y apporte la réponse Image IPB

Je mets un court extrait de code proposé par l'auteur (pas encore testé de mon côté)

if(\TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext()->isDevelopment()) {
    $GLOBALS['TYPO3_CONF_VARS']['DB']['database'] = 'development-db';
	//etc 
}

0

#3 L'utilisateur est hors-ligne   CMD 

  • Membre fidèle
  • PipPipPipPipPip
  • Groupe : Membres
  • Messages : 448
  • Inscrit(e) : 16-mai 07

Posté 16 décembre 2014 à 10:00

Bonjour,

Je me permet d'apporter ma pierre à l'édifice.
Je me sert des contextes sur tous mes nouveaux sites de la manière suivante:
Création d'un fichier "AdditionalConfiguration.php" dans le répertoire typo3conf. Celui-ci sera chargé juste après le fichier "LocalConfiguration.php" et permettra, par exemple, d'overrider la configuration.

ex:
// Application Context
$context = TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext();

if ($context->isDevelopment()) { // DEV
        $overrideArray = array(
            'BE' => array(
                'debug' => TRUE,
            ),
            'DB' => array(
                'database' => 'xxx_dev',
            ),
            'FE' => array(
                'debug' => TRUE,
            ),
            'SYS' => array(
                'displayErrors' => 1,
                'enableDeprecationLog' => 'file',
                'sitename' => '[DEV] XXX',
                'sqlDebug' => 1,
            ),
        );
} elseif ($context->isTesting()) { // PREPROD
        $overrideArray = array(
            'BE' => array(
                'debug' => TRUE,
            ),
            'DB' => array(
		'database' => 'xxx_preprod',
            ),
            'FE' => array(
                'debug' => TRUE,
            ),
            'SYS' => array(
                'displayErrors' => 1,
                'enableDeprecationLog' => 'file',
                'sitename' => '[PREPROD] XXX',
                'sqlDebug' => 1,
            ),
        );
} else { // PROD
        $overrideArray = array(
            'BE' => array(
                'debug' => FALSE,
            ),
            'DB' => array(
                'database' => 'xxx_prod',
            ),
            'FE' => array(
                'debug' => FALSE,
            ),
            'SYS' => array(
                'displayErrors' => 0,
                'enableDeprecationLog' => '',
                'sitename' => '[PROD] XXX',
                'sqlDebug' => 0,
            ),
        );
}

\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($GLOBALS['TYPO3_CONF_VARS'], $overrideArray);

Celà permet à TYPO3 de continuer à modifier le LocalConfiguration, et au développeur de ne pas se poser la question de savoir s'il doit modifier le localconfiguration avant récup / upload entre les différentes plateformes.

A savoir aussi que dans le ".htaccess" ainsi que dans tout TYPO3, seul 3 clé sont disponible, mais avec une infinité de sous configuration pour chacune.
RewriteRule .? - [E=TYPO3_CONTEXT:Development]
RewriteRule .? - [E=TYPO3_CONTEXT:Testing/Preprod]
RewriteRule .? - [E=TYPO3_CONTEXT:Production]


Sont disponible : "Development" / "Testing" / "Production".

On peut développer chaque conf par exemple : "Production/Main/Serveur1", l'ensemble sera accessible dans différents objets. Par exemple appeler :
echo TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext()->__toString();

Affichera : "Production/Main/Serveur1".
Cependant nous pouvons remonter dans l'arbre de configuration:

echo TYPO3\CMS\Core\Utility\GeneralUtility::getApplicationContext()->getParent()->__toString();

Affichera : "Production/Main".

Un extension utile aussi : context_hints qui permet d'afficher a coté du logo TYPO3 de la plateforme, le contexte principal ainsi qu'au survol tout un série d'information (configurable) extraite du $TYPO3_CONF_VARS.

Image IPB



Cordialement,
CMD

Ce message a été modifié par CMD - 16 décembre 2014 à 10:02.

Intégrateur TYPO3 certifié - Développeur TYPO3 - Société Archriss
--- http://cmonard.com/ ---
0

#4 L'utilisateur est hors-ligne   micka 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 645
  • Inscrit(e) : 17-juin 08

Posté 16 décembre 2014 à 10:28

Merci pour ce complément de qualité

Voir le messageCMD, le 16 décembre 2014 à 10:00, dit :

...
Un extension utile aussi : context_hints qui permet d'afficher a coté du logo TYPO3 de la plateforme, le contexte principal ainsi qu'au survol tout un série d'information (configurable) extraite du $TYPO3_CONF_VARS.
..

Je ne connaissais pas et cela me semble plutôt pas mal ...
J'avais pris l'habitude de modifier la couleur de l'arborescence (*) à coup de TSconfig pour les sites de dev. (afin que les clients ne se trompent plus entre les sites de dev / prod / etc ... ) et c'est pas top car à chaque "bascule" entre les plateformes, c'est une tâche en plus à réaliser (et surtout à ne pas oublier) ...


(*) edit : le background de l'arborescence en backoffice

Ce message a été modifié par micka - 16 décembre 2014 à 10:30.

0

#5 L'utilisateur est hors-ligne   CMD 

  • Membre fidèle
  • PipPipPipPipPip
  • Groupe : Membres
  • Messages : 448
  • Inscrit(e) : 16-mai 07

Posté 16 décembre 2014 à 11:23

Voir le messagemicka, le 16 décembre 2014 à 10:28, dit :

Merci pour ce complément de qualité
...
Je ne connaissais pas et cela me semble plutôt pas mal ...
J'avais pris l'habitude de modifier la couleur de l'arborescence (*) à coup de TSconfig pour les sites de dev. (afin que les clients ne se trompent plus entre les sites de dev / prod / etc ... ) et c'est pas top car à chaque "bascule" entre les plateformes, c'est une tâche en plus à réaliser (et surtout à ne pas oublier) ...


(*) edit : le background de l'arborescence en backoffice


Pas de quoi :)
concernant la couleur de BO, tu peux toujours la faire grâce au context et l'appliquer en fonction de l'environnement avec la fonction :
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('');


Intégrateur TYPO3 certifié - Développeur TYPO3 - Société Archriss
--- http://cmonard.com/ ---
0

#6 L'utilisateur est hors-ligne   micka 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 645
  • Inscrit(e) : 17-juin 08

Posté 16 décembre 2014 à 11:51

Re merci à CMD et à Ch'typoteur pour ces petits bouts de code (qui vont me faciliter la vie :) )
0

#7 L'utilisateur est hors-ligne   Ch'typoteur 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 710
  • Inscrit(e) : 07-juin 07

Posté 16 décembre 2014 à 12:31

MERCI à vous deux pour ces compléments importants (ils dépassent mon niveau mais m'enrichissent et donnent envie de creuser)

Au passage, ce fil de discussion montre que quelques changements collectifs sur le forum (développer un système de push : proposer des contenus même incomplets, imparfaits, voir erronés si comme moi l'on n'est pas très calé.. ) permettrait de générer une avancée collective beaucoup plus dynamique et rapide que le fonctionnement traditionnel actuel (système de pull : questions et réponses). Et on retrouverait un peu plus de vie sur ce forum... Image IPB/>
Reste à voir un groupe suffisamment nombreux se lancer peu à peu par exemple dans un foisonnement de MICROTUTS... ou d'autres types de sujets tels que ceux suggérés dans le lien situé au début de ce fil... Image IPB/>



@CMD

Citation

Création d'un fichier "AdditionalConfiguration.php" dans le répertoire typo3conf. Celui-ci sera chargé juste après le fichier "LocalConfiguration.php" et permettra, par exemple, d'overrider la configuration.

L'ajout direct du fichier suffit-il ?

Ce message a été modifié par Ch'typoteur - 16 décembre 2014 à 12:32.

--o ChTypoteur o--
0

#8 L'utilisateur est hors-ligne   CMD 

  • Membre fidèle
  • PipPipPipPipPip
  • Groupe : Membres
  • Messages : 448
  • Inscrit(e) : 16-mai 07

Posté 16 décembre 2014 à 14:38

Voir le messageCh, le 16 décembre 2014 à 12:31, dit :

@CMD

Citation

Création d'un fichier "AdditionalConfiguration.php" dans le répertoire typo3conf. Celui-ci sera chargé juste après le fichier "LocalConfiguration.php" et permettra, par exemple, d'overrider la configuration.

L'ajout direct du fichier suffit-il ?


Oui tout à fait, l'existence des fichiers est testé et l'inclusion se fait automatiquement, en revanche et pour pouvoir utiliser cet additionalconfig en le mutualisant sur les plateforme, il ne surcharge pas automatiquement le t3_conf_vars. (celà permet de faire appel a plein d'autre chose, je vous laisse découvrir ;) )
Intégrateur TYPO3 certifié - Développeur TYPO3 - Société Archriss
--- http://cmonard.com/ ---
0

#9 L'utilisateur est hors-ligne   Ch'typoteur 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 710
  • Inscrit(e) : 07-juin 07

Posté 16 décembre 2014 à 15:31

Tous mes remerciements
Encore un sujet à creuser urgemment, dès que possible, c'est-à-dire pas maintenant, oui mais avant plus tard...

ffffffffffffffffff !!! Comme disait naguère mon prof d'anglais en revenant du sport : "The Times is to short"
--o ChTypoteur o--
0

#10 L'utilisateur est hors-ligne   Yucky 

  • Pilier du forum
  • PipPipPipPipPipPipPip
  • Groupe : Modérateur
  • Messages : 2 291
  • Inscrit(e) : 23-juin 06

Posté 26 décembre 2014 à 11:04

Merci à tous pour toutes ces informations !
---------------------------------
Yucky // Aude JOLY
Chef de projet technique
Intégratrice TYPO3 Certifiée
Experte Accessiweb en évaluation
....
---------------------------------
0

#11 L'utilisateur est hors-ligne   Ch'typoteur 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 710
  • Inscrit(e) : 07-juin 07

Posté 20 janvier 2015 à 18:43

une info complémentaire vue ce soir pour le cas où
http://forum.typo3.o...x.php/t/208136/
--o ChTypoteur o--
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)