Что отправил Grayside, будет работать ... пока у вас нет двух узлов с тем же названием. Другими словами, если вы хотите сделать то, что предложил Грейсид, вам нужно знать, что нид не совсем неважен. Функция nodereference_autocomplete_validate() выполняет две функции. Он проверяет, соответствует ли узел, и если да, то он пропускает nid, устанавливая его в массив $form_state
. Если он не может найти узел, он установит ошибку. Если нидь присутствует, то он будет использоваться, чтобы получить узел, который также является быстрее, код здесь:
preg_match('/^(?:\s*|(.*))?\[\s*nid\s*:\s*(\d+)\s*\]$/', $value, $matches);
if (!empty($matches)) {
// Explicit [nid:n].
list(, $title, $nid) = $matches;
if (!empty($title) && ($n = node_load($nid)) && $title != $n->title) {
form_error($element[$field_key], t('%name: title mismatch. Please check your selection.', array('%name' => t($field['widget']['label']))));
}
}
Это просто проверяет, есть ли нидь и проверяет, что узел соответствует с title, если так, то nid передается.
Второй вариант немного медленнее, но здесь могут произойти ошибки. Если вы выполните выполнение, вы увидите, что если попытается найти узел, основанный только на заголовке, и будет соответствовать первому узлу. Результатом этого является то, что если у вас есть два узла с одним заголовком, один из них всегда будет использоваться. Для вас это не проблема, но дело в том, что вы никогда не узнаете, если это произойдет. Все будет работать нормально, и пользователь подумает, что он выбрал нужный ему узел. Это может быть так, но он мог бы также выбрать неправильный узел.
Короче говоря, вы можете избавиться от НИЗ в автозаполнения обратного вызова, но она имеет 2 недостатка:
- производительность (немного)
- неопределенность в выборе правильного узла.
Поэтому вам нужно подумать об этом, прежде чем идти по этому маршруту. Тем более, что вы, скорее всего, не сможете найти проблему выбора неправильных узлов, если это произойдет. Еще одна вещь, о которой стоит помнить, заключается в том, что при открытии низа также добавляется некоторая ценная информация для пользователей, быстрый способ поиска узла, если они будут сомневаться в том, что они хотят, если несколько узлов имеют похожие заголовки ,
Это хорошо, что она удаляет [NID: 123] из поля зрения после того, как выбран узел, но [нидь: 123] по-прежнему появляется при загрузке узла для редактирования , Я хочу, чтобы удалить ник из отображения, когда я редактирую узел. Хорошо, теперь я вижу это: http://stackoverflow.com/questions/2743924/how-remove-node-id-nidn-in-nodereference-fields –