We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33072
    • 25 Posts
    >MEGUさん
    どんどん晒してやってください。
    いろんなソースから切り貼りしたものですから、出来れば識者の方の目にとまって、もっと洗練されたものにして欲しいです。 laugh
      • 10613
      • 5 Posts
      皆さんの反応を見ていると、
      やはり今までこういうの存在していなかったんですね。
      あるいは自作して済んじゃってたか。

      yassiさん
      &extenderの使い方、とても参考になります。
      有用なコードをありがとうございます。使わせていただきます。
      一つついでのお願いというか wink、、、
      「日単位」で判断してもらえると、非常にありがたいんです。
      例えば ドキュメントAは 2007.09.20 10:30に作成されていて
      もうひとつのドキュメントBは2007.09.20 11:00に作成されていたとして
      Dittoの表示は年月日までだった場合、
      現在時刻によってはドキュメントBだけ「NEW印」って事になると、
      「何で huh」って人がいるんで。僕の周辺にはこういう人が多くて、、、
        • 33072
        • 25 Posts
        「日単位」で判断してもらえると、非常にありがたいんです。
        例えば ドキュメントAは 2007.09.20 10:30に作成されていて
        もうひとつのドキュメントBは2007.09.20 11:00に作成されていたとして
        Dittoの表示は年月日までだった場合、
        現在時刻によってはドキュメントBだけ「NEW印」って事になると、
        「何で Huh」って人がいるんで。僕の周辺にはこういう人が多くて、、、
        ああ、なるほど、確かにそうかもしれませんね。
        前回投稿したコードの14行目あたりの、
        $now = time();

        を
        $now = mktime(0,0,0,date("n"),date("j"),date("Y"));

        に変更してみて下さい。
        十分な検証は行っておりませんが、たぶん期待通りの挙動になると思います。というか思いたいです。 grin
          • 33072
          • 25 Posts
          すいません、ちょっと質問なんですが、スニペットの引数に「=」の文字は使えないんでしょうか?
          色々遊んでいて、NEWマークを画像にしてやろうと思い、
          &newMark=`<img src="hoge.png" />`

          と渡してやると期待通りにはならず、吐き出されたHTMLソースを見ると
          <img sr

          となってしまいます。
          バックスラッシュでエスケープしてみても駄目でした。
          別の方法で「=」を書かなくてもいいようにはしたんですが、スニペットに「=」を渡す方法はないんでしょうか?
            • 10613
            • 5 Posts
            yassiさん

            遅くなりましたが、日単位での比較の件、まずはお礼を。ありがとうございます。
            まだ実際に組み込んで使ってはいなかったんですが、
            最新の情報だと、<img src=がダメだとか、、、
            試したところ私のところでもダメでした。

            探してみたら、こんなのが
            http://modxcms.com/forums/index.php/topic,1944.0.html
            http://modxcms.com/bugs/task/175
            ずいぶん前からBUGとして認識はされているみたいですが、未だ解決には至ってないんですね。

            追伸:
            ちなみにpieXというスニペットでは、
            パラメータにrssフィードのURLをを指定する必要があって、
            その時に=の場合、|xe|に置き換えて指定しなさいと書かれています。
            この問題の対策なのかもしれません。

            実際にはスニペット内の処理で、|xe|を=に戻しているようです。
            他にも、?と&を同様に置き換えるよう指定されていますので、
            =以外にもスニペットに渡せない文字が多々ありそうな。。。
              • 33072
              • 25 Posts
              そうなんですか、=などは使えないんですね、知りませんでした。
              ということでZeRoさんのコードをお借りしたものに置き換えてみました。ZeRoさん、すいません(^_^;)
              <?php
              
              $placeholders['newicon'] = array("editedon,createdon,pub_date","whatsNew");
              
              $newDays = isset($newDays) ? $newDays : 7;
              $newPerDate = isset($newPerDate) ? $newPerDate : 0;
              
              $order = array("|xq|", "|xe|", "|xa|");
              $replace = array("?", "=", "&");
              $newMark = isset($newMark) ? str_replace($order, $replace, $newMark) : "NEW!!";
              
              $GLOBALS['ditto_newicon'] = compact("dateSource","newDays","newPerDate","newMark");
              
              if (!function_exists("whatsNew")) {
                function whatsNew($resource) {
                  global $modx, $ditto_newicon;
              
                  $now = ($ditto_newicon["newPerDate"] == 1) ? mktime(0,0,0,date("n"),date("j"),date("Y")) : time();
                  $timestamp = ($resource[$ditto_newicon["dateSource"]] != "0") ? $resource[$ditto_newicon["dateSource"]] : $resource['createdon'];
              
                  $erapse = $now - (intval($timestamp) + $modx->config["server_offset_time"]);
                  if ($erapse <= $ditto_newicon["newDays"]*60*60*24) {
                    return $ditto_newicon["newMark"];
                  }
              
                  return "";
                }
              }
              
              ?>

              pieXと同じように&newMarkで
              ?  =  &

              はそれぞれ、
              |xq|  |xe|  |xa|

              に置き換えれば使えるようになります。
              例えば、
              <img class="new" src="/images/new.png" alt="new" />

              は
              <img class|xe|"new" src|xe|"/images/new.png" alt|xe|"new" />

              という感じに置き換えます。

              ついでに、
              &newPerDate=`1`

              で日にち単位で計算するようにしました。何も指定しなければ現在時刻から計算します。