ページ 11

絞り込みについて。

Posted: 2005年9月28日(水) 19:39
by momora
webmaster様、何時もお世話になっています。
絞り込みの件での質問なのですが、下記の設定で絞り込みを行いたいのですが、表示先のPHPファイルでなにも表示されない状態です。推測ですがスキーマファイルの三行目のtype="list"の設定では、絞り込みができないのかな?と思っております。
各ファイルは以下のように設定しております。
  • <?xml version="1.0" encoding="UTF-8"?>
    <schema name="pic" caption="写真の更新" >
    <data name="photolist" type="list" caption="画像リスト" >
    <listitem caption="画像">
    <data name="phototitle" type="text" caption="画像のタイトル" />
    <data name="photo" type="img" caption="画像" />
    <data name="shurui" type="menu" caption="写真の種類" group="True">
    <menuitem id="1">花</menuitem>
    <menuitem id="2">動物</menuitem>
    <menuitem id="3">食物</menuitem>
    </data>
    </listitem>
    </data></schema>
スキーマを上記のように設置して、デザインファイルを
  • <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
    <xsl:template match="/entry">
    <div class="panel">
    <xsl:for-each select="photolist/listitem">
    <div class="block">
    <div class="innerblock">
    <a href="{photo}" target="_blank"><img src="{photo}&w=140" border="0"/></a>
    <xsl:value-of select="phototitle" disable-output-escaping="yes" />
    </div>
    <xsl:if test="position() mod 3 = 0">
    <br clear="all" />
    </xsl:if>
    </div>
    </xsl:for-each>
    </div>
    </xsl:template>
    </xsl:stylesheet>
上記のようにしています。
埋め込むPHPファイルには下記のように埋め込みをしております。
  • <cmsd:entry name="public_pic" design="default">
    <cmsd:group key="shurui" value="2"/>
    </cmsd:entry>
上記ではvalue="2"で、動物だけ絞り込み、一覧表示をさせたかったのですが、何も表示されませんでした。スキーマリストの
  • <data name="shurui" type="menu" caption="写真の種類" group="True">
    <menuitem id="1">花</menuitem>
    <menuitem id="2">動物</menuitem>
    <menuitem id="3">食物</menuitem>
    </data>
上記の部分を、listitemタグで囲んだ状態では、絞り込みの対象からはずれてしまうのでしょうか。
何卒、ご教授頂けますようお願い申し上げます。

Re: 絞り込みについて。

Posted: 2005年9月28日(水) 22:43
by webmaster
 webmasterです。
 申し訳ありません、ご推察の通り、CMSDの仕様上、gorup属性は
「スキーマのルート階層のデータ項目のみ」にしか効かないようになっております。

 リファレンスマニュアルの「3.5.12 グループ(絞込み)指定」の下の方へ注意書き
として記載ははされているのですが、指定してもエラーにもならないし、分かり難い
かと思います。

 この制限が辛い場面もあるかと思いますが、仕組み上の問題やパフォーマンスの
理由から難しい面もあり、なんとか回避して頂ければ幸いです。m(_ _)m

Posted: 2005年9月29日(木) 09:31
by momora
webmaster様へ
ご指摘のとおり、リファレンスマニュアルに記述されていました。マニュアルを熟読しておらず、ご質問したことを、お許し下さい。

また他の方法で、同様に表示させることもできました。

ご回答頂きありがとうございました。

Posted: 2005年9月29日(木) 09:35
by webmaster
 webmasterです。momoraさんがマニュアルを充分読まれている事はよく
わかりますので・・・でないとここまで深いご質問は出てこないと思います。

 マニュアルの記述をもっと目立つようにした方が良さそうです。
 今回、うまく回避して頂けたようでほっとしております。ありがとうございます。

 マニュアル等読まなくてもお気軽に質問していただければ結構ですので、
今後ともご意見、ご質問をお待ちしております。m(__)m

絞込みについて

