SOY CMSでSCSSコンパイラを実装しましたの記事で、SOY CMSで運営しているサイトで直接SCSSを読み込む方法を記載した。

SCSSの直接読み込みで何をしたかったのか?を記載すると、Bootstrapで【SEO対策】Core Web Vitalsに記載した内容を手軽に試したかった。


今回は練習として、Bootstrapのボタンのコンポーネントの記述のみをピックアップして、ページのHTMLにインラインで挿入するということをしてみる。

Bootstrap · 世界で最も人気のあるフロントエンドフレームワーク


今回はBootstrap 5(5.3.1-alpha1)で話を進める。

※Bootstrap 4系でも同様の方法で対応できる


最初にDownload · Bootstrap v5.3のページでSource filesの箇所からZIPファイルをダウンロードしてくる。


ZIPファイルがダウンロードできたら、解凍して展開する。

展開が終了したら、scssディレクトリをSOY CMSで作成したサイトディレクトリに移行する。


サイトIDがsiteの場合、scssディレクトリを

/ルートディレクトリ/site/scss/

のように配置する。




今回の例ではボタンコンポーネントのCSSの記述のみを利用する。

/ルートディレクトリ/site/scss/bootstrap_btn.scss

を作成し、下記のように記述する。

※記述の際に同じ階層にあるbootstrap.scssからコピペすると良い。


@import "mixins/banner";
@include bsBanner("");


// scss-docs-start import-stack
// Configuration
@import "functions";
@import "variables";
@import "variables-dark";
@import "maps";
@import "mixins";
@import "utilities";

// Layout & components
@import "buttons";

※functionsからutilitiesまでのimportの記述は必ず入れる

※Bootstrap 4の場合はfunctions、variablesとmixinsのimportが必須


続いて、

/ルートディレクトリ/site/scss/style.scss

を用意して、下記の記述をする。

@import "/ルートディレクトリ/site/scss/bootstrap_btn";



続いて、SOY CMSの方の手続きを進める。


前回の記事同様、BootstrapのCSSを読み込みたいページに

<!-- cms:module="css.scss" --><link rel="stylesheet" href="/site/css/style.css"><!-- /cms:module="css.scss" -->

を挿入しておく。

※今回はCSSのインライン化なので<link>タグの記述は不要になるが、わかりやすくするために残しておく


<?php
function soycms_scss($html,$htmlObj){
	if(!function_exists("soycms_compile_scss")) SOY2::import("site_include.func.css", ".php");

	$in = _SITE_ROOT_ . "/scss/style.scss";
	$out = _SITE_ROOT_ . "/css/style.css";
	
	soycms_compile_scss($in, $out);

	// インライン化の為に下記のコードはコメントアウト
	// echo $html;

	// 生成したCSSファイルの記述を圧縮してインライン化
	if(file_exists($out)) echo "<style>".soycms_compress_css_by_filepath($out)."</style>\n";
}
?>

ページを開き、ページのソースを表示でCSSがインライン化で挿入されていれば終了。

毎回SCSSをコンパイルするのは速度に影響するので、CSSやページ全体をキャッシュ化して無駄をなくしておく必要はあるが、今回は触れないことにする。

【SEO対策】最終産物のHTMLのキャッシュで高速化


後はファーストビューに関係するCSSを<head>内に挿入して、残りを</body>以下に挿入すればCore Web Vitalsのスコアは改善されるはず。


追記

style.scssの@importの記述に誤りがないのに、style.cssが空文字で生成される場合、

/ドキュメントルート/CMSインストールディレクトリ/common/site_include/func/vendor/scssphp/scssphp/bin/pscss

に実行権限を与えるとうまくいくかも