We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 27933
    • 3 Posts
    MODx、いつもとてもありがたく使用させていただいてます。
    今回、テンプレート変数の設定、出力結果で、良くわからない問題にあたってしまったので、初めて書き込みさせていただきました。ご教授いただける方がいらっしゃいましたらよろしくお願いいたします。

    テンプレート変数作成、利用時に各種設定を以下のようにします。すると、最終的なWEBページでは、どのようなHTMLソースになるのが正解なのでしょうか?

    テンプレート変数の設定
    変数名:test
    見出し:test
    説明:未入力(空白)
    入力タイプ:Check Box を選択
    入力時のオプション値:関東==http://hogehoge.jp||中国==http://www.goro.com||東北==http://www.jiro.co.jp
    既定値:未入力(空白)
    ウィジェットはhyperlinkを選択。パラメーターの値はすべて未入力(空白)です。

    テンプレート変数設定後、ドキュメントの作成時にテンプレート変数[*test*]を入力し、テンプレート変数から「関東」を選択します。すると出力されるHTMLソースは、以下のようになります。

    <a href="http://hogehoge.jp" title="http://hogehoge.jp">http://hogehoge.jp</a>


    これは、仕様上、正しい出力結果なのでしょうか?
    こちらのコミュニティーで著作された本を読み(大変お世話になっています)、このwidgetを試してみたのですが、私の理解では、以下のように出力されるものだと考えていました。

    <a href="http://hogehoge.jp" title="関東">関東</a>


    ちなみに「入力時のオプション値」の値を丸ごと「既定値」に移動させ、出力されるソースを見てみると以下のようになっています。

    <a href="http://hogehoge.jp" title="関東">関東</a><br />
    <a href="http://www.goro.com" title="中国">中国</a><br />
    <a href="http://www.jiro.co.jp" title="東北">東北</a><br />


    また、「入力時のオプション値」と「既定値」の両方に値を入力すると、「入力時のオプション値」から選択したものだけが出力され「既定値」のものが全く出力されません。

    これら一連の出力結果は、正解なのでしょうか?

    http://modxcms.com/hyperlink-widget.html のページでも確認してみたのですが、どのような結果になるのが正しいのか、もうひとつ、飲み込めません。おそらく、実際の出力結果が正解なのだと思うのですが、ホントの一番最初にだけ、期待していた結果が出ていたように思うので、該当ドキュメントのキャッシュを可、非、両方で試して、ブラウザのキャッシュもクリアしたりしてみましたが、以降は、変わらずです。
    仕様であれば、ひとまず納得できるのですが、自身が期待していた結果と違っていたため、少しあきらめが付きません。やはり、私の理解や設定がおかしいんでしょうか?
    プログラムやPHPがもっと理解できれば、自ずと正解が導き出せそうな気もするのですが、、、参考書片手に丸1日格闘しましたが、ギブアップしてしまいました。とても、初歩的なことかもしれず恐縮しますが、どなたか、よろしくお願いいたします。

    それから、試した環境は、
    MODxのバージョン0.9.6.1
    rev 3118

    レンタルサーバー
    PHP Version 4.4.2
    Linux
    Apache

    ローカル環境Xampp
    PHP Version 5.2.0
    Windows NT
    Apache 2.0 Handler

    です。どちらも同じ結果でした。重ねてよろしくお願いいたします。

      • 36592
      • 970 Posts
      こんにちは~

      同じような申告がここにもありますね。
      http://modxcms.com/forums/index.php/topic,20735.0.html

      CheckBoxで、例えば関東と東北を選択して保存すると、DB上は...
      http://hogehoge.jp||http://www.jiro.co.jp

      と保存されています。
      manager/includes/tmplvars.format.inc.phpを眺めていたんですが、これって
      関東==http://hogehoge.jp||東北==http://www.jiro.co.jp

      と保存されないといけないんぢゃないかなぁ~?
      試しにDBを無理やりこのように書き換えたら、ご所望の表示になりますね。

      CheckBoxだけじゃなくて、ListBox-MultiSelectでも同じ現象が起きます。

      テンプレート変数の保存って、どのファイルを見ればいいのかな?
        • 27933
        • 3 Posts
        こんにちは。

        tkfmさま、早々の反応、ありがとうございます。

        私もおそらく、一部tkfm様と全く同じような手順を踏んでいると思うのですが、、、

        まずmanager/includes/tmplvars.format.inc.phpの中のhyperlinkに関する構文を解読しました。
        そして、出力結果と照らし合わせ、これは「規定値」に入力された値に対する構文なのかな、と判断しました。
        それで、「入力時のオプション値」を処理する構文はどこにあるのか探したんですがわからず、これはひょっとすると、この構文に値が渡される前に何かの処理が行われているのかなと考えました。ところが、ここでふと「果たして、自分の考えている出力結果はただの思いこみでは?」という考えが沸き、検索をかけて調べてみました。自分と同じような自分が望むのと同じような出力結果を説明されているサイトを見つけたり、tkfmさま紹介の記事も見たんですが、決定的にこれが正解というのがわからず、しかも、自分のPHPの理解力は超初心者レベルなので、頼りにならず、もし仮に実際の出力結果が正解だとしたら、どういう目的で使えばよいのだろう、、、そもそも自分の設定はおかしくないのかな?インストールの時に間違ったかな、、、などと考えていると、すっかりわからなくなり、誰かにリセットボタンを押してもらおうと、こちらに書き込みした次第です。

        DBは、まだのぞいてみなかったですし、テンプレート変数の保存を司るファイルも調べていないので(といいますかそこまで行き着けませんでした)、自力でもう少し、変数の持つ意図を探ってみます。何となく、プログラムの方がおかしいのかな、という気がしてきましたが、ただ、やっぱりはっきりと正解がわからないととても使いにくいので、引き続き正解をご教授いただける方がいらっしゃいましたら、なにとぞよろしくお願いいたします。

        tkfmさま、ありがとうございました。もう少し先に進めそうです。また、わからなくなったら書き込みさせていただくかもしれません。その時はよろしくお願いいたします。

        私と同じような私が望むのと同じような出力結果を紹介されてるサイトなどもあったので、おそらく、何か変?と思ってる方が他にもいらっしゃるのじゃないかなと思います。
        何が、どうして、どうなったのか、もし調べて、わかったことがあれば、また、こちらのフォーラムでご報告させていただこうと思います。

          • 36592
          • 970 Posts
          Quote from: tkfm at Feb 16, 2008, 12:02 PM

          CheckBoxで、例えば関東と東北を選択して保存すると、DB上は...
          http://hogehoge.jp||http://www.jiro.co.jp

          と保存されています。
          の件ですが、やっぱりこれが正解のような気がします。
          CheckBoxとかはあくまでも入力タイプなので、管理画面で値を入力するのを支援するだけだからです。
          (設計思想の問題かもしれませんが...)

          DB上で「関東==http://hogehoge.jp」と保存されればsolaさんが期待されているHyperlinkウィジェットの出力になるのは分かっているんで、CheckBoxで何とかこれを値として保存できないかと「関東==’関東==http://hogehoge.jp’」とかいろいろ試してみましたが、値の中に「==」が含まれていると上手く行きませんね... CheckBoxの入力タイプではなくTextとかにすれば問題ないのでしょうが、入力するのが面倒&誤りやすくなります。

          私の浅いMODxとPHPの知識でいろいろ考えてみましたが、Solaさんの最初の投稿に対しては、それが動作として正解としか言いようがない状況です。

          ただし、MODxの良いところは何といっても拡張性の高さだと思います。Solaさんがイメージしている機能は別のやり方でいかようにも実装できると思います。例えば、CheckBoxについては値を「関東==1||関西==2」のようにして値のみを入力しておき、これをスニペットで読み出して所望のハイパーリンク型式にして出力するとか、あるいはもう1つ別のテンプレート変数(入力はTextで出力はHyperlink)をつくって、「@eval」でCheckBoxで入れた前記のテンプレート変数の値を使って所望の値(「関東==http://hogehoge.jp」とか)をreturnしてやれば良いと思います。

          テンプレート変数の良い勉強になりました! 有難うございました。
            • 27933
            • 3 Posts
            tkfmさま、ありがとうございます。

            喉につっかえていたものがグビッと飲み込めた気分です。

            私も自分なりに調べてみて、プログラム的には何も問題がないのだろうと思いました。エラーが出るわけでもないですし、出力結果が使えないわけでもありませんのであたりまえといえばあたりまえです。
            ただ、これを考えた人が意図したものと出力結果が合っているのかどうかは、やっぱり不明です。ですが、自分なりに調べてみて、そんなことはもう気にせずに出てきたものをありのままに受け止めて、自分の使いやすいように使っていけば良いんじゃないかな、と考えていました...そんな矢先...tkfmさまの投稿を拝見しました。
            読んだ瞬間、思わずうなってしまいました。

            今まで、XOOPSやPLONE,Joomlaなどを使ってみたんですが、どうもしっくりきませんでした。それぞれに良いところはあると思うのですが、何というか、近所の小川に橋を架けたいだけなのに、気がついたら明石海峡大橋を架けてしまっていたというような気分で、個人的にはなじめませんでした。それで結局最近は、昔ながらのHTMLエディターで直接ソースを書いて、コミュニティーサイトや更新が頻繁なサイトには、PukiwikiやWordpressなどをひっつけるというやり方をしていました。そんな時、このMODxに出会い、テンプレートの仕組みなど、他のものとは基本的な考え方が違っていることに大いなる可能性を感じました。

            今までは、何でもかんでも結果オーライでした。「設定、合ってるのかなあ?」と思うようなことでも、結果が良ければそれで良しということにしていました。ところがMODxからは、今まで避けていたPHPを本気で勉強させたくなる素晴らしい魅力を感じてしまい、そんなことからも今回のwidgetに関する問いかけをさせていただいた次第です。納得いくまで調べようという考えがあったんですが、投稿してからは「また、プログラムに振り回されるだけなのかな」という気持ちが正直ちょっとありました。

            ホントに、tkfmさまの投稿を拝見すると、MODxの拡張性の高さは特筆もののような気がします。
            まだ自分で確信できるところまではいっていないのですが、改めて可能性を感じました。
            MODxのテンプレートの仕組みがあるだけでも、私には目からウロコ状態なので、あんまりわがまま言わずMODxを有意義に使いこなせるようにがんばります。

            それでもやはり、明確な正解がわからないと私のようなMODx初心者には不安です。それがすべてだとは思いませんが、そういう時のためにこのコミュニティーはあると思います。これからはじめる方々が同じ轍を踏まないためにも、私なりに使っていてわかったことをできる限り投稿させていただくようにします。

            こんなこと、ここに記すような内容ではないないと思います。申し訳ありません。次からはもっと有用な投稿ができるように精進いたします。

            ありがとうございました。
              • 36592
              • 970 Posts
              solaさん

              根本的な問題の解決ができずにスミマセン。

              何しろ私も単なる趣味でMODxを勉強していますんで、他の人のフォーラムでの質問を題材にしながら勉強しています。
              何かアドバイスできる内容の質問がありましたら、どんどん書き込んでくださいね!

              ちなみに、ウィジェットについてはスニペットを使えばどんなものでも出来上がってしまいます。
              英語ですがこんな感じに...
              http://wiki.modxcms.com/index.php/Adding_TV_Widgets_without_hacking_the_core
              この拡張性の高さが良いですよね!

              明石海峡の話、私も似たような経験があります。
              この、ちょっとしたカスタマイズのしやすさがMODxの魅力ですね!