3

私は語彙カテゴリーとその中に4つの用語を持っています。私がやりたいのは、コンテンツが特に「term1」と言う用語でタグ付けされている場合、URLをword1 / [node:title]として生成し、他のすべてのタグについては標準のURLフォーマットだけにすることです。

URLの用語が必要な場合は、明らかにパターン置換を使用しますが、特定のタグが使用されている場合は別の単語を使用します

4

2 に答える 2

5

これを実現する簡単なプラグアンドプレイの方法は考えられません。PathautoのURLエイリアス設定で、「デフォルトのパスパターン」用に独自のトークンを作成する必要がある場合があります。

/**
 * Implementation of hook_token_info().
 */
function MODULE_token_info() {
  $info['tokens']['node']['node-term-path'] = array(
    'name'        => t('Node path by term'),
    'description' => t('The path to a node based on its taxonomy terms.'),
  );
  return $info;
}

/**
 * Implementation of hook_tokens().
 */
function MODULE_tokens($type, $tokens, array $data = array(), array $options = array()) {
  $replacements = array();
  if ($type == 'node' && !empty($data['node'])) {
    $node = $data['node'];

    foreach ($tokens as $name => $original) {
      switch ($name) {
        case 'node-term-path':
          $items = field_get_items('node', $node, 'TAXONOMY_FIELD_NAME');
          foreach ($items as $item) {
            $tids[] = $item['tid'];
          }
          if (in_array(TID_OF_TERM1, $tids)) {
            // Path for nodes with term1
            $replacements[$original] = 'word1/'. pathauto_cleanstring($node->title);
          }
          else {
            // Path for other nodes
            $replacements[$original] = 'content/'. pathauto_cleanstring($node->title);
          }
          break;
      }
    }
  }
  return $replacements;
}
于 2012-07-09T18:18:16.133 に答える
0

同様のソリューションを必要とする人にとって、実際に簡単な方法を見つけたのは、モジュールエンティティリファレンスを使用することです。

http://drupal.org/project/entityreference

ユーザーアカウントのエンティティ参照を選択するための新しいフィールドを作成しました。その後、参照するdrupal内の任意のエンティティを選択できます。(つまり、用語/コンテンツ/その他を選択できます)

于 2012-07-17T14:34:24.553 に答える