LOG IN

a-blog cmsでhead内のtitleを多言語化する

by aicocco/かんろ

<title>タイトル</title>を英語化する

試行錯誤してたページタイトル部分の多言語化がどうにかできたので、忘備録として。
実は途中でconfig.server.phpをうっかりローカルから上書きしちゃってサイトを壊しました♡
(社内の人に助けてもらった)


まず、英語用のtitle.txtを作成

meta.htmlでincludeしてるtitle.txtをコピーして、title1.txtを作成
(英語のエイリアスIDを1に設定しているので)


meta.htmlのincludeファイル名の後ろに%{ALIAS_ID}を追加

include文に%{ALIAS_ID}を追加することで、日本語と英語の表示を切り分けます

<!-- ▼▽▼ meta.html/変更前 ▼▽▼ -->
<title><!--#include file="/include/head/title.txt"--></title>


<!-- ▼▽▼ meta.html/変更後 ▼▽▼ -->
<title><!--#include file="/include/head/title%{ALIAS_ID}.txt"--></title>


これで、日本語の時にはtitle.txt、英語の時にはtitle1.txtが読み込まれます

英語表記用のカスタムフィールドを作成

title部分に出力されるサイト名とカテゴリー名の英語表記を入力するためのカスタムフィールドを作成します
カスタムフィールドメーカーでタイトルとフィールド名を決めて、ポチッと生成

サイトタイトル
・フィールド名:{blog_title_en}
・themes/demo/admin/blog/field.htmlを作成して、入力用ソースをコピペ

カテゴリー名
・フィールド名: {category_title_en}
・themes/demo/admin/category/field.htmlを作成して、入力用ソースをコピペ

一応、ここまででカテゴリー>カテゴリー詳細のカスタム設定にさっき作成したカスタムフィールドが表示されるようになってるはず!(実際の表示にはまだ反映されてません)


カスタムフィールドをグローバル変数化

<!-- ▼▽▼ config.server.php ▼▽▼ -->
define('HOOK_ENABLE', 1);


config.server.phpでフックを許可するために 'HOOK_ENABLE', 0を1に変更する

/php/ACMS/User/Hook.phpのグローバル変数の拡張部分にカスタムフィールド名が反映されるようにする
phpよく分かってないので追記部分をプログラマーさんに作ってもらいました、感謝

/**
* グローバル変数の拡張
*
* @param array $globalVars
*/
public function extendsGlobalVars(&$globalVars)
{
// $globalVars->set('key', 'var');
if( EID ) { $Field = loadEntryField(EID);
$globalVars->setField('ENTRY_TITLE_EN',$Field->get('title_en') );
}
if( CID ) { $Field = loadCategoryField(CID); $globalVars->setField('CATEGORY_NAME_EN',$Field->get('category_title_en') );
}
if( BID ) { $Field = loadBlogField(BID); $globalVars->setField('BLOG_NAME_EN',$Field->get('blog_title_en') );
}
$Field = loadBlogField(1);
$globalVars->setField('ROOT_BLOG_NAME_EN',$Field->get('blog_title_en') );
}


title1.txtの変数名を書き換える

title.txt(日本語)ではエントリータイトルは%{ENTRY_TITLE}
title1.txtで%{ENTRY_TITLE_EN}みたいに、_ENを末尾に追記します

その要領で以下の変数名に_ENを追加
・%{ENTRY_TITLE_EN}
・%{CATEGORY_NAME_EN}
・%{BLOG_NAME_EN}
・%{ROOT_BLOG_NAME_EN}

書き換えたtitle.txtを保存して、タブに表示される<title>が英語表記に変わってればOK!


最後にやらかしたこと

ローカル環境で試す→テストサーバーにアップ、という手順で表示確認してたのですが、普通のファイルと同じ様にローカルのconfig.server.phpをテストサーバーにアップしちゃってサイトが表示されなくなりました。
バックアップとってなかったらやばかった!
サーバーに変更したファイルをアップする時はお気をつけて♡
(こんな失敗する人滅多にいないだろうけど...エラーになった時めっちゃ焦ったのでした)



このエントリーをはてなブックマークに追加

aicocco/かんろ
OTHER SNAPS