Je vois beaucoup de fichiers phtml générés dans var/view_preprocessed/html
, à partir des modules de base ainsi que des modules personnalisés. Il semble que ce soient tous des modèles utilisés avec des espaces vides.
Alan Kent a écrit dans Comment mettre à jour les fichiers phtml de Magento 2 dans Grunt? :
Vous ne "déployez" pas les fichiers PHTML. Ils sont référencés par des blocs dans les fichiers de mise en page et traités côté serveur. Donc, "grognement" n'est pas pertinent ici, et le déploiement de contenu statique n'est pas non plus pertinent.
Et lors de l'analyse du déploiement de contenu statique et du workflow de grognement, je n'ai rien trouvé de lié aux modèles, donc je suppose que cela reste vrai.
Mais quand ces fichiers sont-ils générés? Et que se passe-t-il réellement là-bas et pourquoi?
la source
Réponses:
Lors de l'appel,
bin/magento static-content:deploy
ceci est appelé:\Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()
Cette méthode appelle
ce qui se traduit par
\Magento\Deploy\Model\Deployer::deploy
. Au bas de cette méthode, vous trouverezSi vous le souhaitez, vous pouvez creuser plus profondément
\Magento\Framework\App\Utility::getPhtmlFiles
pour voir comment les modèles sont récupérés.Version courte:
Il appelle
accumulateModuleTemplateFiles
etaccumulateThemeTemplateFiles
de la même classe. Ces méthodes utilisent (à la fin)glob
et quelques expressions régulières pour récupérer tous les fichiers de modèle à partir des modules et des thèmes et la minification est effectuée par\Magento\Framework\View\Template\Html\Minifier
(qui implémente\Magento\Framework\View\Template\Html\MinifierInterface
) basée sur des expressions régulières étranges. (voirminify
méthode).La chose que je ne sais pas encore, c'est comment ces modèles sont chargés pour utilisation. très probablement, ils sont chargés par le moteur de modèle. Je posterai ici si / quand je trouve cela.
[EDIT]
J'ai trouvé lorsque les modèles minifiés sont utilisés. Lorsque vous définissez la valeur
Store->Configuration->Developer->Template Settings->Minify HTML
deYes
et lorsque vous êtes en mode production.la source
Store->Configuration->Developer->Template Settings->Minify HTML
ne charge toujours pas le HTML minifié. Y a-t-il quelque chose qui peut bloquer cela? Est-ce que cela fonctionne uniquement en mode production?