Kiedy i jak generowane są szablony phtml w view_preprocession?


11

Widzę wiele plików phtml generowanych var/view_preprocessed/htmlz modułów podstawowych, a także z modułów niestandardowych. Wygląda na to, że są to wszystkie używane szablony z rozłożonymi białymi spacjami.

Alan Kent napisał w Jak zaktualizować pliki phtml Magento 2 w Grunt? :

Nie „wdrażasz” plików PHTML. Są one przywoływane przez bloki w plikach układu i przetwarzane po stronie serwera. Tak więc „chrząknięcie” nie ma tutaj znaczenia, podobnie jak statyczne wdrażanie treści nie jest istotne.

Analizując statyczne wdrażanie treści i przepływ pracy, nie znalazłem nic związanego z szablonami, więc chyba nadal tak jest.

Ale kiedy te pliki są generowane? A co się tam właściwie dzieje i dlaczego?


Jak się zorientowałem, pliki te zostaną wygenerowane za pomocą polecenia static-content: deploy. Z jakiegoś powodu musisz usunąć wszystkie pliki w var / view_preprocorted, aby zmiany zadziałały.
Kevin Krieger

Odpowiedzi:


10

Podczas dzwonienia bin/magento static-content:deployzostaje to wywołane: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

Ta metoda wywołuje

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

co przekłada się na \Magento\Deploy\Model\Deployer::deploy. Na dole tej metody znajdziesz

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

Jeśli chcesz, możesz zagłębić się głębiej, \Magento\Framework\App\Utility::getPhtmlFilesaby zobaczyć, w jaki sposób szablony są pobierane.
Krótka wersja:
To nazywa accumulateModuleTemplateFilesi accumulateThemeTemplateFilesod tej samej klasy. Metody te używają (na końcu) globi niektórych wyrażeń regularnych do pobierania wszystkich plików szablonów z modułów i motywów, a minimalizowanie odbywa się \Magento\Framework\View\Template\Html\Minifier(implementuje \Magento\Framework\View\Template\Html\MinifierInterface) w oparciu o dziwne wyrażenia regularne. (patrz minifymetoda).
Nie wiem jeszcze, jak ładowane są te szablony. najprawdopodobniej są one ładowane przez silnik szablonów. Prześlę tutaj, jeśli / kiedy to znajdę.

[EDYCJA]
Znalazłem, kiedy używane są zminimalizowane szablony. Po ustawieniu wartości dla Store->Configuration->Developer->Template Settings->Minify HTMLcelu Yesi kiedy na trybie produkcyjnym.


Dziękuję za odpowiedź. Store->Configuration->Developer->Template Settings->Minify HTMLPrzekonałem się, że wciąż nie ładuje Minified HTML. Czy jest coś, co może to blokować? Czy to działa tylko w trybie produkcyjnym?
TheBlackBenzKid
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.