
concrete5 の超便利でシンプルなアドオン「Manual Nav」が、concrete5 のフルサイトマップなどから追加できる外部リンクの「新しいウインドウ」で開く設定や、隠れページ属性「nav_target」に対応させるためのカスタムテンプレートを作成しました。
微妙に便利になると思います。
Manual Nav とは
2015年時点での concrete5-japan.org サイトでもグローバルナビで使っているのが、このManual Nav です。concrete5 でデフォルトに実装されているオートナビは concrete5 のサイトマップから自動的にナビゲーションを作りますが、このアドオンは文字通り、自分の好きな順番で好きなページをピックアップして、<ul> <li> 表示するシンプルな無料パッケージです。
HTML+CSS とカスタムテンプレートの仕組みを分かっている concrete5 使いなら、必須なアドオンの1つとなっています。
ちなみに、作者は、超有名なアドオン Designer Content などを作っている Jordan さん。
nav_target とは
concrete5 のデフォルトの属性ではインストールされていませんが、nav_target というハンドルで、テキストフィールドのページ属性を作成すると、オートナビブロックでは、自動的にそこのテキスト情報を <a target=””> の中に入れてくれるようになっています。テキストフィールドではなく、選択フィールドにして、_self、_blank、_top などの属性を選択できるようにしてもいいです。
使い方と実際のコード
実際のコードです。
- Manual Nav を concrete5 にインストール
[concrete5]/blocks/フォルダに 「manual_nav」という階層でフォルダを作成- 下記のファイルを
view.phpとして、そのフォルダに保存 - カスタムテンプレートとして使う場合は
[concrete5]/blocks/manual_nav/templates/○○○[カスタムテンプレート名].phpと保存してください。
<?php defined('C5_EXECUTE') or die(_("Access Denied."));
/**
* concrete5.6.x Package 'Manual Nav' Custom Template
* @package Manual Nav
* @author Jordan Lev
* @author Katz Ueno
* @copyright Copyright (c) 2015 Katz Ueno. (http://katzueno.com)
* @license http://www.concrete5.org/license/ MIT License
* to support External Link's tareget="_blank"
* and page attribute 'nav_target'
*
* I know I should be doing this in controller.php
*
* concrete5.6.x パッケージ 「Manual Nav」
* 外部リンクの「新しいウインドウ」
* ページ属性の「nav_target」に対応するためのカスタムテンプレート
* 本来なら controller.php でやるべきなのも分かるんですが、面倒臭かったので・・・
*/
?>
<ul>
<?php foreach ($links as $link):
$page = $link->cObj;
$target = '';
if ($page->cPointerExternalLink != '') {
if ($page->cPointerExternalLinkNewWindow) {
$target ='_blank';
}
} else {
if ($page->getAttribute('nav_target')) {
$target = $page->getAttribute('nav_target');
}
}
?>
<li>
<a href="<?php echo $link->url; if ($target) echo '" target="' . $target ?>">
<?php echo htmlentities($link->text, ENT_QUOTES, APP_CHARSET); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
コピペしやすいよう、Gist にも UP しています。
本来なら、MVC な concrete5 のお作法に則って、 controller.php に修正を加えるべきなんですけれど、簡単に1ファイルだけで修正できるようにしました。
作者にも、この修正を教えているので、もしかしたら、パッケージにも修正を入れてもらえるかもしれません。
それでは。
以上
