We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 18003
    • 25 Posts
    いつもお世話になりありがとうございます。


    MODxにショッピングカートをつけたくて、私の乏しい知識のなかで試行錯誤していたのですが、皆さまのようにスキルがないので上手にできなかったので、ショップメーカーというサービスを利用することにしました。

    ドキュメント内の設置したい場所に、ショッピングカートのソースを貼り付けるだけなら・・・と、お申込みを済ませて商品を登録して、ソースを貼り付けて保存したのですが、その部分のソースが書きかわってしまい、ショッピングカートが正常に動作しないのです。

    以前、皆さまから教えていただいたhttp://modxcms.com/forums/index.php/topic,31983.msg194367.html#msg194367の対処方法を施せばナントカなるかしら。と試してみたのですが、やっぱりソースは書きかわってしまうのです。


    ちなみに下のソースを保存すると・・・・

    <form action="https://www.shopmaker.jp/pro/order.cgi" method="POST">
    <div align="center">
    <input type="hidden" name="user" value="●●●●">
    <input type="hidden" name="number" value="▼▼">
    <select name="kosuu">
    <option>0</option>
    <option selected>1 </option>
    <option>2 </option>
    <option>3 </option>
    <option>4 </option>
    <option>5 </option>
    <option>6 </option>
    <option>7 </option>
    <option>8 </option>
    <option>9 </option>
    <option>10 </option></select>
    <font size="-1">個</font>
    <img src="http://www.shopmaker.jp/zaiko_img/●●●●/▼▼.gif" align="absmiddle" >
    <input type="submit" value="カートに入れる">


    </div>
    </form>


    下のようなソースに書きかわってしまいます。


    <form action="https://www.shopmaker.jp/pro/order.cgi" enctype="application/x-www-form-urlencoded" method="post">
    <div>
    <input checked="0" disabled="true" name="user" readonly="true" type="hidden" value="●●●●" />
    <input checked="0" disabled="true" name="number" readonly="true" type="hidden" value="▼▼" />
    <select disabled="true" multiple="65535" name="kosuu" size="0">
    <option disabled="true" selected="0">0</option>
    <option disabled="true" selected="0">1</option>
    <option disabled="true" selected="0">2</option>
    <option disabled="true" selected="0">3</option>
    <option disabled="true" selected="0">4</option>
    <option disabled="true" selected="0">5</option>
    <option disabled="true" selected="0">6</option>
    <option disabled="true" selected="0">7</option>
    <option disabled="true" selected="0">8</option>
    <option disabled="true" selected="0">9</option>
    <option disabled="true" selected="0">10</option></select>
    <span>個</span>
    <img src="http://www.shopmaker.jp/zaiko_img/●●●●/▼▼.gif" alt="" align="absMiddle" />
    <input checked="0" disabled="true" readonly="true" type="submit" value="カートに入れる" />
    </div>
    </form>


    チャンクにソースの部分だけを登録しておき、呼びだせば正常に表示されるのですが、アイテム数がとても多いのでできればチャンクを使用せずに修正できるととてもうれしいです。
    そのような方法はご存知ないでしょうか。


    いつも聞いてばかりでゴメンナサイ :’(
    よろしくおねがいします。


    MODxのバージョンは0.9.6.3です。
    • TinyMCEプラグインにカスタムパラメータという欄があったと思いますが、
      そこにextended_valid_elements : ’*[*]’, などと書くといいかも。
      extended_valid_elementsじゃなくてvalid_elementsのほうが確実かもしれませんが。
      *[*]じゃなくて@*[*]じゃないと通らないかもしれませんが、そんな感じで試してみていただければと思います。

      http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/valid_elements
      http://wiki.moxiecode.com/index.php/TinyMCE:Configuration/extended_valid_elements
      このへん参考です。
      • ちなみにこれ、商品ごとに値が異なるのはuserとnumberだけですか?
        それならスニペットにしちゃったほうがラクかも。(書き方は分かりますか?)
          • 18003
          • 25 Posts
          yamaさま。


          いつもお返事ありがとうございます。
          valid_elements : ’*[*]’, で直すことができました。


          教えていただく前のカスタムパラメータ欄には extended_valid_elements : "*[*]", と入力していたので、
          キチンと設定できているものと思い込んでいました。


          Quote from: yama at Jul 06, 2009, 09:06 AM

          ちなみにこれ、商品ごとに値が異なるのはuserとnumberだけですか?
          それならスニペットにしちゃったほうがラクかも。(書き方は分かりますか?)
          ありがとうございます。userとnumberだけです。
          スニペットにするとラクになるのですか。(書き方はわかりません・・ :’()
          yamaさまのご面倒でなく、難しくなければお尋ねしてもよろしいですか。

          いつもありがとうございます。 smiley
          • <?php
            $str  = '<form action="https://www.shopmaker.jp/pro/order.cgi" method="POST">' . PHP_EOL;
            $str .= '<div align="center">' . PHP_EOL;
            $str .= '<input type="hidden" name="user" value="' . $user . '">' . PHP_EOL;
            $str .= '<input type="hidden" name="number" value="' . $number . '">' . PHP_EOL;
            $str .= '<select name="kosuu">' . PHP_EOL;
            $str .= '<option>0</option>' . PHP_EOL;
            $str .= '<option selected>1 </option>' . PHP_EOL;
            $str .= '<option>2 </option>' . PHP_EOL;
            $str .= '<option>3 </option>' . PHP_EOL;
            $str .= '<option>4 </option>' . PHP_EOL;
            $str .= '<option>5 </option>' . PHP_EOL;
            $str .= '<option>6 </option>' . PHP_EOL;
            $str .= '<option>7 </option>' . PHP_EOL;
            $str .= '<option>8 </option>' . PHP_EOL;
            $str .= '<option>9 </option>' . PHP_EOL;
            $str .= '<option>10 </option></select>' . PHP_EOL;
            $str .= ' 個' . PHP_EOL;
            $str .= '<img src="http://www.shopmaker.jp/zaiko_img/' . $user . '/' . $number . '.gif" align="absmiddle" >' . PHP_EOL;
            $str .= '<input type="submit" value="カートに入れる">' . PHP_EOL;
            $str .= '<br />' . PHP_EOL;
            $str .= '</div>' . PHP_EOL;
            $str .= '</form>' . PHP_EOL;
            
            return $str;
            ?>


            こんな感じにスニペットを書きます。スニペット名は「注文フォーム」など分かりやすい名前でいいと思います。
            次にドキュメントに [[注文フォーム? &user=`●●●●` &number=`▼▼`]] というふうにコールを書きます。

            もしかしてこのままコピペで使われるかな?と思ってPHP_EOLとかきっちり書きましたが、とりあえずの勉強では
            ここまでマメに書かなくてもよいかなと思います。

            コール中で指定される &userと&numberを、そのままスニペット内で$userと$numberとして利用できます。
            これだけ手軽に拡張を書けるCMSも珍しく、プログラミングを勉強するにはMODxは向いてると思います。
            • <?php
              $str = "
              <form action='https://www.shopmaker.jp/pro/order.cgi' method='POST'>
              <div align='center'>
              <input type='hidden' name='user' value='$user'>
              <input type='hidden' name='number' value='$number'>
              <select name='kosuu'>
              <option>0</option>
              <option selected>1 </option>
              <option>2 </option>
              <option>3 </option>
              <option>4 </option>
              <option>5 </option>
              <option>6 </option>
              <option>7 </option>
              <option>8 </option>
              <option>9 </option>
              <option>10 </option></select>
               個
              <img src='http://www.shopmaker.jp/zaiko_img/$user/$number.gif' align='absmiddle' >
              <input type='submit' value='カートに入れる'>
              <br />
              </div>
              </form>
              ";
              return $str;
              ?>

              オマケ。初心者向けな書き方ですが、こんな書き方もあります。
              ちなみにフォーラムに貼り付けると「個」とか「カートに入れる」が数値参照文字になっちゃいますね。
                • 18003
                • 25 Posts
                yamaさま すごーい。


                私のMODxサイト内でもキチンと動かすことができました!
                ソースが書きかわってしまう対処方法だけでなく、素適な方法まで教えていただき、
                本当にありがとうございます。

                少しはキチンとプログラムを勉強したいとおもっているのですが、
                知識が乏しすぎて何からお勉強していいのかわからない困ったさんです :’(
                初心者にオススメのサイトや本などがございましたら、お手隙のときにでもお教えいただければ嬉しいです。

                いつもいつもご親切にありがとうございます。
                • http://masago.kir.jp/
                  このへんから入ると慣れやすいかも

                  http://masago.kir.jp/php20030108.php
                  たとえばこれをMODxで実行するには「練習用スニペット」という名前のスニペットを作って
                  その中にこのサイトのサンプル文を書くとすぐ実行できます
                    • 18003
                    • 25 Posts
                    yamaさま。 こんにちは。


                    昨日、『お手隙のときにでもお教えいただければ嬉しいです。』って自分のことだけしか考えず、
                    MODxに関係ないことを聞いてしまったことに後で気づき少し後悔してました。
                    yamaさま。 皆さまごめんなさい。

                    yamaさま、とてもわかりやすいサイトを教えていただきありがとうございます。
                    私にも理解できそうだったので勉強できそうです laugh
                    がんばります! tongue

                    これからも何卒よろしくおねがいします laugh
                    • ちなみに1ページあたり1商品でよければチャンクとテンプレート変数の組み合わせだけでいいですね。

                      フォームの配置場所も含めて定型でよければチャンクも不要。以下のとおり。
                      <form action="https://www.shopmaker.jp/pro/order.cgi" method="POST">
                      <div align="center">
                      <input type="hidden" name="user" value="[*user*]">
                      <input type="hidden" name="number" value="[*number*]">
                      <select name="kosuu">
                      <option>0</option>
                      <option selected>1 </option>
                      <option>2 </option>
                      <option>3 </option>
                      <option>4 </option>
                      <option>5 </option>
                      <option>6 </option>
                      <option>7 </option>
                      <option>8 </option>
                      <option>9 </option>
                      <option>10 </option></select>
                      <font size="-1">個</font>
                      <img src="http://www.shopmaker.jp/zaiko_img/[*user*]/[*number]*.gif" align="absmiddle" >
                      <input type="submit" value="カートに入れる">
                      <br>
                      </div>
                      </form>

                      テンプレート中の適当な場所にこう書いて、テンプレート変数「user」と「number」を作ります。これだけ。