開発メモ

開発用のメモです。

CMSのスキーマのメニューアイテムを動的に生成する。

スキーマ自動生成

※ ソースを見やファイルに保存でSchemaを上書きする必要あり

infomation.schema.xml.php

<?php require( "cmsdesigner/include/view.php.inc" ); // encoding="euc-jp" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<cmsd:output encoding="UTF-8" />
<schema name="infomation" caption="インフォメーション">
   <data name="subject"    type="text"     output="html1" caption="件名" />
   <data name="content"    type="textarea" output="html1" caption="内容" />
   <data name="categories" type="list" caption="カテゴリー" >
      <listitem caption="カテゴリー">
         <data name="category" type="menu" output="html1" caption="カテゴリー" >
            <cmsd:entrylist name="category1" design="menuitem" >
              <cmsd:sort key="@id" order="asc"/>
            </cmsd:entrylist>
         </data>
      </listitem>
   </data>
</schema>
<?php cmsd_end_template(); ?>

デザイン

category.menuitem.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">
    <xsl:for-each select="entry">
      <menuitem id="{@id}"><xsl:value-of select="category_name" /></menuitem>
      <xsl:for-each select="categories/listitem">
      <menuitem id="{../../@id}-{@id}"><xsl:value-of select="name" /></menuitem>
      </xsl:for-each>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

更新方法

wget http://xample.com/infomation.schema.xml.php -O /var/www/htdocs/cmsdesigner/config/schema/infomation/infomation.schema.xml
Twitter: @asahina_alice