На Deep-CMS «напал»:

Typical Programmer

Генерация html-разметки

Генерировать html-разметку Вам поможет статический класс htmlHelper. Ниже представлены доступные в данный момент статические методы этого класса.

htmlHelper::drawOptionList($options)

Метод генерирует на основе входного массива разметку вида:

<option> ... </option>

предназначенную для выпадающих списков. Входной массив может содержать как объекты, так и массивы, описывающие состояния опшнов:

<?php

$options = array(

  array('value' => 1, 'description' => 'Значение 1'),
  array('value' => 2, 'description' => 'Значение 2'),
  array('value' => 3, 'description' => 'Значение 3'),
  array('value' => 4, 'description' => 'Значение 4', 'selected' => true),
  array('value' => 5, 'description' => 'Значение 5'),

);

?>

<select name="options">
  <?php echo htmlHelper::drawOptionList($options); ?>
</select>

htmlHelper::drawTreeLinksList($arr)

Метод возвращает сгенерированную разметку вложенных списков с ссылками: ul li a. Полезен при генерации выпадающих меню или построения ul-li-дерева в карте сайта. Принимает в качестве аргумента линейный массив вида:

$nodes = array(

  array('lvl' => 1, 'node_name' => 'Название 1', 'page_alias' => '/url/page1.html'),
  array('lvl' => 2, 'node_name' => 'Название 2', 'page_alias' => '/url/page2.html'),
  array('lvl' => 3, 'node_name' => 'Название 3', 'page_alias' => '/url/page3.html'),
  array('lvl' => 3, 'node_name' => 'Название 4', 'page_alias' => '/url/page4.html'),
  array('lvl' => 1, 'node_name' => 'Название 5', 'page_alias' => '/url/page5.html'),
  array('lvl' => 1, 'node_name' => 'Название 6', 'page_alias' => '/url/page6.html'),
  array('lvl' => 2, 'node_name' => 'Название 7', 'page_alias' => '/url/page7.html'),
  array('lvl' => 1, 'node_name' => 'Название 8', 'page_alias' => '/url/page8.html')

);
<?php echo htmlHelper::drawTreeLinksList($nodes); ?>

Эффективность данного метода в том, что он строит разметку вложенных списков без рекурсии за один обход массива. Кроме того, как можно видеть из приведенного выше примера — совершенно не требуется соблюдать отношения «родитель-потомок», т.к. при генерации считается что входной массив уже отсортирован, а отношения выстраиваются только по уровню вложенности.

Это может быть полезным при выборке узлов с фильтрацией по типам и/или нестандартной сортировкой. Отношения «родитель-потомок» в такой выборке будут безвозвратно потеряны, однако вложенные списки будут сгенерированы корректно.

Deep: 2013-11-12 03:59:53 (обновлено 2014-01-26 15:27:07)

Оставить комментарий

Комментарии:

protection