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をテストサーバーにアップしちゃってサイトが表示されなくなりました。

バックアップとってなかったらやばかった!

サーバーに変更したファイルをアップする時はお気をつけて♡

(こんな失敗する人滅多にいないだろうけど...エラーになった時めっちゃ焦ったのでした)

OTHER SNAPS