0

コメントが有効になっているノードに表示される「コメントの追加」リンクと「コメント」リンクにテーマを設定したいと思います。theme()私はそれがこれを助けることができることを知っていtheme_links()ます、しかし私はそれらをどのように使うべきかわかりません。theme_links()この場合、私はリンクを探しているので、私はかなり欲しいと確信しています。しかし、コメントリンクを具体的に取得するにはどうすればよいですか?すべてのリンクをテーマにするのではなく、コメントのリンクだけをテーマにします。それが役に立ったら、私の目標はこれらの各リンクの横に画像を追加することです。また、「コメント」の横に投稿されたコメントの数を含めたいと思います。

明確にするために、コメント自体に表示されるリンクではなく、ノードに表示されるリンクにテーマを設定します。

4

3 に答える 3

3

リンクに画像/アイコンを追加するには、単純なCSSを使用できます。このCSSは、[コメントの追加]リンクにアイコンを追加しますが、他のリンク(li.comment_delete、li.comment_editなど)でも同じことができます。

ul.links > li.comment_add > a {
  background: url(PATH TO IMAGE) no-repeat;
  padding-left: 20px;  /* Change to compensate for size of image */
}

ノードにコメントの数を追加するには、関数を使用できますcomment_num_all($node->nid)。たとえば、「コメントの追加」リンクにコメントの数を追加する場合は、非表示のDIVをnode.tpl.php(または各コンテンツタイプテンプレート)とjQueryに追加して、リンクテキストを編集できます。

<div id="num-comments" style="display:none;"><?php print comment_num_all($node->nid); ?></div>

jQuery:

$('ul.links > li.comment_add > a').text('Add new comment (' + $('#num-comments').text() + ')');

これは最も洗練されたソリューションではありませんが、機能します。使用したい場合はtheme_links()、カスタムモジュールを作成する必要があると思います。

編集: 別のオプションは、カスタムモジュールを作成することです。これはを使用しませんtheme_links()が、hook_link_alter()代わりに使用します。これは、[新しいコメントの追加]リンクのタイトルを変更し、アイコンを追加し、ノードに添付されている現在のコメントの数を含めるための小さなサンプルモジュールです:( MYMODULE_NAMEのすべてのインスタンスをモジュールに選択した名前に置き換えます)

ステップ1:MYMODULE_NAME.infoというファイルを作成し、以下を追加します。

name = "MYMODULE_NAME"
description = "Change the appearance of links that appear on nodes"
core = 6.x

ステップ2:MYMODULE_NAME.moduleという名前のファイルを作成し、以下を追加します。

<?php

  /**
   * Implementation of hook_link_alter
   */
  function MYMODULE_NAME_link_alter(&$links, $node){
    if (!empty($links['comment_add'])) {
      // Get number of comments for node
      $num_comments = db_result(db_query('
        SELECT comment_count 
        FROM {node_comment_statistics} 
        WHERE nid = %d
      ', $node->nid));

      // Set "Add new comment" link text
      $links['comment_add']['title'] = '<img src="PATH TO ICON"/> ADD COMMENT TEXT (' . $num_comments . ')';

      // Allow HTML in the link text
      $links['comment_add']['html'] = TRUE;
    }
  }

ステップ3:これらのファイルをMYMODULE_NAMEというフォルダーに配置し、そのフォルダーをsites / all / modulesに配置して、モジュールを有効にします

編集:配列キーを見つける には:node.tpl.php(または他のノードテンプレート)にを追加でき<?php print_r($node->links); ?>ます。これにより、ノードに表示されるすべてのリンク情報が表示されます。メイン配列のキーは、私のモジュールで使用するものです。また、Firebug / Chrome Dev Toolsなどを使用して、リンクを含むリストアイテムのクラスを確認することもできます(つまり、ul.links> li.comment_add 。リンクが構築されるとき、Drupalは配列キーをリンクのクラスとして使用すると思います。

于 2011-02-27T23:50:09.500 に答える
0

最も簡単な方法は、テーマのcomment.tpl.phpファイルをオーバーライドすることだと思います。/ themes / garlandにあるものをコピーして、ベースとして使用できます。

于 2011-02-24T00:43:50.407 に答える
0

同じ種類のリンクを作成するためにhttp://drupal.org/node/352020からこの手法を使用しました。モジュールに前処理フックを追加して、$links配列にアクセスします。

function yourmodule_preprocess_comment(&$ variables){
  $ comment = $ variables ['comment'];

  //現在のコメントのリンクを読み込む
  $links = comment_links($ comment、FALSE);

  //リンク配列を変更するコード

  //リンクのHTMLをリセットします
  $ variables ['links'] = theme('links'、$links);
}
于 2011-02-25T04:15:05.290 に答える