Please Sign In or Register

Trackback : ワンクリックで URL を選択可能にする

この情報はかなり以前の Trackback モジュールについて書いたものです。
現時点での最新バージョンである Trackback 5.x-1.5 用に別モジュール化したものが Trackback UI モジュール | DRUPAL*DRUPAL でダウンロードできます。
[2008-04-11 追記]

Movable Type などのブログツールではトラックバック URL をクリックすると簡単に URL を選択できるという手法が取り入れられているものが多いようなので、その方法。
トラックバック URL が表示されたテキスト入力フォームだけでなく、ラベルのクリックでも URL を選択できるようにする。

trackback.modulefunction trackback_nodeapi 以下の case 'alter': 部分に修正を加える。
修正によって追加された箇所コメントアウトされた部分を強調表示しています。

      case 'alter':
        if ($node->can_receive) {
          $url = url('node/'. $node->nid, NULL, NULL, TRUE);
          $tb_url = url('trackback/'. $node->nid, NULL, NULL, TRUE);
          $autodetect_comments .= "\n<!--\n";
          $autodetect_comments .= "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\">\n";
          $autodetect_comments .= "<rdf:Description rdf:about=\"$url\" dc:identifier=\"$url\" dc:title=\"$node->title\" trackback:ping=\"$tb_url\" />\n";
          $autodetect_comments .= "</rdf:RDF>\n";
          $autodetect_comments .= "-->\n";
        }
        if (!(($_POST['op'] == t('Preview') || ($_POST['op'] == t('Submit') && form_get_errors())))) {
          if ($teaser && $node->can_receive) {
            $node->teaser = $node->teaser . $autodetect_comments ."\n";
          }
          else {
            if ($node->can_receive) {
              $tb_label = '<label for="tb-url" class="tb-label">' . t('Trackback URL for this post:') . '</label><br />';
              $tb_input = '<input type="text" name="tb-url" id="tb-url" value="' . url('trackback/'. $node->nid, NULL, NULL, TRUE) . '" readonly="readonly" onfocus="this.select()" />';
              $node->body .= $autodetect_comments ."\n";
//              $node->body .= theme('box', t('Trackback URL for this post:'), url('trackback/'. $node->nid, NULL, NULL, TRUE));
              $node->body .= theme('box', t('Trackback'), '<p>' .$tb_label . $tb_input . '</p>');
            }
            if ($node->can_receive && count($node->trackbacks_received)) {
              foreach ($node->trackbacks_received as $tr) {
                $trackbacks .= theme('trackback', $tr);
              }
              $node->body .= theme('trackbacks', $trackbacks);
            }
          }
        }
        break;

上記の設定では、ラベルを定義するために、タイトルを 「Trackback URL for this post:」 から 「Trackaback」 へ変更し、デフォルトのタイトルである 「Trackback URL for this post:」 はラベルとして使用しています。

また、ラベルには class="tb-label" を、テキスト入力フィールドには id="tb-url" を設定していますので、それぞれのスタイルを調整することが可能です。

トラックバック

トラックバックは承認後に表示されます。

URLから "-nospam" を削除してトラックバックを送信してください。