Ничего не возвращено из функции загрузки терминов таксономии
--очень обычный -- taxonomy_term_load(), похоже, не может загружать объекты в обратном вызове пользовательского меню. Тем не менее, я могу получить доступ к сущности профиля, загрузить поля и получить идентификаторы полей, но я ничего не получаю от функции загрузки таксономии!
function mymodule_menu() {
$items = array();
$items['user/account-convert'] = array(
'title' => 'My Page',
'page callback' => 'mymodule_page',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}
function mymodule_page() {
global $user;
$profile = profile2_load_by_user($user, 'my_profile_type');
// Sanity check tid return. Success.
echo $profile->field_profile_myfield[LANGUAGE_NONE][0]['tid'];
// Term name returns nothing. The object just won't load.
echo taxonomy_term_load($profile->field_profile_myfield[LANGUAGE_NONE][0]['tid'])->name;
}
В этом нет абсолютно никакого смысла.
Я даже проверил здравомыслие, выводя жестко закодированные tid, такие как echo taxonomy_term_load(1708)
, после 100% подтверждения того, что это допустимое значение tid.
Кроме того, я проследил за деревом функций и пробовал звонить taxonomy_term_load_multiple
напрямую и entity_load
напрямую. Все это ничего мне не дает.
Кроме того, я могу подтвердить, что функция действительна и доступна на данный момент с помощью function_exists
и отсутствия неопределенных ошибок функции.
2 answers
Вероятно, это проблема доступа к таксономии .
См. taxonomy_access_query_term_access_alter()
.
(Для остальной части Интернета я знаю, что это проблема, потому что мы с Джошем работаем над одной и той же кодовой базой, и я столкнулся с точно такой же проблемой в совершенно другом контексте.)
Попробуйте вот это:
function get_tag_name($tid) {
$query = db_select('taxonomy_term_data', 't');
$query
->condition('t.tid', $tid, '=')
->fields('t', array('tid', 'name'));
$result = $query->execute();
foreach ($result as $row) {
return $row->name;
}
}