src/Leevel/View/Parser.php
protected function addThemeTree(array $top, array $new): array
    {
        $result = [];

        foreach ($top['children'] as $child) {
            if ($new) {
                $relative = $this->positionRelative($new['position'], $child['position']);

                switch ($relative) {
                    /*
                     * 新增的和上次处于平级关系直接加入上级的 children 容器中
                     * new 在前 child 在后面
                     */
                    case 'front':
                        $result[] = $new;
                        $result[] = $child;
                        $new = null;

                        break;
                    /*
                     * 新增的和上次处于平级关系直接加入上级的 children 容器中
                     * child 在前 new 在后面
                     */
                    case 'behind':
                        $result[] = $child;

                        break;
                    /*
                     * new 处于 child 内部
                     * new 在 child 内部
                     */
                    case 'in':
                        $child = $this->addThemeTree($child, $new);
                        $result[] = $child;
                        $new = null;

                        break;
                    /*
                     * child 处于 new 内部
                     * child 在 new 内部
                     */
                    case 'out':
                        $new = $this->addThemeTree($new, $child);

                        break;
                }
            } else {
                $result[] = $child;
            }
        }

        if ($new) {
            $result[] = $new;
        }

        $top['children'] = $result;

        return $top;
    }
protected function addThemeTree(array $top, array $new): array
    {
        $result = [];

        foreach ($top['children'] as $child) {
            if ($new) {
                $relative = $this->positionRelative($new['position'], $child['position']);

                switch ($relative) {
                    /*
                     * 新增的和上次处于平级关系直接加入上级的 children 容器中
                     * new 在前 child 在后面
                     */
                    case 'front':
                        $result[] = $new;
                        $result[] = $child;
                        $new = null;

                        break;
                    /*
                     * 新增的和上次处于平级关系直接加入上级的 children 容器中
                     * child 在前 new 在后面
                     */
                    case 'behind':
                        $result[] = $child;

                        break;
                    /*
                     * new 处于 child 内部
                     * new 在 child 内部
                     */
                    case 'in':
                        $child = $this->addThemeTree($child, $new);
                        $result[] = $child;
                        $new = null;

                        break;
                    /*
                     * child 处于 new 内部
                     * child 在 new 内部
                     */
                    case 'out':
                        $new = $this->addThemeTree($new, $child);

                        break;
                }
            } else {
                $result[] = $child;
            }
        }

        if ($new) {
            $result[] = $new;
        }

        $top['children'] = $result;

        return $top;
    }
将新的模板加入到树结构中去.

@param array $top
@param array $new

@return array