web-dev-qa-db-ja.com

パーマリンクを#1、#2、#3に変更するにはどうすればよいですか?

コメント/フォーラムのリンクを次のようなものに変更したいと思います。

トピック:

#1

#2

#3

私はこれをどのように行うべきかについて何か考えがありますか?

6
bart

高度なフォーラム フォーラムの他の便利な機能の中で、箱から出して探しているもの(投稿の左上隅にある#numberパーマリンク)を提供します。

単にそのモジュールを使用することも、テンプレートファイルを見てどのように行われるかを確認することもできます。関連するコードは includes/advanced_forum_preprocess_comment.inc にあるようで、次のようになります。

  /* Linked post number */
  if (!isset($post_number)) {
    static $post_number = 1;
  }

  $posts_per_page = variable_get('comment_default_per_page_' . $node->type, 50);

  $page_number = !empty($_GET['page']) ? $_GET['page'] : 0;
  if (!$page_number) {
    $page_number = 0;
  }

  $post_number++;

  $linktext = '#' . (($page_number * $posts_per_page) + $post_number);

  // Permalink
  //  You can erase next 3 lines if you wish to use built-in Permalink.
  //  Template adjusted: $post_link -> $permalink
      $uri = entity_uri('comment', $comment);
  $uri['options'] += array('attributes' => array('class' => 'permalink', 'rel' => 'bookmark'));
  $variables['permalink'] = l($linktext, $uri['path'], $uri['options']);
4
Berdir

まず、コードがtemplate_preprocess_comment(&$vars)にある場合、$node->type$vars['node']->typeである必要があります。また、Commentモジュールは、トップのコメントに1で始まるIDを追加するため、ページごとにコメントカウンターを用意する必要はありません。現在、このコードは、いくつかのページにコメントがあっても正しく動作します。

function template_preprocess_comment(&$vars) {
  $posts_per_page = variable_get('comment_default_per_page_' . $vars['node']->type, 50);

  $page_number = !empty($_GET['page']) ? $_GET['page'] : 0;
  if (!$page_number) {
    $page_number = 0;
  }

  $linktext = '#' . (($page_number * $posts_per_page) + $vars['id']);

  $vars['comment']->uri['options'] += array('attributes' => array('class' => 'permalink', 'rel' => 'bookmark'));
  $vars['permalink'] = l($linktext, $vars['comment']->uri['path'], $vars['comment']->uri['options']);
}
3
Adam S

正常に動作しました。 template.phpファイル(drupal/sites/address/themes/YOUR THEME/template.php)に次を追加します。

<?php 

function YOURTHEME!_preprocess_comment(&$variables){

  /* Easy links to the comment and parent node */
  $comment = $variables['comment'];
  $node = node_load($comment->nid);
  $variables['first_post'] = $node; 

  // Set the post ID for theming / targetting
  $variables['post_id'] = "post-$comment->cid";

  /* Linked post number */
  if (!isset($post_number)) {
    static $post_number = 1;
  }

  $posts_per_page = variable_get('comment_default_per_page_' . $node->type, 50);

  $page_number = !empty($_GET['page']) ? $_GET['page'] : 0;
  if (!$page_number) {
    $page_number = 0;
  }

  $post_number++;

  $linktext = '#' . (($page_number * $posts_per_page) + $post_number);

  // Permalink
  //  You can erase next 3 lines if you wish to use built-in Permalink.
  //  Template adjusted: $post_link -> $permalink
  $uri = entity_uri('comment', $comment);
  $uri['options'] += array('attributes' => array('class' => 'permalink', 'rel' => 'bookmark'));
  $variables['permalink'] = l($linktext, $uri['path'], $uri['options']);

}
?>
2
bart