title要素のフォーマットを変更したい

2021年6月7日 at 16:00

title要素のフォーマットを変更することになり、リサーチを兼ね以下ページの「例:ページ送りの番号をタイトルに追加」を試してみました。

title要素のカスタマイズ
http://concrete5-japan.org/help/5-7/recipes/customize-title/

1. concrete5をフルサイトでインストール
2. Blogページのページリストブロックで「表示するページ数」を1に変更
3. application/bootstrap/app.phpにサンプルソースを追記

ページ送りをした際にtitleに「ページ2」と追加するカスタマイズとありますが、手元の環境では反映されないようです。
他にも設定など必要でしょうか。


「テーマからページタイトルをカスタマイズする方法」で紹介されている例も実用的な印象です。

・トップ & 第1階層ページ: [ページタイトル] - [サイト名]
・第2階層以降のページ: [ページタイトル] | [第1階層のページタイトル] - [サイト名]

こちらの場合サンプルのようなソースコードを、使用しているすべてのページテンプレートに追記するのでしょうか。


# concrete5 バージョン
8.5.4

# PHP バージョン
PHP7.3.x

# サーバー
エックスサーバー

タグ:

Re: title要素のフォーマットを変更したい

2021年6月11日 at 20:44
すいません。

そもそもなんですが、concrete5 のページリストでの検索パフォーマンス向上のために、何ページ目の表示は admin ユーザーのみしか表示されないように変更され、事実上「何ページ目」という情報が取得できなくなっています。

詳細は、第397回の週刊 concrete5 のコーナー30分目あたりから説明しています。

とにかく、タイトルのカスタマイズ方法はお教えできますが、
今、どのようなコードを作られたかを見せていただけるとより具体的な助言ができると思います。

どのようなコードか見せていただけますか?
 

Re: title要素のフォーマットを変更したい

2021年6月12日 at 16:45
「title要素のカスタマイズ」のページで紹介しているコードがバージョン7時代のもので、バージョン8では少しアップデートする必要があります。ヘルプページを更新しておきましたので、お試しください。

http://concrete5-japan.org/help/5-7/recipes/customize-title/
 

Re: title要素のフォーマットを変更したい

2021年6月14日 at 19:54
Ueno様

ご回答ありがとうございます。
ページ送りをした際にtitleに「ページ2」と追加するカスタマイズは、負荷の高い処理なのですね。


hishikawa様

サンプルソースコードを更新いただきありがとうございます。
早速試して動作を確認することができました。


title要素のフォーマットの変更方法にはどのような選択肢があるのかリサーチを続けておりますが、「テーマからページタイトルをカスタマイズする方法」で紹介されている例も試してみました。
制作中のテーマではサンプルソースコードの前に以下を追記すると、説明にある通りの出力になりました。

$nh = Core::make('helper/navigation');

使用しているすべてのページテンプレートに設置が必要なのかと思いましたが、テーマの elements/header.php に置いてインクルードすれば良いようですね。


実際に動かしてようやく理解できることが多いので、サンプルソースコードの掲載があると助かります。
「テーマからページタイトルをカスタマイズする方法」の方は、当方レベルの理解度でも色々と応用できそうです。
同じ内容のカスタマイズを「SEOヘルパーをオーバーライド」という方法でも実現できるのかなと調べてはみましたが、こちらの道は険しそうです…。
 

Re: title要素のフォーマットを変更したい

2021年6月14日 at 19:58
ページ送りをした際にtitleに「ページ2」と追加するカスタマイズは特に負荷の高い処理ではありませんので、安心してください。追加したところでほぼ何も変わりません。

他の方法としては、 on_header_required_ready イベントを使う方法もあります。これはtitleを含む全てのmetaタグ、linkタグをカスタマイズできます。バージョン 5.7.5.9 から導入されました。

サンプル
http://github.com/concrete5/concrete5/issues/4310#issuecomment-244152545
 

Re: title要素のフォーマットを変更したい

2021年6月15日 at 19:30
hishikawa様

サンプルソースコード拝見しました。
application/bootstrap/app.php に以下を設置すると

Events::addListener('on_header_required_ready', function ($event) {
$metaTags = $event->getArgument('metaTags');
unset($metaTags['charset']);
$event->setArgument('metaTags', $metaTags);
});


header_requiredの出力から以下が取り除かれることを確認できました。

<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>


試しに以下のようにしてみると

Events::addListener('on_header_required_ready', function ($event) {
$event->setArgument('pageTitle', 'サンプルタイトル');
});

titleタグを変更できました。


concrete/elements/header_required.php などを見ながらあれこれ試してみようと思います。
お陰様で仕組みの見通しがだいぶ良くなりました。
ご案内いただきありがとうございました。