Я неправильно ссылаюсь на тип контента опросов в моем модуле Drupal? - PullRequest
0 голосов
/ 19 августа 2010

У меня есть следующий модуль, который влияет на то, как пользователи получают два разных типа контента: «вопрос» и «опрос».Вопрос является типом контента CCK, опрос является типом контента по умолчанию, но он отлично подходит для вопросов, принимая пользователя, который обращается к, например,

http://sparechangenews.net/content/are-you-seeing-evidence-economic-recovery (что является «вопросом»).тип содержимого)

до

http://www.sparechangenews.net/question/270 (при этом 270 - NID)

, но

http://sparechangenews.net/question/what-would-you-see-more-spare-change-news (чтоэто опрос)

просто идет на нормальный URL.Мне нужно это перенаправление, потому что у меня есть представление, которое проверяет NID (вытягивая его из URL) на узлы, которые ссылаются на него, и использует их в качестве супер-комментариев ( извлечено из этого урока ).Я неправильно ссылаюсь на опрос в модуле?Любые советы?

<?php
/**
 * @file
 * An example module to redirect the path from a node view for at
 * specific type to a view.
 */

/**
 * Implementation of hook_init().
 */
function example_init() {
  // Using arg() instead of menu_get_item(). Rumor has it menu_get_item
  // can occassionally cause WSOD.
  // We make sure arg(2) is empty so we do not redirect on edit or other
  // node sub pages.
  if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == '') {
    $node = node_load(arg(1));
    if ($node->type == 'answer') {
      drupal_goto('question/'. $node->field_answer[0]['nid']);
    }
    elseif ($node->type == 'poll' || $node->type == 'question') {
      drupal_goto('question/'. $node->nid);
    }
  }
}

1 Ответ

1 голос
/ 27 августа 2010

Я не уверен, что не так с вашим кодом, но альтернатива, которую вы, возможно, захотите проверить, - http://drupal.org/project/path_redirect в сочетании с https://drupal.org/project/pathauto.. Вы можете настроить автоматические псевдонимы для определенных типов контента. а также использовать путь перенаправления для поддержки старых псевдонимов и перенаправления на новые.

Однако я чувствую, что вы, вероятно, сможете достичь того, что вы пытаетесь сделать, без какого-либо перенаправления. Если вы просто пытаетесь получить nid в качестве аргумента представлений, почему бы не проверить в разделе «Предоставить аргумент по умолчанию» «Идентификатор узла из URL» или в качестве альтернативы проверить «PHP» и написать собственный код, подобный описанному выше:

$nid = arg(1);

В любом случае, я бы порекомендовал решить эту проблему, добавив в представления все, что вам нужно, без перенаправления, поскольку это снизит сложность (и накладные расходы).

...