Margy Mutoh
margy****@roseb*****
2006年 1月 29日 (日) 14:09:50 JST
益子さん、こんにちは。Margyです。(長文です) ついいましがた、問題解決との投稿がありましたが、今後同じ ような問題にぶつかられることもあるかと思いますので、 ご参考までに私のやってる原始的な問題探し手順をご紹介します。 今回の場合を例にとると、 1) admin/configuration.php の「あたり」はついてるわけなので、 「更新」「取り消し」ボタンに関連する部分を見つけるために、 同ファイル内でこのボタンを探しましょう。 「更新」ボタンは button_update.gif なので、configuration.php でこれを検索すば、1箇所しかないのですぐわかります。 (ファイル名は右クリックの「画像を保存」とかで見れば容易に わかりますね) 2) 問題の箇所は、このボタンの直前のテキストエリアなので、 さかのぼって、ここの組み立てを見てみましょう。 1行上のコードを見ると、 > $contents[] = array('text' => '<br><b>' . $cInfo->configuration_title . '</b><br>' . $cInfo->configuration_description . '<br>' . $value_field); …となります。 $cInfo->configuration_title が 「ショップの住所と電話番号」 という見出しで、 $cInfo->configuration_description が 「印刷とディスプレイ 表示に使用されるショップ名,住所,電話番号を設定します.」という 説明文、そのあとの $value_field がテキストエリアを描画してる 部分かな、ということは想像がつくでしょう。 でも $value_field では、肝心のテキストエリアの中身がわかりま せんね。 3) そこで、問題の箇所のhtmlソースと見比べてみます。 > <td class="infoBoxContent"><br><b>ショップの住所と電話番号</b><br> > 印刷とディスプレイ表示に使用されるショップ名,住所,電話番号を設定します.<br> > <textarea name="configuration_value" wrap="" cols="35" rows="5"> > ショップほげほげ > 東京都○○区○○町xx-xx-xx > 03-xxxx-xxxx > </textarea></td> のようなソースになっていると思います。 ここで<textarea></textarea>のタグが出てきますが、admin/configuration.php のソースを検索しても<textarea>は出てきません。だったら他の ファイルから出力されているはず、ということで、grepで<textarea> 探しです。 益子さんお使いのTeraPadには標準ではgrep機能がないそうですが、もう 装備されましたか? http://harpy.org/delfy/tpadhelp/tips34.html 4) grepでosCのルートディレクトリを指定して<textarea>を検索します。 実際には、開始タグには固有のオプションが入っているので、終タグ 「</textarea>」で検索しました。(「<textarea」でもいいかもしれません) するとosC全体で3つしか</textarea>は出てきません。 extras\update.php(74行目) catalog\includes\functions\html_output.php(522行目) admin\includes\functions\html_output.php(364行目) おっ、admin\includes\functions\html_output.php、これが怪しいじゃ ないか、ということで、当該ファイルを見に行きます。 しかし admin\includes\functions\html_output.php の364行目付近には > $field = '<textarea name="' . $name . '" wrap="' . $wrap . '"cols="' . $width . '" rows="' . $height . '"'; という形で「ひな形」があるだけで、 > <textarea name="configuration_value" wrap="" cols="35" rows="5"> の具体的な name、cols、rowsの値は出てきません。 5) そこで今度は値のありかを探します。検索のキーになりそうなのは name="configuration_value" なので、今度は「configuration_value」で grepします。 すると山のような検索結果が出てきました。そこで、検索結果から cols="35"の「35」を検索してみます。すると結果は1箇所のみ、 > admin\includes\functions\general.php(696): return tep_draw_textarea_field('configuration_value', false, 35, 5, $text); ^^^^ ここだけです。これで、 > また、「ショップの住所と電話番号」の入力欄は複数行とってありますが、この行数に > > ボタンが隠れてしまっていると言うことはないですよね・・・。(^^;;; > 行数も変更してみようかと思いましたが、どの部分もソースが分かりません。 > > 特に指定はされていないのでしょうか・・・。 ↑これの検証をしてみることができますね。 admin/includes/functions/general.phpの696目の「35, 5」がテキスト エリアの「桁, 行」の値ですから、まあ「35」は変える必要がないとして、 「5」のほうを3とか2とかにしてみれば、益子さんのおっしゃる「隠れて しまっている」かどうかの検証はできるでしょう。 # ちなみに、htmlソースで桁/行に数値が入ってることが確認できるわけで # すから、その時点で「特に指定されていない」という推論は消えますね。 # 値が明示的に入っている箇所は、必ずどこかで指定されています。 …以上、問題探しの初級編でした。(^_^; 初級編、原始的といっても、一つひとつファイルを開いて検索するよりは はるかに速いですし、かくいう私も毎日のようにやってる作業です。 検索のしかたは何通りもありますし、osCに慣れてくればもっと効率的な 探し方(問題点の見当をつけて探す)もできるようになると思いますが、 ほんの一例ということで。 ところで肝心の「ボタンが消えた問題」ですが、「ショップの住所と電話 番号」だけに特化した不具合ということから考えて、また「タグ壊し」の 恐れはなかったでしょうか?(先日の<td>の例のような) テキストエリア内にhtmlコードとか書かれてませんでした? もしくは 「.」とか「"」とか「'」とかでプログラムを壊し(中断させ)てるとか。 (念のため、htmlタグやこれらの文字を入れてみましたが、私のとこでは ボタン等のレイアウトは壊れませんでした) コードもいじってない、定型決め打ちの出力部分だから特定の項目だけ 壊れるのはヘン、となると、モノがテキストエリアだけに、たまたま そこに記入した文字が、偶然にプログラムやタグを分断してしまってる 可能性もなきにしもあらずかなあ、と。 Margy Mutoh