ページ 1 / 1

現在表示中のエントリーID以外のエントリーを一覧表示する

Posted: 2007年2月06日(火) 20:36
by eco
はじめまして。
CMSデザイナー大変お世話になっております。

早速の質問で恐縮なのですが、xslにもまだうとく、マニュアルを見ても解決出来なかったため質問いたします。

1.トップページの新着記事一覧(最新10件)の1記事を選ぶと記事詳細画面へリンクします。
2.記事詳細画面には選択した記事の内容(タイトル、本文、画像等)が表示されます。
3.2のページ内下部に2以外の新着記事一覧が表示される。

というものを予定しております。
現在1と2までは実現できたのですが、3ができておりません。
試してみたのは、

[news.default.design.xsl]←記事詳細画面デザイン定義ファイル

<xsl:template match="/entry">
<div class="news_title">
<xsl:value-of select="title" />
</div>
<div class="news_body">
<xsl:value-of select="body" />
</div>
<div class="news_image1">
<img src="{news_image1}" />
</div>
</xsl:template>
↑までが選択した記事の詳細表示

<xsl:template match="/entrylist">
<xsl:if test="not(@current)">
<xsl:for-each select="entry">
<a href="news.php{@href}">
<xsl:value-of select="number(date/@month)" />月
<xsl:value-of select="number(date/@day)" />日
<xsl:value-of select="title" />
</a>
<br />
</xsl:for-each>
</xsl:if>
</xsl:template>
↑までが上記詳細記事以外の記事一覧(の予定)

です。
<xsl:if test="not(@current)">で
現在表示中のエントリIDでない記事が取得出来ると思ったのですが、登録した記事全てが表示されてしまいます。
何か良い方法等ございましたらお教えいただけると幸いです。

何卒よろしくお願いいたします。

Re: 現在表示中のエントリーID以外のエントリーを一覧表示する

Posted: 2007年2月07日(水) 11:42
by webmaster
 ecoさん始めまして、webmasterです。
 ご質問ありがとうございます。

 拝見しましたが、ほとんど正解に辿りついていると思います。
 というかこれ、マニュアルの方が分かりづらいですね、すいません・・・。

コード: 全て選択

<xsl:template match="/entrylist">
<xsl:for-each select="entry">
<xsl:if test="not(@current)">
<a href="news.php{@href}">
<xsl:value-of select="number(date/@month)" />月
<xsl:value-of select="number(date/@day)" />日
<xsl:value-of select="title" />
</a>
<br />
</xsl:if>
</xsl:for-each>
</xsl:template>
 これでうまくいくと思います。@currentはentryに対して付与される情報なので、
entryの中からでしか参照できません。

 またご不明な点がありましたらいつでもご連絡下さい。

Re: 現在表示中のエントリーID以外のエントリーを一覧表示する

Posted: 2007年2月07日(水) 13:19
by eco
webmasterさま。お忙しい中ご返信ありがとうございます。

お教えいただいたコードに変更してみました。
<xsl:template match="/entrylist">
<xsl:for-each select="entry">
<xsl:if test="not(@current)">
<a href="news.php{@href}">
<xsl:value-of select="number(date/@month)" />月
<xsl:value-of select="number(date/@day)" />日
<xsl:value-of select="title" />
</a>
<br />
</xsl:if>
</xsl:for-each>
</xsl:template>
残念ながら結果は変わらず、トップ一覧で選択した記事も詳細記事内で一覧されてしまいます。
初期投稿時にスキーマおよび出力PHPファイルの設定を掲載し忘れておりましたのでこちらも載せます。
ひょっとしてこれらの設定に問題があるのでしょうか・・?

[news.schema.xml]

<?xml version="1.0" encoding="UTF-8"?>
<schema name="news" caption="お知らせ">
<data name="date" type="date" caption="登録日" />
<data name="title" type="text" caption="件名" />
<data name="body" type="textarea" caption="本文" />
<data name="news_image1" type="img" caption="画像1" maxfilesize="1MB" with="240" />
<data name="news_image2" type="img" caption="画像2" maxfilesize="1MB" with="240" />
<data name="news_image3" type="img" caption="画像3" maxfilesize="1MB" with="240" />
<data name="news_file1" type="file" caption="添付ファイル1" maxfilesize="1MB" with="240" />
<data name="news_file2" type="file" caption="添付ファイル2" maxfilesize="1MB" with="240" />
<data name="news_file3" type="file" caption="添付ファイル3" maxfilesize="1MB" with="240" />
</schema>


[news.php]

<?php require_once("cmsdesigner/include/view.php.inc");// encoding="euc-jp" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<link rel="stylesheet" href="./css/news.default.css" type="text/css">
<title>テストページです。</title>
</head>
<body>
テストページ<br>
<table border="1">
<tr><td>メニュー部分</td>
<td>
<cmsd:entry name="news" design="default" />
</td>
</tr>
<tr><td>
<cmsd:entrylist name="news" design="default">

</cmsd:entrylist>
</td></tr>
</table>
</body>
</html>
<?php cmsd_end_template(); ?>

となっております。
また、マニュアルには@currentには現在表示されていると存在すると書かれておりましたが、具体的には該当するエントリーIDが代入されているのでしょうか?(例えば00014など)

お手数をおかけして申し訳ありませんが何卒よろしくお願いいたします。

Re: 現在表示中のエントリーID以外のエントリーを一覧表示する

Posted: 2007年2月07日(水) 13:49
by eco
何度もすみません。
news.php内をテスト中のものと間違えておりました。。。
以下が正しいです。

[news.php]

<?php require_once("cmsdesigner/include/view.php.inc");// encoding="euc-jp" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<link rel="stylesheet" href="./css/news.default.css" type="text/css">
<title>テストページです。</title>
</head>
<body>
テストページ<br>
<table border="1">
<tr><td>メニュー部分</td>
<td>
<cmsd:entry name="news" design="default" />
</td>
</tr>
<tr><td>
<cmsd:entrylist name="news" design="default" />
</td></tr>
</table>
</body>
</html>
<?php cmsd_end_template(); ?>

何卒よろしくお願いいたします。

Re: 現在表示中のエントリーID以外のエントリーを一覧表示する

Posted: 2007年2月07日(水) 15:16
by webmaster
 ecoさん、お返事ありがとうございます。
 なんと、結果変わらずでしたか・・・お手数おかけして申し訳ありませんでした。

 しかし、現在の所問題のありそうな箇所を他に発見できておりません。

 ちなみに、「現在選択されているエントリID」ですが、CMSDはこの情報をURLパラメータ
のeid=XXXXXから取得しています。
 この為、もしeidがパラメータに存在していない場合には、@currentも付与されることは
ありません。

 ひょっとすると、URLにeidがついていない、ということはないでしょうか…?
 たぶん、ちゃんと付いているだろうとは思うのですが…。

 尚、@currentには"True"という文字列が設定されています。

 もし可能でしたらメールでFTPのIDとパスワードをご連絡頂ければ、直接こちらから
ログインして原因を探らせて頂きます。
 また何か情報がございましたらよろしくお願い致します。