tomix

WebSiteのモジュールをインクルードするときの変数

0

こんにちは、MT5と格闘中です。

親WebSiteに、共有モジュールを作成し、子blogからインクルードしています。

この時に、子blogでmt:SetVarsをつかって指定した変数を、WebSite側へもっていけません。

たとえば、

親WebSiteモジュール:header
" class="">

子:メインページ


body_id=research
body_class=research_index

この場合の変数が受け渡せません。

body_id、body_classとも実際の値をいれてあげれば、大丈夫です。
mt:Include内の変数モディファイヤーは、変数定義だから、これが仕様として正しいという理解でいいのでしょうか?

SetVarの場合はいいのですが、SetVarBlockの値を受け渡したい場合はどうするのだろうと悩んでいます。

詳しい方教えて下さい

#追伸
親モジュール内で別の親モジュールをインクルードしている場合、子blogにインクルードする場合、親モジュール内にもblog_id="$website_id " が必要という理解はOKですよね。

返信(6)

| 返信する
  • う、タグが消えてる.... 編集とか削除できない?

  • 親WebSiteモジュール:header
    <body id="<mt:Var name="body_id">" class="<mt:Var name="body_class">">

    子:メインページ
    <mt:BlogParentWebsite><$mt:WebsiteID setvar="website_id"$></mt:BlogParentWebsite>
    <mt:SetVars>
    body_id=research
    body_class=research_index
    </mt:SetVars>
    <$mt:Include module="header" blog_id=$website_id body_id=$body_id body_class=$body_clas$>

  • 自己レスばかりですみません ^^)"

    mt:SetVarsでなく、mt:SetVarでひとつひとつ設定すると動作しました。

    mt:SetVarsだと、親子間だけでなく、子blog内部でのIncludeでも変数がわたらなかったようです。
    これはバグ??

    ちなみに、親WebSiteではmt:SetVarsで動作しています。
    それを子blogにそのままコピペしてもだめでした。

    同様な現象にぶつかった人いますでしょうか?

  • こんにちは、天野です。
    気になったので試してみました。

    手元の環境(MT5.0)で試したところ、コメントに書かれている以下の内容のままで動作しました。
    (「body_class=$body_clas」となっていたところは「body_class=$body_class」に直して検証をしました。)
    -------------------------------------------------------------------------
    親WebSiteモジュール:header
    <body id="<mt:Var name="body_id">" class="<mt:Var name="body_class">">

    子:メインページ
    <mt:BlogParentWebsite><$mt:WebsiteID setvar="website_id"$></mt:BlogParentWebsite>
    <mt:SetVars>
    body_id=research
    body_class=research_index
    </mt:SetVars>
    <$mt:Include module="header" blog_id=$website_id body_id=$body_id body_class=$body_class$>
    -------------------------------------------------------------------------


    ここまでの状況から考えると、そもそも「SetVars」が意図通りに動作していないというのがあるかもしれないと思っています。(SetVarsの場合だけIncludeに引き継がれないということはないはずなので、そもそも変数がセット出来ていないということを考えています。)

    「SetVars」の Perl 側の実装を確認したのですが、改行コードが「CRLF」か「LF」であるという前提になっていたので、改行コードが「CR」となっている場合に意図通りに動作しないかもしれません。(「ファイルへのリンク」機能を使って改行コードを「CR」にするエディタで編集をしている場合とか、テキストエリアの改行コードを「CR」にするブラウザで操作している場合など。)

    そういうケースは考えられないでしょうか。


    また「親WebSiteモジュール:header」ではなく、「子:メインページ」で「<mt:Var name="body_id" />」 「<mt:Var name="body_class" />」ができるかどうかを確認してみると、問題の発生箇所が特定できるかもしれないと思いました。


    いかがでしょうか。

  • 天野さん こんにちは
    検証していただいてありがとうございます

    どうも、なにかのタイミングで「MTSetVars」だけ動作しなくなっているようです。

    特にプラグインを入れてもおらず、こんな事はじめてなんですが....
    ちなみに、MTSetVarsのコードってどこでしょうか?
    そのファイルだけを入れ替えることで、直ったりするかもとかおもいました。

    テンプレートは、基本的にMTの管理画面で記述しており
    その前のHTMLは、LFで保存するようにエディター側も
    設定を統一してはいるのですが....

    MT側の破損ですかね...

  • 再び自己レスです。

    結論として、自分のミスでした。大変失礼しました。
    天野さん、検証までしていただいて本当に申し訳ない...

    いつものテンプレートのくせで、SetVarsに、description,keywordもいれていたのですが、
    そのコンテキストがEntryHogeのままになっていたのが原因だったようです....消して確認したつもりなんですが....

    ほんとお騒がせしました(恥ずかしい...)

返信する


OpenID対応しています OpenIDについて