FCafe  エントリのリスト化

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「ツリー化スクリプト」  は独自リスト以外にも使用することが可能です。  以下を御覧下さい。

  <!--リスト始-->
  要素1・・・要素2・・・要素3・・
  <!--/リスト終-->

各ナビリストは上記の構造を持ち 中央行部分が項目の数だけ繰り返し出力されます。
この構造がナビリスト以外にも存在するのがお分かりでしょうか?  そう、 エントリ(記事)も同じですね。 タイトル、投稿日、記事本文、etc・・・これらが繰り返し表示される仕組はナビリストと変わるところはありません。 ( 個別表示での )コメントやトラックバック部も然り、です。
  で、あるならば当然、エントリ毎のコメントやTB,さらにはエントリそのものも 「ツリー化」 する事ができる訳です。  ・・・実際には記事本文のような長大なテキストを引数に入れると流石にスクリプトは動いてくれませんが、記事の「タイトル」や「日付」等であれば、十分に「ツリー化」が可能(な筈)です。

  J○○○○界から来た方にはもう話の大筋が見えて来たことと思います。
そう。 あの、『 selected_entry_list 』 をFC2のblogで作る事ができるのです!
 selected_entry_list とはJUGEMでの名称ですが 「最新記事○件」 ではなく「現在ページ内に表示されている記事」 のリストです。 アーカイブやカテゴリ(JUGEMでは100件以上であろうと一覧表示される)を表示させた時、目的の記事を探すのに結構重宝するものです。
 「記事の折り畳み(記事タイトルの目次化)」機能を実装する当blogではあまり必要無いものですが、これをFC2でも使いたい、と言う人はいらっしゃるのではないでしょうか

  基本的な方法はリストをツリー化する時と変わりません
  エントリブロック部
<!--topentry-->
<script type="text/javascript">
getItem("分類元要素","個別表示要素","リンク要素","付加情報1","付加情報2");
</script>
【 エントリ(記事)の内容 】
<!--/topentry-->

  リストを置きたい場所に
<script type="text/javascript">mkTree()</script>


  リストのツリー化と異なるのは、ブロック内の記事内容(タイトル・本文等)は <noscript> タグで囲わずそのまま表示させる、ということです。  「現在どんな記事がページ内にあるのか?」 を知る為のリストを作るのであってエントリ自体をツリー型に並べ変える訳ではないからです。
ですからツリー描出関数 mkTree もエントリブロックの直後には書きません。 エントリーのリストを置きたい場所に書きます。 実際には殆どの方の場合、「サイドバー部」 ということになるでしょう。

 「最近の記事」リストでは「投稿日・タイトル」のみしかデータの種類がありませんでしたが、エントリブロックでは様々な単変数を使用可能です
(と言ってもグループ分けに使えるのは <%topentry_category> くらいですが )。
ただ、既にカテゴリリストをツリー化して沢山の(サブ)カテゴリを設定しているような場合、エントリを分類するカテゴリ名は 1.アニメ などと設定のママの表示となります。  ・・・勿論スクリプトをさらに改変すればどうともなることですが、エントリリストのカテゴリでのツリー化と、カテゴリリスト自体のツリー( 階層 )化は現状ではトレードオフであると言えるかもしれません。( 対応しました )
  引数の設定法は「リストのツリー化」を行えた方には説明するまでも無いと思いますが、 ポイントを一点。 このリストの肝(キモ)はリンク先を「記事の個別URL」とするか、「頁内の記事」とするかにあります。 後者を採る場合は記事が「頭出し」される形となります ( 所謂「頁内参照」 )。
これをするには記事冒頭部に
<a name="<%topentry_no>">~</a>  (FC2のテンプレの多くはデフォルトで設定済み)
というラベルを置き、 getItem の第三引数は "#<%topentry_no>" とします。
( 「個別表示」と「頁内参照」のどちらが便利かは各人で御判断下さい )

・・さて ここで注意が必要な事が2点あります。
1★ mkTree はサイドバー部において 「ツリー化を行う他のリストより先」 に置かなければなりません。
何故かと言えば、このツリー化スクリプトは一度に一つのリストしか記憶できないからです。 「覚えている」データを書き出す前に別のリストを処理させると、前のリストのデータは消えてしまうのです。
2★ エントリブロックが サイドバー部より先に記述されていなければなりません。
これも上記と同じ理由によります。 スクリプトは「覚えていないリスト」は書くことが出来ません。 データを集める getItem より先にデータを書き出す mkTree を置いてもツリー化されたリストは書き出されないのです。 よって、左右にfloatされたサイドバー部がHTMLソース上でエントリ部より先に記述されているようなテンプレートでは(この方法で)サイドバー部にエントリリストを置くことは出来ません。 ( 可能でした。 次記事参照 )

( ええ~っ selected_entry_list をまた使えると思ったのに ! )
・・・と、上記の制限を読まれてがっくりとされた方々に朗報があります。
「ツリー化」でない、プレーンなリストでよければ、 selected_entry_list (のようなもの)は実は何処でも置けるのです。
ある筋の情報からFC2では独自ブロックを複数回展開できるらしいと知った私は(007のテーマ♪)密かに以下の如きタグを別テンプレのサイドバーに設置してみました。
<!--topentry-->
<li><a href="#<%topentry_no>"><%topentry_title></a></li>
<!--/topentry-->
・・・はい。動きました。  ★見本(頁内参照型)

 私はこのリストが無いのを 『FC2がJUGEMに劣る点』 だと思っていましたがさにあらず。
「独自のリストタグを設定する必要」が無かったのです。  FC2は独自タグばかりでなく 独自ブロックも素晴らしい。 (・・・この後、さらに驚愕の事実が!)

Comment

BlogPetのdanie BlogPetのdanie Edit
06/04 13:56

きょうdanieが部分話されたみたい…
でdanielで要素を投稿しなかった。
でdanielのストみたいな話したいです。

daniel daniel Edit
06/04 14:08

おおダニー。 元気してたかい? 会えて嬉しいよ

BlogPetのdanie BlogPetのdanie Edit
06/17 15:00

中央で項目とか、トラックなどを存在しなかったよ。


BlogPetのdanie BlogPetのdanie Edit
06/28 17:13

日付や広いトラックと、大きいビリストと、独自リストなど作る事ができるのです
danielたちが、中央行で広い個別とか独自リストとかをFCしなかった。


BlogPetのdanie BlogPetのdanie Edit
07/08 15:17

danieたちが、エントリそのものを存在しなかったの?


BlogPetのdanie BlogPetのdanie Edit
07/18 13:37

きのうdanielの、本文みたいな出力したかもー。
でdanielと中央まで出力するはずだったの。
できょうdanieがコメントしたいなぁ。
で中央へdanielがタイトル存在しなかったよ。


.  
HN Title URL PW secret

TrackBack http://pcafe.blog3.fc2.com/tb.php/50-9909366d

Shown after Admisson
s-r-s *
書きたい事がない時は本当にないものなのですが、逆に1日にいくつものエントリーをする事もあったり…。私の場合よくあります。そんな訳で、サイドバーの最新記事を日付ごとに表示できればいいな~と思っていたのですが…ありました。FC2でエントリーのツリー化。FCafeさんの
.

≫ エントリリスト続き ツリー化統合 ≪

2005 / 01 / 21  Fri
Navigation   
Comment 6 / TB 1 / Edit
Designed by Daniel Corporation . all rights renounced
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。