Короткая версия:
Это получает массив тегов узла, получает первые 10 узлов , которые используют хотя бы одиниз этих тегов и выводит ссылку для каждого из этих 10 результатов.
Подробная версия:
Прежде всего, переменная«$node
» - это объект, который содержит данные о конкретном узле (например, узле Page или Story).Например, «$node->title
» будет заголовком этого узла.
«$node->taxonomy
» тесты - это то, что узел помечен (потому что, если у него нет тегов, он не может получить другие узлыиспользуя один и тот же тег (ы). Если с этим узлом / страницей / историей связан один или несколько тегов, $node->taxonomy
- это array
.
Теперь о запросе SQL: "node
"- это таблица базы данных, в которой хранятся базовые поля (не-CCK) каждого узла." term_node
"- это таблица базы данных, которая содержит комбинацию тега (который называется" taxonomy term
") и узла.
В обеих таблицах "nid
" - это "unique Node ID
" (это внутреннее автоинкрементное число). Поскольку этот столбец находится в обеих таблицах, именно так таблицы объединяются..
В "term_node
", "tid
" означает "unique Term ID
" (который также является внутренним автоинкрементным числом).
"node
«таблица имеет псевдоним» n
», поэтому« n.nid
»означает« the Node ID stored in table node
». Таблица« term_node
»имеет псевдоним« t
», поэтому« t.tid
»означает« the Term ID stored in table term_node
».
Цикл "foreach
" проходит через массив тегов, чтобы извлечь TermID каждого тега, используемого узлом, чтобы добавить его в запрос SQL и выполнить преобразование в строку.
Цикл сохраняет фрагмент SQL-запроса для каждого тега в переменной $tids
и сохраняет фактическое значение в переменной $args
, поскольку вызовы базы данных Drupal безопаснее, когда аргументы передаются отдельно от SQL-запроса: "%d
"означает" integer number
".
" db_query_range
"- это функция, которая выбирает несколько строк в базе данных: здесь" 0 10
"означает" retrieve the first 10 results
".
"db_fetch_object
" в цикле "while
" извлекает каждый результат и сохраняет его в переменной "$o
", которая является объектом.
Следовательно "$o->title
"содержит значение столбца" title
", извлеченного запросом SQL.
Функция" l
"- это функция drupal, которая создает код для ссылки HTML:первый аргумент - это имя ссылки, второй аргумент - путь drupal: в Drupal любой узел можетбыть доступным по умолчанию, используя "www.yoursite.com/node/NodeID
", поэтому он дает путь "node/123
" (где 123
- "Node ID
").
Эта функция полезна, потому что она прозрачнообрабатывает пользовательские пути, поэтому, если у вашего узла есть пользовательский путь для доступа к нему с использованием «www.yoursite.com/my-great-page
», он автоматически создаст ссылку на эту страницу вместо «www.yoursite.com/node/123
».