Как связать узел вопросов с текущей страницей?
Я хотел бы, чтобы пользователи могли задавать вопросы, связанные с текущей страницей, не переходя на другую страницу, как это работает сейчас в модуле Соответствующие ответы. Существует связанная с этим проблема: http://drupal.org/node/1826492
Я могу создать пользовательский блок с формой в нем и создать новый узел Question
при отправке.
Как я могу связать этот новый узел с текущей страницей?
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;
Это полностью непроверено, но должно направить вас на правильный путь к решению вашей проблемы.
Убедитесь, что ваш вопрос-тип содержимого в виде поля с именем "node_reference_field" с модулем EntityReference.
Как только это будет сделано, вам просто нужно убедиться, что nid текущего узла сохранен в этом поле. Поскольку вы используете пользовательский блок с сгенерированной формой, это будет не так сложно.
Я предлагаю вам попробовать что-то вроде:
$node = node_load ($form_state['nid']);
$form['node_reference_field']['value'] = $node->nid;
Я не уверен в кодировании, но с модулем EntityReference вы не далеки от решения.
Если я правильно понял, вы хотите вставить блок внутри визуализации узла. Если это так, я бы предложил использовать модуль контекст, вам просто нужно вставить условие (обычно путь к контенту, например, узел/*) и установить реакцию на блокировку. Затем вы можете выбрать свой блок и поместить его в один из регионов, определенных в вашей теме.
Модуль Соответствующих ответов является одним из (отдельных) дополнительных модулей для версии 7.x-3.x модуля Ответов .
В последней версии 7.x-4.x модуля Ответы этот модуль устарел и заменен подмодулем Ответы Лучший ответ, который позволяет помечать любой из ответов на конкретный вопрос как лучший (принятый) ответ (для отображения синих галочек слева от каждого ответа, и который является лучшим). заменяется зеленой галочкой, когда ответ отмечен как лучший ответ).
С помощью этого, из коробки, теперь вы можете опубликовать (новый) ответ прямо под вопросом, используя форму, аналогичную созданию нового узла.
Раскрытие информации: Я являюсь (со-)сопровождающим этого модуля.