We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 20953
    • 70 Posts
    MODxで作ったドキュメント(仮にinnerというエイリアスでidを10とします)の内容(コンテンツ部分)を、同じMODxの他のドキュメント(仮にouterというエイリアスでidを11とします)に呼び出して(埋め込む?)表示させるにはどうすれば良いのでしょうか?
    outerにinnerのコンテンツ部分だけを表示させたいのです。
    確か、出来たように覚えているのですが、やり方を覚えていません。つまらない質問(特に利用頻度も炊くないような)で申し訳ないのですが教えてください。
    よろしくお願いいたします。
      • 36592
      • 970 Posts
      GetField スニペットを使うか、TVに @DOCUMENT バインディングを使えば良いような気がします。
        • 6350
        • 421 Posts
        僕ならこうする例
        tkfm さんお勧めの GetField は $modx->getDocument で同じことができるはずなので僕はなるべく他人の作ったスニペットに頼らない方法を常に考えています。
        Quote from: tkfm at Apr 20, 2009, 03:11 AM

        TVに @DOCUMENT バインディングを使えば良いような気がします。
        でも、上記の場合は具体的にどのようなコードを書けばいいのか非常に興味があります。
        naoya さんが以前できたはずの方法も思い出したら教えてください。

        以下の2つの方法は思いつく限りの僕の自己流での解決方法です。
        (1)スニペット自作の場合

        スニペット名を「getDocument」とした場合
        <?php
        $docs = $modx->getDocument($id,'content');
        return $docs['content'];
        ?>


        ドキュメントid=11 outer からスニペットコールで以下のように呼び出す。
        [[getDocument? &id=10]]


        (2)もしくは、ditto を使う場合 startID は親のフォルダID を指定してください。

        ドキュメントid=11 outer からスニペットコールで以下のように呼び出す。
        [[Ditto? &filter=`id,10,1` &startID=`0` &tpl=`hogehoge_tpl`]]


        チャンク hogehoge_tpl
        <div>[+content+]</div>



        参考文献

        Let’s Enjoy MODx http://modx.liolion.net/resource/ditto2.html
          • 36592
          • 970 Posts
          modxは自由度の高さがウリですからね~
          同じことをするのにもいろんなやり方があります。

          私は既存のパーツは上手く活用する派です。 tongue

          Quote from: dainiti at Apr 20, 2009, 07:28 AM

          Quote from: tkfm at Apr 20, 2009, 03:11 AM

          TVに @DOCUMENT バインディングを使えば良いような気がします。
          でも、上記の場合は具体的にどのようなコードを書けばいいのか非常に興味があります。
          コードなんて要りませんよ。
          テキスト型のテンプレート変数(例えば[*SomeTV*])を作って、その値として「@DOCUMENT 10」と書けば良いだけです。
          で、そのテンプレート変数をコンテンツ部分で[*SomeTV*]とか使えばOKのはずです。
            • 6350
            • 421 Posts
            tkfm さんには FDM から ditto で最新時刻の取得方法までいろいろお世話になっています。
            でも、株式とFXをとってしまえば tkfm さんにはいったい何が残るの... おどろきの連続です。だってフォーラム中を探し回っても document.parser.class.inc.php を探ってもこんな方法は見当たりません、たぶん。

            「@DOCUMENT 10」とかの書き方で内容の呼び出しに成功しました。小文字ではダメみたいですね。
            ひとつのドキュメントから複数のドキュメントを呼び出すのも無理みたいですね(呼び出したいだけの数のテンプレート変数を宣言すればできそうだけど)。

            たぶん、naoya さんの望む解決方法は GetField 方式かな。。。
              • 20953
              • 70 Posts
              皆さん色々とご指導ありがとうございます。

              なんか覚えていたのと違うようなので、きっと私が忘れている方法は他のCMSだったかもしれません。
              とりあえずお知恵をお借りしていろいろやってみます。

              ありがとうございました。