0

ユーザーを完全なノードに誘導することで、JavaScript が使用できない場合に Drupal のボタンを正常に低下させたいと考えています。

Drupal node-type-tpl.php のヘッドにこの jquery javascript コードがあります。

  Drupal.behaviors.infobutton = function(context) {
  $("button").click(function () {
  $('.more').hide();
  $('.more').eq( $('button').index( $(this) ) ).show();
  });
  }

これは、私の node-type-tpl.php のテーブルの行にあるボタンです。

  <button>More</button>

これは、ボタンをクリックするまで css によって隠されているテーブルの次の行です。

 <tr class="more"><td>some php content</td></tr> 

現在、ユーザーには、ビューで縮小されたノードが表示されます。ボタンをクリックすると、このノードが開き、より多くのコンテンツが表示されます。JavaScriptがオフになっている場合、ユーザーがフルノードに誘導されるようにしたいと思います。

どうすればこれを行うことができますか?

4

1 に答える 1

0

最も簡単な方法は、<a>タグの代わりにタグを使用してから、関数<button>を呼び出すことだe.preventDefault()と思います。次のようなリンクを作成できます。

<php print l('More', 'node/' . $node->nid, array('attributes' => array('class' => array('morelink'))); ?>

Drupal 6 と 7 ではクラス形式が異なることに注意してください 。http://api.drupal.org/api/drupal/includes%21common.inc/function/l/7を参照してください。

そして、次のようなJavaScript:

Drupal.behaviors.morelink = function(context) {
  $("a.morelink").click(function (e) {
    e.preventDefault();
    $('.morelink').hide();
    $('.morelink').eq( $('a.morelink').index( $(this) ) ).show();
  });
}

それを実際のボタン コントロールにしたい場合は、実際のフォームを使用する必要があります。これは、<button>要素自体は Javascript なしではブラウザーをリダイレクトできないためです。次のように見える可能性があります

<form action="<?php print url('node/' . $node->nid); ?>">
  <input type="submit" class="more" value="More" />
</form>

ここはまだ必要e.preventDefault()です。私はこれにあまり賛成ではありませんが、リンク方式はグレースフル デグラデーションのより一般的な方式です。

最後に、ノード テンプレートに直接ではなく、Javascript を使用して含めます。drupal_add_js()これにより、自動キャッシュと圧縮を利用できます。

于 2012-04-14T07:21:49.300 に答える