dzheka3d
@dzheka3d

Как построить дерево комментариев?

Всем привет! Сломал мозг уже... Написал рекурсивный метод, работает правильно, выводит div-ы с комментариями, и с помощью костыля margin, даже получается дерево комментариев. Но никак не могу изменить код так, чтобы добавить туда теги <ul> и <li>, чтобы получилось так.
<ul>
   <li>коммент 1 
      <ul>
         <li>Коммент 1.1</li>
         <li>Коммент 1.2</li>
      </ul>
   </li>
   <li>Коммент 2</li>
</ul>


Понимаю, что по этому куску кода сложно что-то подсказать, поэтому не пинайте. Но авось... может я просто не вижу чего-то элементарного...

в массиве $this->comments уже лежат данные вытянутые из базы вот в таком формате.:
$this->comments[$row['parent_id']][$row['id']] = $row;


Вот код самого метода.
public function ShowComments($parent_id = 0, $level = 0){
		
		if(count($this->comments) > 0 && isset($this->comments[$parent_id])){
			
				foreach($this->comments[$parent_id] as $val){
					
					// шаблонизатор, там обычный div комментария.
					$this->tpl->assign_block_vars('comment.tpl', array(
						"ID"	=> $val['id'],
						"CLASS"	=> $this->GetVoteClass($val['vote']),
						"USER"	=> ShowText(empty($val['name']) ? $val['login'] : $val['name']),
						"LOGIN"	=> $val['login'],
						"FOTO" 	=> GetPhoto($val['foto']),
						"DATE"	=> rdate("M d H:i", strtotime($val['date'])),
						"VOTE"	=> $val['vote'],
						"TEXT"	=> ShowText($val['text']),
						"MARGIN"=> $level * 20
					));
					
					$this->ShowComments($val['id'], ++$level);
					
					$level--;
				}
			
		}else return null;
		
		return $this;
	}
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы