Wann und wie werden HTML-Vorlagen in view_preprocessed generiert?

11

Ich sehe viele HTML-Dateien var/view_preprocessed/html, die sowohl aus Kernmodulen als auch aus benutzerdefinierten Modulen generiert wurden . Es sieht so aus, als wären dies alles verwendete Vorlagen mit gestrippten Leerzeichen.

Alan Kent schrieb in Wie aktualisiere ich Magento 2-HTML-Dateien in Grunt? ::

Sie "stellen" keine PHTML-Dateien bereit. Sie werden durch Blöcke in Layoutdateien referenziert und serverseitig verarbeitet. "Grunzen" ist hier also nicht relevant, und die Bereitstellung statischer Inhalte ist ebenfalls nicht relevant.

Bei der Analyse der Bereitstellung statischer Inhalte und des Grunz-Workflows habe ich nichts im Zusammenhang mit Vorlagen gefunden. Ich denke, dies gilt immer noch.

Aber wann werden diese Dateien generiert? Und was passiert dort eigentlich und warum?

Fabian Schmengler
quelle
Wie ich herausgefunden habe, werden diese Dateien mit dem Befehl static-content: deploy generiert. Aus irgendeinem Grund müssen Sie alle Dateien in var / view_preprocessed löschen, damit Ihre Änderungen funktionieren.
Kevin Krieger

Antworten:

8

Beim Aufruf wird bin/magento static-content:deploydies aufgerufen: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

Diese Methode ruft auf

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

was übersetzt bedeutet \Magento\Deploy\Model\Deployer::deploy. Am Ende dieser Methode finden Sie

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

Wenn Sie möchten, können Sie genauer untersuchen \Magento\Framework\App\Utility::getPhtmlFiles, wie die Vorlagen abgerufen werden.
Kurzversion:
Es ruft accumulateModuleTemplateFilesund accumulateThemeTemplateFilesaus der gleichen Klasse. Diese Methoden verwenden (am Ende) globund einige reguläre Ausdrücke, um alle Vorlagendateien aus den Modulen und aus den Themen abzurufen, und das Minimieren erfolgt durch \Magento\Framework\View\Template\Html\Minifier(das implementiert \Magento\Framework\View\Template\Html\MinifierInterface) basierend auf einigen seltsamen regulären Ausdrücken. (siehe minifyMethode).
Was ich noch nicht weiß, ist, wie diese Vorlagen zur Verwendung geladen werden. höchstwahrscheinlich werden sie von der Template-Engine geladen. Ich werde hier zurück posten, wenn ich das finde.

[BEARBEITEN]
Ich habe festgestellt, wann die minimierten Vorlagen verwendet werden. Wenn Sie den Wert für Store->Configuration->Developer->Template Settings->Minify HTMLzu Yesund wenn sie auf den Produktionsmodus.

Marius
quelle
Danke für die Antwort. Ich habe festgestellt, dass Store->Configuration->Developer->Template Settings->Minify HTMLMinified HTML immer noch nicht geladen wird. Gibt es irgendetwas, das dies blockieren kann? Funktioniert das nur im Produktionsmodus?
TheBlackBenzKid