Skip to content

Commit

Permalink
Font preload support in old Magento versions.
Browse files Browse the repository at this point in the history
  • Loading branch information
vovayatsyuk committed Oct 11, 2019
1 parent 5e7cd61 commit 22092ae
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
45 changes: 45 additions & 0 deletions Plugin/PageConfigRenderer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace Swissup\Core\Plugin;

class PageConfigRenderer
{
/**
* Add font preload support in Magento < 2.3.3.
*
* Usage in `default_head_blocks.xml`:
*
* <link rel="preload" src="fonts/muli.woff2"/>
*
* @param Magento\Framework\View\Page\Config\Renderer $subject
* @param string $result
* @return string
*/
public function afterRenderAssets(
\Magento\Framework\View\Page\Config\Renderer $subject,
$result
) {
if (strpos($result, 'rel="preload"') === false) {
return $result;
}

preg_match_all('/<link.*rel="preload".*\/>/', $result, $links);

foreach ($links[0] as $link) {
if (strpos($link, '.woff') === false ||
strpos($link, 'crossorigin="anonymous"') !== false
) {
continue;
}

$newLink = str_replace(
'rel="preload"',
'rel="preload" as="font" crossorigin="anonymous"',
$link
);
$result = str_replace($link, $newLink, $result);
}

return $result;
}
}
8 changes: 8 additions & 0 deletions etc/frontend/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,12 @@
sortOrder="10"
disabled="false"/>
</type>

<!-- font preload support in Magento < 2.3.3 -->
<type name="Magento\Framework\View\Page\Config\Renderer">
<plugin name="addMissingAssetAttributes"
type="Swissup\Core\Plugin\PageConfigRenderer"
sortOrder="10"
disabled="false"/>
</type>
</config>

0 comments on commit 22092ae

Please sign in to comment.