1

template.php (drupal テーマ) に次のようなものが必要です。

$search_button ='search-button.png';
if($('#page-wrapper').hasClass('blue-colour')) {
    $search_button ='search-button-blue.png';
}
else if ($('#page-wrapper').hasClass('green-colour')) {
    $search_button ='search-button-green.png';
}
$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/'.$search_button);

jQueryであるため、これは機能しません。問題は、このビットの構文です。

if($('#page-wrapper').hasClass('blue-colour'))

javascript や jQuery を使用せずに、php や Drupal 関数のみを使用して同じことを行うにはどうすればよいですか?

HTML 要素に設定されたクラスに基づいて、検索ボックスのアイコンを置き換えたい:

<div id="page-wrapper" class="blue-colour">

この場合、クラスが 'blue-colour' であることを確認し、変数 ($search_button) に正しい青色のアイコンを設定します。

4

3 に答える 3

2

javascript と jQuery はクライアント側です。つまり、ページは既に読み込まれており、javascript はクライアントのコンピューターで読み込まれた DOM で直接動作します。

PHP はサーバー側です。つまり、サーバー上の PHP によってページが作成され、ハイパーテキストがクライアントのコンピューターに転送されます。

クラスに基づいて画像を変更するには、クラスを既に知っていない限り、クライアント側のコードが必要になります。

例えば、

$class = 'blue-colour';
switch ($class) {
    case 'blue-colour':
        echo '<img src="blue-colour.jpg" alt="blue-colour" />'
        break;
    default:
        echo '<img src="default.jpg" alt="default" />';
}

クラスを決定する方法はコード次第ですが、ページの解析中に行う必要があります。

于 2012-05-30T16:57:46.517 に答える
2

これはあなたの質問に直接答えるものではありませんが、css だけを使用して非常にうまく解決できます。

  1. ボタンに画像を使用するのではなく、テキストを使用して、次のようにしますtext-indent: -9999em;
  2. ボタンの背景画像を好きな画像に設定します(簡単な例):

.blue-colour .button {
   background: url(search-button-blue.png);
}
.green-colour .button {
   background: url(search-button-green.png);
}
于 2012-05-30T17:12:40.677 に答える
0

トリッキーになりますが、dom パーサーを使用することもできます。

http://simplehtmldom.sourceforge.net/manual.htm

于 2012-05-30T17:02:25.633 に答える