【freo】任意のページ内容を任意の箇所に表示【Tips】

freo1.10来ましたね。

それはそうと、freoってなんだかインフォメーション機能使いづらくありません?

特定のページでしか使用できませんし。

一応有志で任意のページに表示させるプラグインを作ってくださっている方がいますが、あれだとhtmlタグが機能しませんし(´・ω・`)

ちなみに既存のインフォメーション機能がhtmlタグ機能するのかは覚えてません(オイ

というわけで任意のページにhtmlタグ機能したまま擬似インフォメーションを表示させる方法でも書いておきます。

(基本的にはphpでいうinclude。やってることはjQueryの.load機能で他のhtmlを読み込ませているだけ)

下準備

インフォメーション等で使用したい内容を記述したページを作成。

ページID等は好きなように。

ここでは仮にexample_idとします。

その際に取得する際の位置情報になりますので、表示する範囲を

で必ず囲んでください。(複数可能)

ローカルファイルでの作業

管理メニューへ編集ページヘのリンクを作成

templates/internals/admin/header.html内の <h2>管理メニュー</h2> 以下の任意の箇所に下記を追記。

<h3>インフォメーション</h3>
<ul>
	<li><a href="{$freo.core.http_file}/admin/page_form?id=example_id">エグザンプルID</a></li>
</ul>

擬似インフォメーション内容の表示

templates/内のheader.htmlまたはutility.html等の表示させたい箇所に以下を追記。

<div id="hoge"><p>Now Loading...</p></div>
<script type="text/javascript">
	$('div#hoge').load('/example_id #example_hoge');
</script>

これでページの内容だけが任意の箇所に表示されます。

簡単な説明ですが、1行目で読み込んだものを配置する場所を作成。2~4行目でhttp://host.jp/example_id内のid="example_hoge"を1行目で作成したid="hoge"に読み込み。これは別にexample.htmlなどのファイルでも平気です。

ともあれここまで書いてあれですが、自分はやはり0から作れないくせに1を1.1にする事が多いなぁとつくづく残念にorz

追記

検索などでページが表示されてほしくない場合は、css3の下記をcssに適応させればいいかと思います。

※テンプレートによって多少変化しますが大筋はこんな感じです。(liなどでlist-style-typeを指定した場合は……ちょっと対処法探しておきます)

.page_child a[href*="example_id"] {display:none;}

※更に追記

たとえば『読み込み元のページでJavaScriptを動作させているが、読み込んだページの部分だけJavaScriptが動作しない』という自体が発生することが有りますが、これは.loadが画面の読み込みが終わった時に発生するので必然的にJavaScriptの実行はそれ以前になるため実行後の読み込んだページには機能しないことが原因です。

対処としては読み込んだページでも実行したい処理を以下のように書き換えて.loadと同じく画面の読み込みが終わったあとに処理するようにすればいいのです。(なので処理を記述する場所は.loadよりも下にする必要があります)

$(function() {処理内容});

$(window).load(function() {処理内容});

Notes

  • 2014/05/03
    • 更に追記
  • 2012/10/16
    • 記述内容整理
  • 2012/10/04
    • 加筆・修正(一部の処理を変更)
  • 2012/10/03
    • 加筆
  • 2012/10/01
    • エントリー
コメント
※コメントは承認制となっていますので、コメントを頂いても直ぐには表示されません。
※不適切な内容(スパムや悪意ある内容等)のコメントは公開されませんので、ご了承ください。
※返信が必要な場合などでコメントの公開を通知されたい場合はメールアドレスの入力をお願いします。
名もなき名無しさん
メールアドレス(例:コメントの公開通知が欲しい場合)
内容