Допустим, есть вложенное меню
Еда -Первое --Салаты
Как решил эту проблему я: не добавлением статьи в несколько категорий, но выводом её анонса в родительской категории, если статья есть в одной из вложенных.
Правим файла /components/content/model.php вообще и функции
public function getArticles($category_id, $page=1, $perpage=100, $orderby='title', $orderto='asc') {
после строки
//!---связи //1 уровень $sql1 = "SELECT id FROM cms_category WHERE parent_id = '$category_id'"; //узнаём, кому мы являемся родителем $result1 = $this->inDB->query($sql1); $innercats=(int)$category_id; //исходно показываем только в одной категории if ($this->inDB->num_rows($result1)) { //если есть вложенные категории while($innercat1 = $this->inDB->fetch_assoc($result1)){ $innercats = $innercats.", ".(int)$innercat1['id']; //добавляем их id } } //2 уровень аналогично 1-му $sql2 = "SELECT id FROM cms_category WHERE parent_id IN($innercats)"; $result2 = $this->inDB->query($sql2); if ($this->inDB->num_rows($result2)) { while($innercat2 = $this->inDB->fetch_assoc($result2)){ $innercats = $innercats.", ".(int)$innercat2['id']; } } //!---
если есть более глубокие уровни, "2 уровень" нужно скопировать и вставить ещё раз
Далее, в след. запросе, который начинается
$sql = "SELECT con.*,
WHERE con.category_id = '$category_id'
WHERE con.category_id IN ($innercats)