[mayaa-user:748] Re: テンプレート機能のカスタマイズについて

suga [E-MAIL ADDRESS DELETED]
2009年 2月 14日 (土) 15:33:12 JST


suga です。

2009/2/13 長島 正 <[E-MAIL ADDRESS DELETED]>:
> はじめまして、長島と申します。
> Mayaaについて質問があり、投稿させて頂きました。
>
> テンプレートの切り替えをフォルダで切り替えたいのですが
> 可能でしょうか。


Engine の実装を差し替えることで実現できます。


たとえばこんなクラスを作って

public class ExampleEngine extends EngineImpl {

    @Override
    public String getTemplateID(Page page, String suffix, String extension) {
        String pageName = page.getPageName();
        int lastSeparator = pageName.lastIndexOf('/');
        StringBuffer nameBuffer =
                new StringBuffer(pageName.substring(0, lastSeparator));

        String subpath = suffix;
        if (StringUtil.isEmpty(subpath)) {
            subpath = "default";
        }
        nameBuffer.append("/");
        nameBuffer.append(subpath);
        nameBuffer.append(pageName.substring(lastSeparator));

        if (StringUtil.hasValue(extension)) {
            nameBuffer.append(".");
            nameBuffer.append(extension);
        }

        return nameBuffer.toString();
    }

}


ServiceProvider の設定ファイルにこのクラスを使う定義をします。

    <engine class="example.ExampleEngine">
        (省略。最低限、標準の EngineImpl の定義をそのままコピー)
    </engine>


エラーページも含めすべて同じ指定になりますので、無指定のパスを
"default" にするなら、エラーページも同じように配置しなければ
いけませんので注意してください。

-- 
suga ( [E-MAIL ADDRESS DELETED] )


mayaa-user メーリングリストの案内