前後のエントリの取得

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
つつじ

前後のエントリの取得

投稿記事 by つつじ » 2005年12月12日(月) 00:31

たてつづけに質問ですみません。

今のサイトが160ページ近くあるので、サイトマップとサイドバーに表示するメニューをCMSDで作るようにしました。リンク集みたいなイメージです。
スキーマは、下記の感じになっています。
<schema name="sitemap" caption="サイトマップ" sortkey="no" sortorder="asc" >
<data name="pagename" type="text" caption="ページ名" output="text2" />
<data name="pagefile" type="text" caption="ファイル名" output="text2" />
<data name="no" type="int" caption="順番" min="0" max="9999" group="True"/>
<data name="genre" type="menu" caption="カテゴリ" group="True">
<menuitem id="1">あ</menuitem>
<menuitem id="2">い</menuitem>
<menuitem id="3">う</menuitem>
<menuitem id="4">え</menuitem>
<menuitem id="5">お</menuitem>
</data>
<data name="description" type="textarea" caption="ページの説明"
maxlength="500" output="text2" />
</schema>
おかげで面倒臭いメニューの更新が大分楽になり大変嬉しく思っています。

ついでならば、ページの下の方に
前のページ | ホーム | 次のページ
とあるところを、今まで手作業でやっていのも自動的に出来ないかと思ったのですが、
今あるページで特定のリストを取り出すためには、埋め込みのところで
<cmsd:entrylist name="sitemap-milk" design="navi">
<cmsd:group key="no" value="4402"/>
</cmsd:entrylist>
のように無理やりグループのnoを指定するとかidで指定する以外に方法が浮かばなくて、例えばファイル名が同じなので、「ファイル名を自動的に取得してファイル名で絞り込む」なんて事が出来ないか、と思ったのですが分かりませんでした。

また、
navi機能のデザイン定義で
<a href="{pagefile}"><<前のページへ</a>|
とやってもpagefileが見れないらしくてダメだったので、
埋め込みのところで、
<cmsd:entrylist name="sitemap-milk" design="navi">
<cmsd:group key="no" value="4402"/>
</cmsd:entrylist>
のvalueを「-1減らしたもの」「+1増やしたもの」とか出来ないかな、と思ったのですがそんな事は出来ますか?

4401とか4403と入れれば出来るのですがそれでは今までと変わらない事になってしまいますので・・・。PHPを駆使すれば出来るのかな?とも思ったのですが・・・。

イメージが伝わったか自信が無いのですが、よろしく御願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 前後のエントリの取得

投稿記事 by webmaster » 2005年12月12日(月) 21:30

webmaster代理です。

ご質問内容を理解できたか自信が無いのですが、
現在、*.html ファイルが160ページあって、それらのページをCMSDを使って
管理しようという事だと理解致しました。

その上で、*.html の下の方に、「前のページ | ホーム | 次のページ」という
ナビゲーションを付けたいというお話でしょうか。

まず、案の1つとして、*.htmlを全てCMSD管理下において*.phpにするというものが
あると思います。
基本的には、拡張子を*.phpにして頂いた後、内部にナビゲーション表示用の
デザインを埋め込むという事になるかと思います。

ただ、「前のページ | ホーム | 次のページ」のナビゲーションをつけるには、
*.phpのパラメータにeid(エントリID)を付与する必要がありますので、これまで
abc.html として表示していたものを、 abc.php?eid=00123 のような形のURL
に置き換える必要があります。

そして、リファレンスマニュアル「5.5.9 「次のエントリへ」「前のエントリへ」のリンクを
つける」に従って記事のナビゲーションをつけて頂くわけですが、ご存知の通り、これ
だと前後のページの pagefile を取得する事ができない為、単純にリンクを張ることが
できません。

そこで、eidを受け取って、該当のページへ画面遷移する為のデザインを作ります。
具体的には、

<meta http-equiv="Refresh" content="0; URL=http://www.example.com/">

のHTML命令を使います。
このURLの部分を、与えられたeidのエントリからpagefileを持ってくる事で生成して
置き換えるデザインを作ります。

但し、この方法はお分かりのようにややこしく、既存の*.htmlにも手を加える必要が
ある為、ベストとは言い切れないと思います。

もう一つの方法としては、*.htmlをインラインフレームとして表示するデザインを
作る、という方法があるかと思います。

pagefile.php とでも名づけたページをつくり、ページ下部には
「前のページ | ホーム | 次のページ」のナビゲーションを表示し、
ページ中央には、対応する pagefile をインラインフレームとして読み込むように
します。

もしこの方法が使えるのであれば、こちらの方が簡単に実現できるかと思います。

以上、当方の認識がズレていましたら、またご連絡ください。

つつじ

難しそうです・・・。

投稿記事 by つつじ » 2005年12月13日(火) 16:00

インラインフレームは使いたくないので1の方法を試したのですが、どうも上手くいかずじまいでした(どこか間違った文法を書いてしまったかもしれませんが・・・)。

埋め込むページはPHPファイルにする予定なので、PHPに変更するのはいいのですが、ナビはどうしても欲しい機能でもないので、あきらめようかと思います・・・。

特定のエントリを指定するのは、エントリIDを指定するしかないのですよね?
それでは1ページごとにエントリIDを調べなくてはならないので効率的ではないなあ・・・と。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 難しそうです・・・。

投稿記事 by webmaster » 2005年12月13日(火) 16:33

 webmasterです。
 つつじさん、ご質問ありがとうございます。

 「上手くいかない」点について書いて頂ければ、もう少しお手伝いできることもある
かもしれません。
 ひょっとして、自動画面遷移のmetaタグを作るデザイン定義の部分でしょうか?
