web-dev-qa-db-ja.com

URLエイリアスのアンカー(#)

異なるコンテンツから同じページを開きたいのですが。したがって、これらのコンテンツに対して/testimonials#group-1のようなリンクを生成する必要があります。私はこれにpathautoモジュールを使用しました。このカテゴリのパターンを作成しましたtestimonials#[node:title]。しかし、このURLはブラウザ/testimonials%23group-1によってエンコードされ、ページが見つかりませんというエラーは表示されません。

では、/testimonials#group-1。のような出力を提供できるURLエイリアスにアンカー(#)をどのように配置できますか?

2
Never Quit

ノードのエイリアスにアンカーを追加して、ノードに複数のセクションを定義しようとしていると思います。これは、不可能ですアンカーの宛先pathの一部ではないため、alias。詳細については、 HTMLのリンクに関するW3の紹介 を参照してください。

アンカーの作成:ノードの本体をサブセクション化する場合は、コードでアンカーを使用する必要があります。

<a name="anchorOne"> ... </a>

WYSIWYG module を使用している場合は、Anchorプラグインが有効になっていることを確認してください。そうすることで、組み込みのアンカープラグインのGUIを使用してアンカーを作成できます。はるかに簡単です。

アンカーへのリンク:アンカーを作成した後、次のようにハイパーリンクを作成することで、そのセクションにリンクできます。

<a href="/path/to/node#anchorOne">Link text</a>

Drupal方式で上記のリンクを作成するには:

<?php print l('Link text', 'path/to/node', array('fragment' => 'anchorOne')); ?>

または、アンカー先を含むURLのみを作成するには:

<?php print url('path/to/node', NULL, 'anchorOne'); ?>
3
Ambidex

これは フラグメント識別子 と呼ばれ、 l()関数 で実行されます。

$options = array('fragment' => 'group-1');
l('Anchor', 'path', $options);
1
Martin Poulsen

まず、コンテンツタイプtestimonialのPathautoパターンを/ testimonials/[node:title]に設定します。これは、たとえば、1つの証言をノードとして表示する場合、たとえば、下のビューに完全なノードを含めない場合に役立ちます。

次に、すべての紹介文を一覧表示するビューを作成し、それらをURL/ testimonialsのページとして表示します。 Unformattedスタイルを使用し、Titleを行クラスに含めます(ビューで[スタイル]> [スタイル]> [設定]を使用)。Anchor- [title](後で表示します)なぜ「アンカー_」部分なのか)。

次に、views-view-unformatted.tpl.phpの特別なバージョン(たとえば、views-view-unformatted-。tpl.php)を作成し、独自のテーマフォルダー(適切な場所)に配置します。

<?php foreach ($rows as $id => $row): ?>
  <div <?php if ($classes_array[$id]) { print 'class="' . $classes_array[$id] .'"';  } ?>>
    <?php print $row; ?>
  </div>
<?php endforeach; ?>

行スタイルを取得する小さなPHPスニペットを作成し、「アンカータイトル」を含む1つのクラスを見つけます。

<?php foreach ($rows as $id => $row): ?>
  <div <?php if ($classes_array[$id]) { print 'class="' . $classes_array[$id] .'"';  } ?>>
    <?php
      if ($classes_array[$id]) {
        $classes = explode(" ", $classes_array[$id]);
        for ($i=0;$i<count();$i++) {
          if (strpos($classes[$i], "Anchor_") === 0) {
            list($tmp, $anchor) = explode("_", $classes[$i]);
    ?>
    <a name="<?php print $anchor; ?>"></a>
    <?php
          }   
        }
      }
    ?>
    <?php print $row; ?>
  </div>
<?php endforeach; ?>

おそらくコードを最適化することができますが、それはあなたが始めるための唯一のものです...

ところで、上部に「メニュー」を作成するには、タイトルからリンクを作成するビューを含むビューにヘッダーを追加します。例えば。

  <a href="#Title">Link text</a>
0