[mayaa-user:930] Re: テンプレートのjs/cssをレイアウトに渡す

suga [E-MAIL ADDRESS DELETED]
2012年 2月 19日 (日) 18:20:10 JST


suga です。

これはm:insertに対応するm:doRenderはひとつという仕様のためです。
m:insertは描画の際にm:doRenderを探し、最初に見つかった(nameの一致する)ひとつを
描画に使います。


解決策としては以下の2つがあります。

- テンプレート側のstyleをspanなどのタグで囲んでひとつにする
    (当然テンプレート状態ではHTMLとして不正ですが、出力されたものは妥当にできます)

- stylePosition1〜 と数を増やして不要分はm:nullで消す
    (default.mayaaに全部のm:nullを書いておけばテンプレート側のmayaaにm:nullは不要です)

テンプレート状態でのHTMLが妥当でなくとも問題なければ前者が良いと思います。
HTMLのvalidationをしっかりかける場合は後者の方が良いでしょう。


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



2012/2/19 eihan <[E-MAIL ADDRESS DELETED]>:
> はじめまして。
> eihanと申します。
>
>
> 以前MLにて投稿のあった、
> [mayaa-user:818] テンプレートから共有レイアウトへのスタイルシートまたは
> スクリプトの転写
> と同様の内容となるかと思いますが、うまく行っていないので質問させてください。
>
>
> [mayaa-user:818]をまねて、下記のようなテンプレート、レイアウトを
> 記述しました。
>
>
> mayaaバージョン 1.1.18
>
> レイアウトhtml
> --------------------------------------------------------------------
> <head>
>  <link rel="stylesheet" type="text/css" href="hoge.css">
>  <link m:id="stylePosision">
>  <sctipt type="text/javascript" src="hoge.js"/></script>
>  <script m:id="scriptPosision"></script>
> --------------------------------------------------------------------
>
> レイアウトmayaa
> --------------------------------------------------------------------
>  <m:insert m:id="stylePosition" name="styles" replace="true" />
>  <m:insert m:id="scriptPosition" name="scripts" replace="true" />
> --------------------------------------------------------------------
> ここのreplaceはtrueに変更してあります。
> falseにすると、挿入用の<script id="scriptPosision">が残ってしまうため。
>
> テンプレートhtml
> --------------------------------------------------------------------
> <head>
>  <link type="text/css" rel="stylesheet" href="fuga1.css">
>  <link type="text/css" rel="stylesheet" href="fuga2.css">
>  <script type="text/javascript" src="fuga1.js"></script>
>  <script type="text/javascript" src="fuga2.js"></script>
> --------------------------------------------------------------------
>
> テンプレートmayaa
> --------------------------------------------------------------------
>  <m:doRender m:xpath="/html/head/link" name="styles" replace="false" />
>  <m:doRender m:xpath="/html/head/script" name="scripts" replace="false" />
> --------------------------------------------------------------------
>
> 結果html
> --------------------------------------------------------------------
> <head>
>  <link type="text/css" rel="stylesheet" href="hoge.css">
>  <link type="text/css" rel="stylesheet" href="fuga1.css">
>  <script type="text/javascript" src="hoge.js"></script>
>  <script type="text/javascript" src="fuga1.js"></script>
> --------------------------------------------------------------------
> このように、xpathで指定したテンプレートhtmlのタグ1行目は、
> レイアウトに渡るのですが、2行目以降が反映されませんでした。
> htmlやmayaaの記述に問題はありますでしょうか?
> または、代替手段などございますでしょうか?
>
> Mayaa 実践活用 TIPSにあります、
> ・CSS, JavaScriptを差し込む場所を用意する
>  default.mayaaでデフォルトの空定義をする
> 等の具体例をご教示頂けますと非常に助かります。
>
>
> 以上、よろしくお願いいたします。
>
> _______________________________________________
> mayaa-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/mayaa-user


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