We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 33463
    • 35 Posts
    こんばんは。
    NewsPublisherで投稿した記事のRSSを吐き出そうとして問題にブチ当たりましたのでアドバイスお願いします。

    私はNewsPublisherで投稿するときにsummaryを書いておりません。
    フォームから削除してしまっておりましてタイトルと本文のみで投稿しています。
    この場合、DittoでRSSを吐き出してもIE7ではエラー表示されてしまいます。
    [[Ditto? &parents=`2` &language=`japanese-utf8` &format=`rss` &display=`10`]]

    デフォルトでDittoのRSSフォーマットはdescriptionに[+summary+]を表示するようになっていますが、
    無い場合は本文から持ってきて適当な文字数で切ってるようです。
    で、どうもこの本文の切り取りで問題を起こしてるような気がするのです。

    試しにrss.format.inc.phpの[+summary+]を[+content:notags:limit=`160`+]とかにすると
    同じようなエラー表示になります。
    [+content:notags+]のみだとエラーにはなりません。(が、feedには多すぎ^^;)
    また、limit=``を細かく変えていくとエラーの出ない値があります。
    この事から切り取りに問題があるんじゃないかと思いました。マルチバイトだし・・・。

    因みにRSSを指定するとremoveChunkが正常に働かないようでスニペットコードは取り除かれますが
    チャンク内で使っているdivタグだけキレイに残ります。 huh

    RSSではなくhtmlで[+content:limit=`160`:notags+]と表示するドキュメントを作ってみましたら
    案の定、切り取り部分が文字化けしまして文末が"��"←こんなです。Firefoxでは"?"になります。

    Firefoxではエラーにならず表示されるので気付かない人が多いのかも知れません。
    ややこしいんですが、どなたか解決へのアドバイス頂けると嬉しいです。

      • 33072
      • 25 Posts
      まったく試していませんが、assets/snippets/ditto/classes/phx.parser.class.inc.phpの258行目あたりの
      $output = substr($output,0,$limit);

      を
      $output = mb_substr($output,0,$limit);

      でどうでしょう。
      うまくいかなくてもご容赦を grin
        • 33463
        • 35 Posts
        yassiさん初めまして&どもです。

        お見事!! バッチリ解決でございます wink
        これで気分スッキリです、ありがとうございました。

        あとは・・・divタグが残る件。
        気にしないって手もありw
          • 36592
          • 970 Posts
          Quote from: zephyr at Dec 19, 2007, 03:54 AM

          あとは・・・divタグが残る件。
          最初の投稿で書かれているDittoスニペットコールには「&removeChunk」が指定されてないようですが、
          指定してもChunkの中に書いてあるdivタグが表示されるってことなんでしょうか?

          だとすると... Chunk名が間違ってるくらいしか思いつきませんね~
          実際デモコンテンツで作成されるRSSフィードでは、ちゃんとChunk内のdivタグが削除されていますし。

          う~ん、何でだろう? huh
            • 33463
            • 35 Posts
            Quote from: tkfm at Dec 19, 2007, 04:26 AM

            最初の投稿で書かれているDittoスニペットコールには「&removeChunk」が指定されてないようですが、
            指定してもChunkの中に書いてあるdivタグが表示されるってことなんでしょうか?

            だとすると... Chunk名が間違ってるくらいしか思いつきませんね~
            実際デモコンテンツで作成されるRSSフィードでは、ちゃんとChunk内のdivタグが削除されていますし。

            ちょっと詳しく書いてみますね。
            Ditto呼び出しは
            [[Ditto? &parents=`2` &removeChunk=`Comments` &format=`rss` &display=`15`]]

            になってまして
            {{Comments}}は
            <div id="commentsAnchor">
            [!Jot? &captcha=`2` &subscribe=`1` &placeholders=`1` &output=`0` &canedit=`Site Admins` &notify=`2`!]
            [+jot.html.form+]
            [+jot.html.comments+]
            [+jot.html.navigation+]
            </div>

            なんです。
            で、コンテンツが短文だとCommentsに食い込んできてremoveChunkって形だと思うんですが、
            吐き出したRSSのソースを見ると以下のようにスニペットコール部分とプレースホルダーだけキレイに抜き取られています。
            <div id="commentsAnchor">
            
            
            
            
            </div>
              • 36592
              • 970 Posts
              う~ん、普通ですね。 undecided

              もともとデモコンテンツのRSSフィードは
              [!Ditto? &parents=`2` &format=`rss` &summarize=`20` &total=`20` &removeChunk=`Comments` &language=`japanese-utf8`!]

              となっていますので、
              ・とりあえずパラメータの違いである「&display=`15`」を取ってみる。
              ・非キャッシュ型式「[!・・・!]」で書いてみる。
              ・Dittoを最新版の2.1βにしてみる。
              くらいしか思いつきません... :’(
                • 19033
                • 892 Posts
                こんにちは。

                ホントですね。
                <div id="commentsAnchor">
                
                
                
                </div>

                こんな感じで残りますね。。原因は、Comment(チャンク)のなかにプレイスフォルダがあるせい、
                みたいですが...。それがないと、きれいにチャンクが取り去られるようです。なんでだろ。。
                removeChunk が、プレイスホルダがあると何かを誤解しちゃうのかな。。
                  • 29205
                  • 2 Posts
                  こんにちわ、初めて投稿します。

                  書籍や、MEGUさんYAMAさんなどの書き込みのおかげで
                  徐々に理解してきてはいるのですが、私もこの件で今はまっているので
                  何かアドバイスいただけたらと思います。

                  IEを使っての話しです。

                  まず、一番最初にチャンク内で[+content:limit=`100`+]などとPHxを使うと
                  ソースが文字化けして、末尾がしっかり閉まらなくなったりする問題にぶちあたり
                  zephyr さんと同じ事になりました。(PHx部分を消すとソースは日本語に戻ります。)

                  そして、yassiさんの解決方法で$output = mb_substr($output,0,$limit);
                  とマルチバイト仕様にしたところ
                  これもまたzephyrさんと同じく、無事解決出来ました。

                  所がその後、トップページに短く、日付と件名の一部だけを表示する部分を作ろうと
                  <a href="[~[+id+]~]">[+pagetitle+]</a>
                  ↓
                  <a href="[~[+id+]~]">[+pagetitle:limit=`10`+]</a>
                  と新たなチャンクで試みたのですが
                  またもやソースの文字が化けて、閉じる部分でおかしくなってしまうという
                  同じ現象になってしまいました。

                  先輩方に、何かアドバイスを頂けたら嬉しです。

                  どうぞよろしくお願いします。
                    • 36592
                    • 970 Posts
                    mb_substr問題(勝手に命名... tongue)ですが、既にDittoのバグトラックには上がっていますが、Ditto内で100箇所もの場所でsubstr関数が使われているために、本当に全部修正して良いのか? というところで止まってしまっていますね~
                    http://mirror3.cvsdude.com/trac/ditto/codebase/ticket/73
                      • 29205
                      • 2 Posts
                      さっそくのレスありがとうございます~!!
                      mb_substr問題なのですねっ! shocked

                      なるほど、やっぱりそういう認識で間違いないのですね。
                      勉強になりました。修正して使ってみようかと思います~

                      しかし、こういう所でつまづいてる私と同じような初心者の人、たくさんいると思うんですよね~
                      日本人はこのファイルに置き換えだ!!、みたいなファイルがあったら便利ですかね。

                      もうちょっと頑張っていじっていこうと思います~ wink

                      また宜しくお願いします~^-^