Quando e come vengono generati i template phtml in view_preprocessed?


11

Vedo molti file phtml generati var/view_preprocessed/html, dai moduli core e dai moduli personalizzati. Sembra che questi siano tutti modelli usati con spazi bianchi spogliati.

Alan Kent ha scritto in Come aggiorno i file phtml di Magento 2 in Grunt? :

Non "distribuire" file PHTML. Sono referenziati da blocchi nei file di layout ed elaborati sul lato server. Quindi "grunt" non è rilevante qui, e la distribuzione del contenuto statico non è altrettanto rilevante.

E durante l'analisi della distribuzione del contenuto statico e del flusso di lavoro grunt non ho trovato nulla correlato ai modelli, quindi suppongo che ciò sia ancora vero.

Ma quando vengono generati questi file? E cosa sta realmente accadendo lì e perché?


Come ho capito, questi file saranno generati con contenuto statico: comando deploy. Per qualche motivo devi eliminare tutti i file in var / view_preprocessed per far funzionare le tue modifiche.
Kevin Krieger,

Risposte:


9

Quando si chiama bin/magento static-content:deployquesto viene chiamato: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

Questo metodo chiama

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

che si traduce in \Magento\Deploy\Model\Deployer::deploy. Alla fine di questo metodo troverai

   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++;
    }

Se lo desideri, puoi scavare più a fondo \Magento\Framework\App\Utility::getPhtmlFilesper vedere come vengono recuperati i modelli.
Versione breve:
chiama accumulateModuleTemplateFilese accumulateThemeTemplateFilesdella stessa classe. Questi metodi utilizzano (alla fine) globe alcune espressioni regolari per recuperare tutti i file modello dai moduli e dai temi e la minimizzazione viene eseguita da \Magento\Framework\View\Template\Html\Minifier(che implementa \Magento\Framework\View\Template\Html\MinifierInterface) sulla base di alcune strane espressioni regolari. (vedi minifymetodo).
La cosa che non so ancora, è come vengono caricati questi modelli per l'uso. molto probabilmente sono caricati dal motore di template. Riporterò qui se / quando lo trovo.

[EDIT]
Ho trovato quando vengono utilizzati i modelli minimizzati. Quando si imposta il valore per Store->Configuration->Developer->Template Settings->Minify HTMLto Yese in modalità di produzione.


Grazie per la risposta. Ho scoperto che Store->Configuration->Developer->Template Settings->Minify HTMLnon sta ancora caricando HTML minimizzato. C'è qualcosa che può bloccare questo? Funziona solo in modalità produzione?
TheBlackBenzKid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.