Posted: 2006年12月08日(金) 14:01
by hacchi1030
お世話になります。
絞り込みをしたいと思い、マニュアルをみつつ色々と試していたのですが
ナビゲーションだけが表示され
肝心のデータが何も表示されず、困っていました・・・。

ちなみに、絞り込みをしない状態ですと表示されます。
各ファイルは下記のように記述しておりました。
お手数ですが、何かアドバイスいただければうれしいですm(__)m


●スキーマ
<?xml version="1.0" encoding="UTF-8"?>
<schema name="beauty" caption="タイトル" sortkey="@date" sortorder="desc" >
<data name="title" type="text" caption="タイトル" output="text2" />
<data name="kind" 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>
<menuitem id="6">アクセサリー</menuitem>
<menuitem id="7">洋服</menuitem> </data>
<data name="url" type="text" caption="URL" output="text1" />
<data name="photo" type="img" caption="写真" />
<data name="description" type="textarea" caption="本文"
maxlength="1000" output="html2" />
</schema>


●デザインファイル
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entrylist ">

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" class="navi-text">
<xsl:for-each select="navi">
<xsl:for-each select="prev" class="navi-text">
<a href="{@href}" class="type1"><<前のページへ</a>|
</xsl:for-each>
<xsl:if test="not(prev)"> <<前のページへ| </xsl:if>
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" class="navi-text" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}" class="type1"><xsl:value-of select="@id" class="navi-text" /></a>|
</xsl:if>
</xsl:for-each>
<xsl:for-each select="next" class="navi-text">
<a href="{@href}" class="type1">次のページへ>></a>
</xsl:for-each>
<xsl:if test="not(next)"> 次のページへ>> </xsl:if>
</xsl:for-each>
</td>
</tr>
</table>

<xsl:for-each select="entry">


<table width="525" border="0" cellpadding="0" cellspacing="0" class="syousai-tab-01">
<tr bgcolor="#FFD0E0">
<td height="28" colspan="2" class="syousai-td-01"><span class="text-red">■</span> <xsl:value-of select="title" /></td>
</tr>
<tr>
<td width="200" rowspan="2" align="center" valign="top" class="syousai-td-03"><a href="../{photo}" target="_blank"><img src="../{photo}&w=176" border="0"/></a></td>
<td width="325" valign="top" class="syousai-td-02"><xsl:value-of select="description" /></td>
</tr>
<tr>
<td width="325" align="right" valign="bottom"> 
<table width="80%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="135"><img src="../img/syousai_btn.gif" alt="詳細・ご購入はこちら→" width="135" height="23" /></td>
<td align="right" class="syousai-td-04"><a href="{url}" target="_blank" class="type1"><xsl:value-of select="title" /></a></td>
</tr>
</table></td>
</tr>
</table>



</xsl:for-each>

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" class="navi-text">
<xsl:for-each select="navi">
<xsl:for-each select="prev" class="navi-text">
<a href="{@href}" class="type1"><<前のページへ</a>|
</xsl:for-each>
<xsl:if test="not(prev)"> <<前のページへ| </xsl:if>
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" class="navi-text" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}" class="type1"><xsl:value-of select="@id" class="navi-text" /></a>|
</xsl:if>
</xsl:for-each>
<xsl:for-each select="next" class="navi-text">
<a href="{@href}" class="type1">次のページへ>></a>
</xsl:for-each>
<xsl:if test="not(next)"> 次のページへ>> </xsl:if>
</xsl:for-each>
</td>
</tr>
</table>

</xsl:template>
</xsl:stylesheet>

●埋め込み部分
<?php cmsview::listpage( "beauty", "default", 3, "2" ) ?>

Posted: 2006年12月08日(金) 16:15
by tsu
hacchi1030さん

以下の埋め込みタグでうまくいくかもしれません。
絞り込み辺りは得意じゃないので動かなかったらごめんなさい。

現行のコマンド

コード: 全て選択

<cmsd:entrylist name="beauty" design="default">
<cmsd:group key="kind" value="2"/>
</cmsd:entrylist>
listだった。。

Posted: 2006年12月08日(金) 22:46
by hacchi1030
tsuさん