つつじ さんが書きました: 特定のエントリを指定するのは、エントリIDを指定するしかないのですよね?
それでは1ページごとにエントリIDを調べなくてはならないので効率的ではないなあ・・・と。
 これなんですが、以前のつつじさんのコメントを拝見して、
<cmsd:entrylist name="sitemap-milk" design="navi">
<cmsd:group key="no" value="4402"/>
</cmsd:entrylist>
のvalueを「-1減らしたもの」「+1増やしたもの」とか出来ないかな、と思ったのですがそんな事は出来ますか?
 という部分がそれだとようやく理解致しました。

コード: 全て選択

<cmsd:entrylist name="sitemap-milk" design="navi"> 
<cmsd:group key="no" /> 
</cmsd:entrylist> 
 として頂き、デザイン定義の方では、

コード: 全て選択

<a href="{pagefile}?no={no-1}">前のページ</a>
<a href="{pagefile}?no={no+1}">次のページ</a>
 として頂ければOKかと思います。

 noの上限、下限をつけたい場合は、

コード: 全て選択

<xsl:if test="no>0">
<a href="{pagefile}?no={no-1}">前のページ</a>
</xsl:if>
<xsl:if test="no<4000">
<a href="{pagefile}?no={no+1}">次のページ</a>
</xsl:if>
 として頂ければ、noが0〜4000の範囲の場合のみ、リンクが表示されるように
なるかと思います。

つつじ

度々質問ですみません。

投稿記事 by つつじ » 2005年12月14日(水) 14:38

回答ありがとうございます。

メタタグでの画面遷移はよく分かりませんでした。画面が切り替わるので出来ればあまり使いたくないなあと思います(すみません)。

また、個々のURLも出来れば既存のもので行いたいと思います(.phpにはします)。

ですので、ナビの時に、
同じファイル名のものと特定できて、かつ前後のエントリを表示できたらなと思います。

ちなみに、スキーマ定義で、ページ名にもグループ定義を持たせて
<cmsd:entrylist name="sitemap-milk" design="navi">
<cmsd:group key="pagename" value="ページタイトル" />
</cmsd:entrylist>
として見たのですが、なぜか出てきません。日本語では絞り込めないのでしょうか?
これで絞り込めたら楽なんですが。以前のnoでは大丈夫でした。

どうにかして前後のnoのものを絞込み、リンク先にファイル名を持たせられないでしょうか?

たかがナビゲーションなんですが・・・。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 度々質問ですみません。

投稿記事 by webmaster » 2005年12月14日(水) 15:36

 webmasterです。つつじさん、解決点までうまくお連れすることができず、申し訳
なく思っております。

 前回お伝えした方法は、メタタグによる画面遷移とは別の方法ですので、もし
よろしければ一度お試し頂ければと思います。

 また、CMSDでは、一度投稿したエントリデータは投稿時点でのスキーマ内容に
よって決定される為、投稿後にスキーマを変更しても元のエントリデータには
変更内容が反映されません。(この為、エントリ投稿後のスキーマ変更はマニュアル
に記載している通り非推奨とさせて頂いております。m(_ _;)m)
 おそらくそのせいで、グループ絞込みに反応しないものと思われます。

 160件もの情報ですので大変かとは存じますが、一度全てのエントリを編集画面
から「保存」しなおしてみて下さい。それでスキーマの変更内容がデータにも反映
されます。

つつじ

Re: 度々質問ですみません。

投稿記事 by つつじ » 2005年12月14日(水) 17:00

お忙しい中何度もすみません。
webmaster さんが書きました:  また、CMSDでは、一度投稿したエントリデータは投稿時点でのスキーマ内容に
よって決定される為、投稿後にスキーマを変更しても元のエントリデータには
変更内容が反映されません。(この為、エントリ投稿後のスキーマ変更はマニュアル
に記載している通り非推奨とさせて頂いております。m(_ _;)m)
 おそらくそのせいで、グループ絞込みに反応しないものと思われます。

 160件もの情報ですので大変かとは存じますが、一度全てのエントリを編集画面
から「保存」しなおしてみて下さい。それでスキーマの変更内容がデータにも反映
されます。
一部しか試していないので160件はまだ入力してないので大丈夫です。保存しなおしてindexをのぞいたらちゃんとグループとして入っていたんですがダメでした・・・。
前後のエントリーも上手く取れません。

テスト中なんですが、こちらのhttp://babygoods.main.jp/milk-1-test.phpでやってます。
メインコンテンツにメニューが羅列してあり、サイドバーに同じ形でリンク集を貼ることに成功しました。

下の方に例のナビをつけました。ナビの下は手作業でつけたものです。
<cmsd:entrylist name="sitemap-milk" design="navi">
<cmsd:group key="no" value="0101" />
</cmsd:entrylist>
と書いてnoが0101のものを指定しました。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 度々質問ですみません。

投稿記事 by webmaster » 2005年12月15日(木) 21:36

 webmasterです。
 いろいろ試して頂いているのに解決に至らず申し訳ありませんでした。

 あれからまたいろいろ考えてみたんですが、シンプルな方法が思いつかず、
今のところ手詰まりです。m(_ _;)m

 サイトを拝見しましたが、とてもいい感じでCMSDを使われていますね。(^^)
 こういう利用法もあったか!という感じです。

 また進展、追加の質問、他の疑問などありましたらお気軽にお問合せ下さい。

つつじ

ありがとうございました。

投稿記事 by つつじ » 2005年12月16日(金) 14:22

色々と考えてくださってありがとうございました。
はじめたばかりなのに普通でない使い方ばかりですみません。
今までは1ページ追加するごとにカテゴリの整理などが大変だったのでこのツールを使って整理していきたいと思います。

返信