Re: title表記の変更について

2014年12月19日 at 13:32

axleさん

header_required.phpをオーバライドする方法は、お望みじゃないかも知れませんが、
オリジナルの40〜65行目を以下に替えてみました。(動作未検証です)

<meta charset="UTF-8">
<?php
$akd = $c->getCollectionAttributeValue('meta_description');
$akk = $c->getCollectionAttributeValue('meta_keywords');

$w_akd = "";
if ($akd) {
$w_akd = ',' . htmlspecialchars($akd, ENT_COMPAT, APP_CHARSET);
}

$w_akk = "";
if ($akk) {
$w_akk = ',' . htmlspecialchars($akk, ENT_COMPAT, APP_CHARSET);
}

$w_tag = "";
if($options instanceof SelectAttributeTypeOptionList && $options->count() > 0) {
$w_tag = implode(',', $options);
}

$w_pageTitle = htmlspecialchars($pageTitle, ENT_COMPAT, APP_CHARSET);
$w_site = htmlspecialchars(SITE, ENT_COMPAT, APP_CHARSET);
?>
<meta name="keywords" content="★<?php echo $w_akk ?>" />
<meta name="description" content="★<?php echo $w_akd ?>" />
<meta name="viewport" content="width=device-width">
<meta property="og:type" content="article" />
<meta property="og:title" content="<?php echo $c->getCollectionName(); ?>" />
<meta property="og:description" content="★<?php echo $w_akd ?>">
<meta property="og:image" content="http://~.png" >
<meta property="og:url" content="http://~.html">
<meta property="fb:app_id" content="0000000000000000" />
<title><?php echo $c->getCollectionName(); ?>|<?php echo $w_tag ?>|<?php echo $w_site ?></title>


ただ、動作させた訳ではないので、動かなかったらごめんなさい。

既存のPHPファイルにも参考になるロジック(CMS上のデータを取得する方法)が
沢山あるので、参考にされると良いと思います。

Re: Re: title表記の変更について

2014年12月19日 at 16:37
ご丁寧にありがとうございます!
本当にありがたいです。
後ほどトライしてみます。
 

Re: title表記の変更について

2014年12月19日 at 18:39
axleさん

今、動作確認してみたら、データが取れていない部分がありました。
(”カテゴリ”情報が取れていませんね)
このままでは、期待動作と違いますので、
ちょっと、再度コーディングを見直してみます。

申し訳ないのですが、別件で、バタバタしているので、お時間掛かるかも知れません。

#在来線の電車内でコード書くのは、品質悪いですね・・・
 

Re: title表記の変更について

2014年12月26日 at 9:45
ありがとうございます。
タグ(擬似カテゴリ)の情報って、このCMSの場合、容易には扱えない印象です。
お時間がある時で構いませんので、よろしくお願いいたします。
 

Re: title表記の変更について

2014年12月26日 at 10:27
出遅れました。header_required.phpをオーバーライドする必要はありません。Loader::element() には、配列で引数を渡すことができますので、テーマから title タグの内容を指定することが可能です。

<?php
$c = Page::getCurrentPage();
$attrTags = $c->getAttribute('tags');
$tags = array();
if ($attrTags instanceof SelectAttributeTypeOptionList) {
$list = $attrTags->getOptions();
foreach ($list as $l) {
$tags[] = $l->getSelectAttributeOptionDisplayValue();
}
}
if (count($tags) > 0) {
$pageTitle = sprintf(
'%s | %s | %s',
$c->getCollectionName(),
implode(', ', $tags),
SITE
);
} else {
$pageTitle = sprintf(
'%s | %s',
$c->getCollectionName(),
SITE
);
}
Loader::element('header_required', array('pageTitle'=>$pageTitle));
?>

meta description も渡すことが可能です。また、OGPタグは拙作のアドオンで挿入可能ですので、アドオンを使わない場合でも参考になるかと思います。

http://www.concrete5.org/marketplace/addons/open-graph-tags-lite/
 

Re: title表記の変更について

2014年12月26日 at 20:33
hissyさん

・タグ情報の取得方法
・Loader::element()への配列渡しの方法

共に参考にさせて頂きます。

#header_required.phpのソースにコメントでしっかり、$pageTitleはプログラムから渡せると書いてありました。
#ちゃんと読んでないとダメですね。
 

Re: title表記の変更について

2015年1月13日 at 9:30
お二方、ありがとうございます。
対応が遅れて申し訳ありません。

すみません。
お二方の会話の内容がまだ理解できるレベルではないようです。

まっさらな詳細ページ用のテーマで仮組みしていたところですが、いただいたソースを詳細ページ用のテーマ側で入れておけば、
そのテーマ内で自由にタイトル要素の表記について変更可能になるという事でしょうか。
ご提示いただいたソースの具体的な使用方法を知りたいです。

ブロック要素は、カスタムテンプレートを利用する事である程度ソースに手を加えられる事を覚えましたが、タイトル要素の変更に関しては、そことは毛色が異なる印象です。
書籍にもこのあたりの記載は見当たらない(あったらごめんなさい)ので、具体的な変更方法などが書かれているページなどがあれば、教えていただきたいです。
といっても、なかなか見つからないのでユーザーの皆様はその多くがデフォルトのままなんだろうなと推測しています。(他ユーザーの方からの情報もないようなので)
現時点で、タイトル表記の方法が自由にならない(情報が乏しい)という事であれば、CMSとして取り入れる際の弊害になり得そうです。