開発メモ

開発用のメモです。

CMSDesignerで メニューを入れ子にする (リストの入れ子方式)

cat cmsdesigner/config/schema/menu/menu.schema.xml

<?xml version="1.0" encoding="UTF-8"?>
<schema name="menu" caption="メニュー用" >
        <data name="title" type="text" output="html1" caption="見出し" />
        <data name="url"   type="text" caption="リンク先" />
        <data name="sort_order" type="text" caption="ソート順序" size="5"/>
        <data name="menu_1" caption="サブメニュー" type="list">
                <listitem  caption="サブメニュー">
                        <data name="title" type="text" output="html1" caption="見出し" />
                        <data name="url"   type="text" caption="リンク先" />
                        <data name="sort_order" type="text" caption="ソート順序" size="5"/>
                </listitem>
        </data>
</schema>

cat cmsdesigner/config/schema/menu/menu.list.default.design.xsl

<?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">
    <ul>
    <xsl:for-each select="entry">
        <li><a href="{url}"><xsl:value-of select="title" disable-output-escaping="yes" /></a>
                <ul>
                <xsl:for-each select="menu_1/listitem">
                        <li><a href="{url}"><xsl:value-of select="title" disable-output-escaping="yes" /></a></li>
                </xsl:for-each>
                </ul>
        </li>
    </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>

テンプレート

<?php require( "cmsdesigner/include/view.php.inc" ); // encoding="euc-jp" ?>
<cmsd:entrylist name="menu1" design="default" rows="10" >
    <cmsd:sort key="@id" order="asc"  />
</cmsd:entrylist>
<?php cmsd_end_template(); ?>
Twitter: @asahina_alice