Коли і як створюються шаблони phtml у view_preprocessed?


11

Я бачу багато файлів phtml, що генеруються в var/view_preprocessed/htmlосновних модулях, а також із спеціальних модулів. Схоже, це всі використовувані шаблони з позбавленим пробілом.

Алан Кент написав у " Як я оновлюю файли Magento 2 phtml у Grunt? :

Ви не "розгортаєте" файли PHTML. На них посилаються блоки в файлах компонування і обробляються на стороні сервера. Таким чином, "grunt" тут не доречний, і статичне розгортання вмісту аналогічно не має значення.

І аналізуючи розгортання статичного вмісту та бурхливий робочий процес, я не знайшов нічого, пов’язаного із шаблонами, тому, мабуть, це все-таки справедливо.

Але коли ці файли генеруються? А що насправді там відбувається і чому?


Як я зрозумів, ці файли будуть генеровані зі статичним вмістом: команда розгортання. Чомусь вам потрібно видалити всі файли в var / view_preprosedsed, щоб змінити роботу.
Кевін Крігер

Відповіді:


10

При виклику bin/magento static-content:deployцього телефонує: \Magento\Deploy\Console\Command\DeployStaticContentCommand::execute()

Цей метод викликає

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

що перекладається на \Magento\Deploy\Model\Deployer::deploy. Внизу цього методу ви знайдете

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

Якщо ви хочете, ви можете заглибитись, \Magento\Framework\App\Utility::getPhtmlFilesщоб побачити, як шаблони витягуються.
Коротка версія:
Дзвонить accumulateModuleTemplateFilesі accumulateThemeTemplateFilesз того ж класу. Ці методи використовують (врешті-решт) globі деякі регулярні вирази для отримання всіх файлів шаблонів з модулів та з тем та мінімізації, які виконуються \Magento\Framework\View\Template\Html\Minifier(що реалізує \Magento\Framework\View\Template\Html\MinifierInterface) на основі деяких дивних регулярних виразів. (див. minifyметод).
Що я ще не знаю, це те, як завантажуються ці шаблони для використання. найімовірніше, вони завантажуються двигуном шаблону. Я відправлю сюди, якщо / коли знайду це.

[EDIT]
Я знайшов, коли використовуються мінімізовані шаблони. Коли ви встановите значення Store->Configuration->Developer->Template Settings->Minify HTMLв Yesі коли в виробничому режимі.


Дякую за відповідь. Я виявив, що Store->Configuration->Developer->Template Settings->Minify HTMLвін все ще не завантажує Minified HTML. Чи є щось, що може блокувати це? Це працює лише у виробничому режимі?
TheBlackBenzKid
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.