We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 15497
    • 117 Posts
    テンプレート変数で、入力タイプを「Date」にすると、カレンダーで入力できる(というか、カレンダーでしか入力できない)のですが、実際に記録されるデータは「06-02-2009 18:00:00」のような文字表現になってしまっています。
    公開開始日時(pub_date)などのように、Unixtimeで記録させる方法はないものでしょうか?

    目的は、たとえばイベントの終了日時をテンプレート変数にして入れておいて、
    [!Ditto? &filter=`hogehoge,@EVAL return time();,4`!]

    のようにして、終わったイベントだけを表示する。(もしくはその逆)
    といった使い方を想定しています。

    ウィジェット「Unixtime」も、わらをもすがる気持ちで試してみましたがダメでした。 sad
    (ウィジェットが効くのって、スニペットよりも後の段階ですよね?)

    なにとぞ、よろしくお願いします。

    #
    老い先短いUnixtimeで、日時を管理するというのも、どうかとも思いますが、
    ま、2038年まで、今のままMODxを使っているかどうかわかりませんので。 grin
      ★日本公式フォーラム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
      • 6350
      • 421 Posts
      Add a Blog Entry で使われているチャンク FormBlog を参考に追ってみてはいかがでしょうか。

      これは公開日時を入力する部分でこれを真似て site_content テーブルに int 型のカラムを作ったほうが早そうですが。
      これを取り出すところまでつくりこむ必要があるので DB_API まで勉強が必要になりますが。

      もしくは書き込むところからテンプレート変数に持っていければテンプレート変数も数値型でいけそうな気がします。
        • 15497
        • 117 Posts
        dainitiさん、ありがとうございます。

        つまり、newspublisherの以下の部分をどこかに組み込むということですね。
        プラグインか何か、作るしかないのかな?
                    // check published date
                    if($pub_date=="") {
                        $pub_date="0";
                    } else {
                        list($d, $m, $Y, $H, $M, $S) = sscanf($pub_date, "%2d-%2d-%4d %2d:%2d:%2d");
                        $pub_date = strtotime("$m/$d/$Y $H:$M:$S");
        
                        if($pub_date < $createdon) {
                            $published = 1;
                        }    elseif($pub_date > $createdon) {
                            $published = 0; 
                        }
                    }
        
          ★日本公式フォーラム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
          • 36592
          • 970 Posts
          Quote from: kazuike at Feb 06, 2009, 03:46 AM

          ウィジェット「Unixtime」も、わらをもすがる気持ちで試してみましたがダメでした。 sad
          あれ? 入力タイプをDateにして、ウィジェットをUnixtimeにしても駄目でした?
          MySQLのデータベースを直接覗くと日付の形で格納されていると思いますが、[*tvName*]の形式で使えばUnixtimeで出力されませんか?
            • 15497
            • 117 Posts
            tkfm さん、ありがとうございます。

            Quote from: tkfm at Feb 06, 2009, 08:05 AM

            [*tvName*]の形式で使えばUnixtimeで出力されませんか?
            表示はUnixtimeでちゃんと(値そのものを確認したわけではありませんが、それらしい値で)表示されました。
            しかし、Dittoのフィルタ↓はちゃんと働きませんでした。
            [!Ditto? &filter=`hogehoge,@EVAL return time();,4`!]

            使い方が間違っているのかな?
            「hogehoge」の部分を「pub_date」に変えると、ちゃんと機能したのですが。
            (もちろん「&showPublishedOnly=`0`」にして確認しました)
              ★日本公式フォーラム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
              • 15497
              • 117 Posts
              すみません。

              ウィジェットをUnixtimeにした状態で、ちゃんとDittoのフィルタも機能しました。

              先のレスをした後、なんとなく気になって、よく見てみると、
              テスト用に入れた日付がずれていました。
              おはずかしい限りです。orz

              ということで、無事解決しました。 tongue
              お騒がせしました。
                ★日本公式フォーラム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
                • 6350
                • 421 Posts
                [!Ditto? &filter=`hogehoge,@EVAL return time();,4`!]

                Ditto の &filter なんてはじめて知りました。( ..)φメモメモ

                @EVAL が Revolution 2.0 系からなくなったらどうすればいいんでしょうか? huh
                  • 15497
                  • 117 Posts
                  まとめておきます。(0.9.6系について)…すみませんが、Revolution系についてはわかりません。

                  概要
                  テンプレート変数に入力した日時を超えたかどうかでリスト表示を絞り込む。

                  具体例
                  テンプレート変数で、イベント終了日時を入力し、終わったイベントだけをリスト表示する。(もしくは、逆に終わっていないイベントだけをリスト表示する。)

                  問題点
                  入力タイプに「Date」を設定しただけでは、日時の文字「%d-%b-%Y %H:%M:%S」で記録されるので、Dittoのフィルタ(比較条件)などに使えない。

                  解決方法
                  ウィジェット「Unixtime」を使用して、数値(Unixtime)に変換する。

                  実装のポイント

                  1.日時用のテンプレート変数
                  ・入力タイプに「Date」を設定する。
                  ・ウィジェットに「Unixtime」を設定する。

                  2.リスト表示
                  Dittoスニペットを使って、終わった(テンプレート変数に入力した日時を超えた)ものだけを表示する場合、
                  以下のようなフィルタを設定する。
                  [!Ditto? &filter=`hogehoge,@EVAL return time();,4`!]

                  ※「hogehoge」の部分は、実際のテンプレート変数名を入れる。
                  ※逆に、終わっていない(テンプレート変数に入力した日時に達していない)ものだけを表示する場合は「4」を「3」「5」逆の判定(*1)に変えれば良い。
                  (*1)Dittoのフィルタの大小比較は以下のようになっています。

                  • 3:<
                  • 4:>
                  • 5:≦(実際はバグで≧)
                  • 6:≧(実際はバグで≦)
                  ★Dittoのフィルタの「5」「6」は判定が逆というバグがあるとのことで、該当箇所を訂正しました。(2009-02-07)
                    ★日本公式フォーラム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
                    • 26012
                    • 324 Posts
                    kazuikeさん、まとめありがとうございます。
                    Dittoのfilter機能は私もよく使うのですが、日付の処理は試したことがなかったので大変勉強になります。
                    filter内のバインドは、Let’s Enjoyで不明項目になっており、使えることが分かったのは大きな収穫でした。

                    補足になりますが、filterの比較演算には障害があり、JIRAに報告済みです。
                    この機能を使われる方は以下も参照していただければと思います。5 または 6を使う場合は要修正です。
                    http://modxcms.com/forums/index.php/topic,24564.msg188581.html#msg188581
                      • 6350
                      • 421 Posts
                      Quote from: sama55 at Feb 06, 2009, 07:50 PM

                      filter内のバインドは、Let’s Enjoyで不明項目になっており、使えることが分かったのは大きな収穫でした。
                      Ditto 2.x で詳しく説明があります。始めて見ましたが非常に勉強になります。
                      http://modx.liolion.net/resource/ditto2.html

                      kazuike さんのメッセージがなかったら気が付かなかったかも embarrassed
                      また、MEGU さんという存在がなければ modx の普及には大きな障害となっていたでしょう。

                      ここでまとめずに 「事例集、テュートリアル」 の方へ入れといてほしいです。ここは、流れてしまうと見つけるのが大変なので。