Това, което е публикувал Grayside, ще работи... стига да нямате два възела с едно и също заглавие. С други думи, ако искате да направите както предлага Grayside, трябва да сте наясно, че nid не е съвсем маловажен. Функцията nodereference_autocomplete_validate() прави две неща. Той проверява дали има възел, който съвпада, и ако е така, предава nid, като го настройва на масива $form_state
. Ако не може да намери възел, ще зададе грешка. Ако nid присъства, той ще се използва за получаване на възела, което също е по-бързо, кодът е тук:
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']))));
}
}
Това просто проверява дали има nid и проверява дали този възел съвпада със заглавието, ако е така, nid се предава.
Вторият вариант е малко по-бавен, но тук могат да възникнат грешки. Ако проследите изпълнението, ще видите, че if ще се опита да намери възел въз основа само на заглавието и ще вземе първия възел, който съвпада. Резултатът от това е, че ако имате два възела с едно и също заглавие, единият от тях винаги ще се използва. Това може да не е проблем за вас, но работата е там, че никога няма да разберете, ако това се случи. Всичко ще работи добре и потребителят ще мисли, че е избрал възела, който е искал. Това може да е така, но той също може да е избрал грешния възел.
Така че накратко, вие можете да се отървете от nid в обратното извикване за автоматично довършване, но има 2 недостатъка:
- производителност (малко)
- несигурност при избора на правилния възел.
Така че трябва да помислите за това, преди да тръгнете по този път. Особено, тъй като най-вероятно няма да можете да откриете проблема с избора на грешни възли, ако това се случи. Друго нещо, което трябва да знаете е, че показването на nid също носи ценна информация на потребителите, бърз начин за търсене на възела, ако се съмняват дали това е това, което искат, ако няколко възела имат подобни заглавия .
person
googletorp
schedule
04.10.2009