web-dev-qa-db-ja.com

最新の世論調査へのリンク?

ポーリングtplファイルを設定して、ポーリングフィールド(フォーム、結果など)と、以前のポーリングの下部にあるリストを日付順に含めます。私がやろうとしているのは、メインメニューから最新の投票へのリンクです。言い換えれば、私の現在の最新の投票はnode/123456 /です。もちろん、それにリンクすることができます。ただし、新しいリンクを作成するときは、そのリンクを更新する必要があります。新しい投票が作成されるたびにメニュー項目を編集する必要がないように、それが欲しいです。

何か案は?

[〜#〜] update [〜#〜]

あなたが私のためにそれを書くことを期待して私が待っているとは思わないので、これが私がいる場所です:

$items['poll/latest'] = array( 'title' => 'Latest Poll', 'page callback' => 'latest_poll_find_poll', 'access callback' => TRUE, 'type' => MENU_NORMAL_ITEM, );

_return $items;_

/** * Find latest poll and redirect user */ function latest_poll_find_poll() { $nid = db_query('SELECT MAX(nid) AS nid FROM {node} WHERE type = "poll"')->fetchField(); $latest = is_numeric($nid) ? 'node/' . $nid : ''; drupal_goto($latest); }

1
Mike

hook_menu()を実装する小さなカスタムモジュールと、最新のポーリングを決定してユーザーをリダイレクトするカスタムコールバックを作成します。おそらくこのようなもの(D6の場合、D7は同様になります):

Drupal 7


MYMODULE.info

name = "MYMODULE"
description = "Adds a menu item for the most recent poll"
core = 7.x

MYMODULE.module

<?php
/**
 * Implementation of hook_menu()
 */
function MYMODULE_menu() {
  $items = array();

  $items['poll/latest'] = array(
    'title' => 'Latest Poll',
    'page callback' => 'MYMODULE_find_poll',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

/**
 * Find latest poll and redirect user
 */
function MYMODULE_find_poll() {
  $nid = db_query('SELECT MAX(nid) AS nid FROM {node} WHERE type = :type', array(':type' => 'poll'))->fetchField();
  $latest = is_numeric($nid) ? 'node/' . $nid : '<front>';
  drupal_goto($latest);
}

Drupal 6


MYMODULE.info

name = "MYMODULE"
description = "Adds a menu item for the most recent poll"
core = 6.x

MYMODULE.module

<?php
/**
 * Implementation of hook_menu()
 */
function MYMODULE_menu() {
  $items = array();

  $items['poll/latest'] = array(
    'title' => 'Latest Poll',
    'page callback' => 'MYMODULE_find_poll',
    'access callback' => TRUE,
    'type' => MENU_NORMAL_ITEM,
  );

  return $items;
}

/**
 * Find latest poll and redirect user
 */
function MYMODULE_find_poll() {
  $nid = db_result(db_query('SELECT MAX(nid) AS nid FROM {node} WHERE type = "poll"'));
  $latest = is_numeric($nid) ? 'node/' . $nid : '<front>';
  drupal_goto($latest);
}

「MYMODULE」をカスタムモジュールの名前に置き換え、それらのファイルをサイトのモジュールディレクトリのMYMODULEという名前のフォルダに配置します(もちろん置き換えます)。

2
Laxman13