早速のお返事ありがとうございます。
今ほど試してみたのですが、残念ながら動きませんでした。。。

他に、対応策(?)というと何かあるのでしょうか?
自分としては、思いつく方法を試し尽くした感じで、
思いつかないのですが・・・(T_T)
他にヒントかアドバイスあれば、いただけるとうれしいです。

Posted: 2006年12月09日(土) 00:38
by tsu
以下のように修正したところロリポップで動作しました。
さらっと見てたので気がつかなかったですが、xslt関数部分にclass属性が書き込まれていましたので全て消しました。
普通にエラーとかでませんでしたか?

これはエラーになります

コード: 全て選択

<xsl:value-of select="@id" class="navi-text" />
正しくは

コード: 全て選択

<div class="navi-text"><xsl:value-of select="@id"></div>
というような書き方になると思います。

このままコピペで使えると思います。
class属性は省いた状態なので部分的に直して下さい。

コード: 全て選択

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="EUC-JP" omit-xml-declaration="yes" />
<xsl:template match="/entrylist ">

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" class="navi-text">
<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}" class="type1"><<前のページへ</a>|
</xsl:for-each>
<xsl:if test="not(prev)"> <<前のページへ| </xsl:if>
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}" class="type1"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}" class="type1">次のページへ>></a>
</xsl:for-each>
<xsl:if test="not(next)"> 次のページへ>> </xsl:if>
</xsl:for-each>
</td>
</tr>
</table>

<xsl:for-each select="entry">


<table width="525" border="0" cellpadding="0" cellspacing="0" class="syousai-tab-01">
<tr bgcolor="#FFD0E0">
<td height="28" colspan="2" class="syousai-td-01"><span class="text-red">■</span> <xsl:value-of select="title" /></td>
</tr>
<tr>
<td width="200" rowspan="2" align="center" valign="top" class="syousai-td-03"><a href="../{photo}" target="_blank"><img src="../{photo}&w=176" border="0"/></a></td>
<td width="325" valign="top" class="syousai-td-02"><xsl:value-of select="description" /></td>
</tr>
<tr>
<td width="325" align="right" valign="bottom"> 
<table width="80%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="135"><img src="../img/syousai_btn.gif" alt="詳細・ご購入はこちら→" width="135" height="23" /></td>
<td align="right" class="syousai-td-04"><a href="{url}" target="_blank" class="type1"><xsl:value-of select="title" /></a></td>
</tr>
</table></td>
</tr>
</table>



</xsl:for-each>

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align="center" class="navi-text">
<xsl:for-each select="navi">
<xsl:for-each select="prev">
<a href="{@href}" class="type1"><<前のページへ</a>|
</xsl:for-each>
<xsl:if test="not(prev)"> <<前のページへ| </xsl:if>
<xsl:for-each select="page">
<xsl:if test="../@position=@id">
<strong><xsl:value-of select="@id" /></strong>|
</xsl:if>
<xsl:if test="not(../@position=@id)">
<a href="{@href}" class="type1"><xsl:value-of select="@id" /></a>|
</xsl:if>
</xsl:for-each>
<xsl:for-each select="next">
<a href="{@href}" class="type1">次のページへ>></a>
</xsl:for-each>
<xsl:if test="not(next)"> 次のページへ>> </xsl:if>
</xsl:for-each>
</td>
</tr>
</table>

</xsl:template>
</xsl:stylesheet> 
埋め込みタグはこの形が良いと思います。

コード: 全て選択

<cmsd:entrylist name="beauty" design="default">
<cmsd:group key="kind" value="2"/>
</cmsd:entrylist>

Posted: 2006年12月11日(月) 11:07
by hacchi1030
いろいろと、アドバイスありがとうございます。

今ほど、試していたのですが
一度保存したコンテンツ(?)をすべて削除し
保存しなおしたら、うまくいきました。

おそらく、運用中にスキーマへgroup="True"と
書き加えたことが原因かなあ、という気がするのですが。。。
どうも、基本的なことが原因だったようです。
お騒がせしましたm(__)m