Как связать узел вопросов с текущей страницей?


Я хотел бы, чтобы пользователи могли задавать вопросы, связанные с текущей страницей, не переходя на другую страницу, как это работает сейчас в модуле Соответствующие ответы. Существует связанная с этим проблема: http://drupal.org/node/1826492

Я могу создать пользовательский блок с формой в нем и создать новый узел Question при отправке.

Как я могу связать этот новый узел с текущей страницей?

 5
7
Author: Pierre.Vriens, 2013-02-12

4 answers

В своем пользовательском блоке верните свою форму следующим образом.

global $user;
// You may need to get your path a different way here?
$original_path = implode('/', args());
// Just set the GET path to the path ^ from there.  The form_alter()
// will pick it up automatically for you on line 86 in relevant_answers.module.
$_GET['path'] = relevant_answers_compress_string($original_path);

$node = (object) array('type' => 'question', 'uid' => $user->uid, 'name' => (isset($user->name) ? $user->name : ''), 'language' => LANGUAGE_NONE);
$form = render(drupal_get_form('question_node_form', $node));

// Return your rendered form.
// You may need to do some stuff with redirecting if its not going to the right page after you submit.
return $form;

Это полностью непроверено, но должно направить вас на правильный путь к решению вашей проблемы.

 4
Author: iLLin, 2013-02-25 22:59:02

Убедитесь, что ваш вопрос-тип содержимого в виде поля с именем "node_reference_field" с модулем EntityReference.

Как только это будет сделано, вам просто нужно убедиться, что nid текущего узла сохранен в этом поле. Поскольку вы используете пользовательский блок с сгенерированной формой, это будет не так сложно.
Я предлагаю вам попробовать что-то вроде:

$node = node_load ($form_state['nid']);
$form['node_reference_field']['value'] = $node->nid;

Я не уверен в кодировании, но с модулем EntityReference вы не далеки от решения.

 4
Author: Michiel, 2013-02-20 10:28:36

Если я правильно понял, вы хотите вставить блок внутри визуализации узла. Если это так, я бы предложил использовать модуль контекст, вам просто нужно вставить условие (обычно путь к контенту, например, узел/*) и установить реакцию на блокировку. Затем вы можете выбрать свой блок и поместить его в один из регионов, определенных в вашей теме.

 2
Author: Mauro Sardu, 2013-02-22 15:20:42

Модуль Соответствующих ответов является одним из (отдельных) дополнительных модулей для версии 7.x-3.x модуля Ответов .

В последней версии 7.x-4.x модуля Ответы этот модуль устарел и заменен подмодулем Ответы Лучший ответ, который позволяет помечать любой из ответов на конкретный вопрос как лучший (принятый) ответ (для отображения синих галочек слева от каждого ответа, и который является лучшим). заменяется зеленой галочкой, когда ответ отмечен как лучший ответ).

С помощью этого, из коробки, теперь вы можете опубликовать (новый) ответ прямо под вопросом, используя форму, аналогичную созданию нового узла.

Раскрытие информации: Я являюсь (со-)сопровождающим этого модуля.

 1
Author: Pierre.Vriens, 2016-04-20 14:10:26