いつ、どのようにphtmlテンプレートがview_preprocessedで生成されますか?


11

var/view_preprocessed/html、コアモジュールから、およびカスタムモジュールから、多くのphtmlファイルが生成されています。これらはすべて空白が削除された使用済みテンプレートのようです。

Alan KentがGruntでMagento 2 phtmlファイルを更新するにどうすればいいですか?

PHTMLファイルを「展開」することはありません。これらは、レイアウトファイルのブロックによって参照され、サーバー側で処理されます。したがって、「うなり声」はここでは関係ありません。また、静的コンテンツの展開も同様に関係ありません。

また、静的コンテンツの展開と不快なワークフローを分析したところ、テンプレートに関連するものは何も見つからなかったため、これはまだ当てはまると思います。

しかし、これらのファイルはいつ生成されますか?そして実際にそこで何が起こっているのか、そしてその理由は?


私が理解したように、これらのファイルはstatic-content:deployコマンドで生成されます。何らかの理由で、変更を機能させるには、var / view_preprocessed内のすべてのファイルを削除する必要があります。
Kevin Krieger

回答:


8

これを呼び出す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、テンプレートを取得する方法をさらに詳しく調べることができます。
ショートバージョン:
それが呼び出すaccumulateModuleTemplateFilesaccumulateThemeTemplateFiles、同じクラスから。これらのメソッドは(最後に)globといくつかの正規表現を使用して、モジュールとテーマからすべてのテンプレートファイルを取得し、縮小は、いくつかの奇妙な正規表現に基づいて\Magento\Framework\View\Template\Html\Minifier(を実装する\Magento\Framework\View\Template\Html\MinifierInterface)によって行われます。(minifyメソッドを参照)。
私がまだ知らないことは、これらのテンプレートをどのようにロードして使用するかです。ほとんどの場合、それらはテンプレートエンジンによってロードされます。見つかった場合は、ここに投稿します。

[編集]
縮小されたテンプレートが使用されていると気付きました。Store->Configuration->Developer->Template Settings->Minify HTMLto の値を設定したYesときと、プロダクションモードのとき。


答えてくれてありがとう。Store->Configuration->Developer->Template Settings->Minify HTMLそれでも、Minified HTMLが読み込まれていないことがわかりました。これをブロックしている可能性があるものはありますか?これはプロダクションモードでのみ機能しますか?
TheBlackBenzKid 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.