daily pastebin goal
68%
SHARE
TWEET

Untitled

a guest Dec 12th, 2018 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   $query = db_select('node', 'n'); -> Выбираем таблицу нод
  2.   $query->fields('n', array('nid', 'title')); -> Из таблицы нод нам нужны поля nid и title
  3.   $query->addExpression('COUNT(*)', 'hits');
  4. -> Считаем сколько нод нашлось, у которых есть тег из массива $tids, потом отсортеруем по этому параметру и получим сортировку по релевантности. (за это отвечает ниже orderBy('hits', 'DESC');)
  5.   $query->leftJoin('taxonomy_index', 'ti', 'n.nid = ti.nid'); (обединение таблиц нод и таблицы где записаны теги нод, чтоб можно было посчитать)
  6.   $query->condition('n.type', $vars['type']);
  7.   $query->condition('n.status', NODE_PUBLISHED);
  8.   $query->condition('ti.tid', $tids, 'IN');
  9.   $query->condition('n.nid', $vars['nid'], '<>');
  10. -> с условиями кондишинов думаю понятно...
  11.   $query->groupBy('n.nid');
  12. -> убираем дубли через groupBy по ниду, так как в объединенной таблице у нас может найтись несколько записей, которые соответствуют условиям что нид такой-то (одинаковый) и при этом же есть тег "x" или "y" или "z".... Объединяем эти записи по ниду, пох какая выберется, так как нас интересует тайтл ноды, а для этого нида достаточно.
  13.   $query->orderBy('hits', 'DESC'); -> уже говорилось, отвечает за сортировку по "релевантности"
  14.   $query->orderBy('n.created', 'DESC'); -> не знаю нах надо, так как сортировка есть по релевантности.
  15.   $query->range(0, 3); -> ну и взять только 3 штучки
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top