We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 32580
    • 25 Posts
    毎度お世話になります。
    今回はGetFieldです。タイトルの通り、unpublishedのドキュメントの親ドキュメントの情報をとりたいのですが、
    GetFieldはpublishedのドキュメントのみ対応で、カスタマイズできそうにありません。
    assets/snippets/getfield/getfield.inc.php
    をみたのですが、それらしきものがみあたりません。

    GetFieldの問題ではないのでしょうか?
      • 15497
      • 117 Posts
      GetFieldの中で使っている「$modx->getDocument」は、
      「manager/includes/document.parser.class.inc.php」を見ると以下のような引数をとるようになっていますね。
          function getDocument($id= 0, $fields= "*", $published= 1, $deleted= 0) {
      

      3番目の引数で、公開のもの「1」か、非公開のもの「0」か、どちらかを指定するようになっているようです。
      (デフォルトは、公開=1)
      非公開だけのもので良いのでしたら、
      「$modx->getDocument($gfIntDocId,’parent’)」の部分を
      「$modx->getDocument($gfIntDocId,’parent’,0)」のようにすれば良いような気がします。
      (確認はしていません)

      もし、公開も非公開も両方必要ということでしたら、
      「$modx->getDocument」は、中で「$modx->getDocuments」を呼び出してますが、こちらも同様で、
      公開も非公開も両方という指定はできないようです。
          function getDocuments($ids= array (), $published= 1, $deleted= 0, $fields= "*", $where= '', $sort= "menuindex", $dir= "ASC", $limit= "") {
      


      ざっと見た感じで言うと、
      「$modx->getPageInfo」なんかが代わりに使えないかなぁ?という気もしないではないですが、定かではありません。
        ★日本公式フォーラム2009年9月1日本格始動!★
        http://modxcms-jp.com/bb/

        ▼ウェブ屋のCMS→modxヒキダス流(備忘録)
        http://d.hatena.ne.jp/hikidas_ikeda/
        ▼制作済みHTMLページをmodxで更新するデモ
        http://www.hikidas.com/hikidas/modx_document/modx_demo_osc2009kansai.php
        • 32580
        • 25 Posts
        ありがとうございました。

        「$modx->getDocument($gfIntDocId,’parent’)」の部分を
        「$modx->getDocument($gfIntDocId,’parent’,0)」のようにすれば良いような気がします。
        これは調べてみつけていたのですが、0にしてもfalseにしても変わりませんでした。1やtrueだと取得されるのに、0やfalseではなにも取得されませんでした。

        そこで、getPageInfoをつかうとうまくいきました。
        「$modx->getDocument($gfIntDocId,’parent’)」の部分を
        「$modx->getPageInfo($gfIntDocId,0,’parent’)」とすることで、
        公開・非公開に関係なく取得されるようになりました。

        さらに改造して、パラメーターをつけました。
        getFieldスニペットに、
        # $published [ 0 | 1 ]
        # Default: 1
        $gfPublished = (isset($published)) ? $published : 1;
        

        をつけ、スニペットコードに$gfPublishedをいれて、
        「$modx->getPageInfo($gfIntDocId,0,’parent’)」
        も
        「$modx->getPageInfo($gfIntDocId,$gfPublished,’parent’)」
        としました。
        これでうまくいったようです。
        ありがとうございました。