¿Cuándo y cómo se generan las plantillas phtml en view_preprocessed?

11

Veo muchos archivos phtml generados en var/view_preprocessed/htmlmódulos centrales y módulos personalizados. Parece que todas estas plantillas se usan con espacios en blanco despojados.

Alan Kent escribió en ¿Cómo actualizo los archivos phtml de Magento 2 en Grunt? :

No "despliega" archivos PHTML. Están referenciados por bloques en los archivos de diseño y procesados ​​en el lado del servidor. Entonces "gruñido" no es relevante aquí, y la implementación de contenido estático tampoco es relevante.

Y al analizar el despliegue de contenido estático y el flujo de trabajo gruñido, no encontré nada relacionado con las plantillas, por lo que supongo que esto sigue siendo cierto.

¿Pero cuándo se generan estos archivos? ¿Y qué está pasando realmente allí y por qué?

Fabian Schmengler
fuente
Como descubrí, estos archivos se generarán con contenido estático: comando de despliegue. Por alguna razón, debe eliminar todos los archivos en var / view_preprocessed para que sus cambios funcionen.
Kevin Krieger

Respuestas:

8

Cuando se llama bin/magento static-content:deployesto se llama: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

Este método llama

    $deployer = $this->objectManager->create(
        'Magento\Deploy\Model\Deployer',
        ['filesUtil' => $filesUtil, 'output' => $output, 'isDryRun' => $options[self::DRY_RUN_OPTION]]
    );
    $deployer->deploy($this->objectManagerFactory, $languages);

lo que se traduce \Magento\Deploy\Model\Deployer::deploy. Al final de este método encontrarás

   foreach ($this->filesUtil->getPhtmlFiles(false, false) as $template) {
        $this->htmlMinifier->minify($template);
        if ($this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
            $this->output->writeln($template . " minified\n");
        } else {
            $this->output->write('.');
        }
        $this->count++;
    }

Si lo desea, puede profundizar \Magento\Framework\App\Utility::getPhtmlFilespara ver cómo se recuperan las plantillas.
Versión corta:
llama accumulateModuleTemplateFilesy accumulateThemeTemplateFilesde la misma clase. Estos métodos están utilizando (al final) globy algunas expresiones regulares para recuperar todos los archivos de plantilla de los módulos y de los temas y la minificación se realiza mediante \Magento\Framework\View\Template\Html\Minifier(que implementa \Magento\Framework\View\Template\Html\MinifierInterface) en base a algunas expresiones regulares extrañas. (ver minifymétodo)
Lo que aún no sé es cómo se cargan estas plantillas para su uso. lo más probable es que los cargue el motor de plantillas. Volveré a publicar aquí si / cuando encuentre eso.

[EDITAR]
Encontré cuando se usan las plantillas minificadas. Cuando establece el valor para Store->Configuration->Developer->Template Settings->Minify HTMLay Yescuando está en modo de producción.

Marius
fuente
Gracias por la respuesta. He descubierto que Store->Configuration->Developer->Template Settings->Minify HTMLtodavía no está cargando HTML Minificado. ¿Hay algo que pueda estar bloqueando esto? ¿Esto solo funciona en modo de producción?
TheBlackBenzKid