1

Тема: Вывод ссылок на дочерние страницы в родителе

1 - Возможно то что я хочу уже реализовано, просто я этого еще не увидел.
2 - Возможно уже есть какой нить плагин который позволяет это сделать, просто я его еще не видел.
3 - Есть такой плагин как Статьи. Там идет жесткая привязка к странице Articles.

Что я хочу.
Пример, есть страница родитель например Info, и у этого родителя есть к примеру 5 страниц.
Так вот в родителе выводится список ссылок на эти 5 страниц.
Ведь наверняка где то в базе прописаны эти дочерние страницы.
По сути это реализация того же плагина Статьи, только другим способом.

Разница только в том что

  • не будет жесткой привязки к какой-либо странице

  • будет просто список ссылок на дочерние страницы

Вот пример
http://i.imgur.com/cDrPP.png

!!!   ---   Облегчи жизнь себе и другим ЧИТАЙ ПРАВИЛА   ---   !!!

░░░▒▒▒▓▓▓█   Monstra Demo Site ®  █▓▓▓▒▒▒░░░

Сайт AlxBuk

Поделиться

2

Re: Вывод ссылок на дочерние страницы в родителе

Ха, случайно забил сабж в гугл и нашол такую же тему в TCMS

!!!   ---   Облегчи жизнь себе и другим ЧИТАЙ ПРАВИЛА   ---   !!!

░░░▒▒▒▓▓▓█   Monstra Demo Site ®  █▓▓▓▒▒▒░░░

Сайт AlxBuk

Поделиться

3 (2012-11-17 16:17:34 отредактировано olsv64)

Re: Вывод ссылок на дочерние страницы в родителе

Awilum спасибо за подсказку

Сайт olsv64

Поделиться

4

Re: Вывод ссылок на дочерние страницы в родителе

Вывод ссылок на дочерние страницы в родителе

echo Page::available();

или

$pages = Page::children('parent_page_name');
foreach($pages as $page) {
echo $page['title'];
}
Follow me: Twitter | GitHub | Facebook | Вконтакте

Стань спонсором проекта!

Сайт Awilum

Поделиться

5

Re: Вывод ссылок на дочерние страницы в родителе

Тоже задался этим вопросом, в итоге получилось smile В шаблоне для нужных страниц прописываем следующее:

<?php echo Page::available(); ?>

Для настройки вывода списка редактируем следующий файл:

/plugins/box/pages/views/frontend/available_pages.view.php

Поделиться

6

Re: Вывод ссылок на дочерние страницы в родителе

Всех с праздником 9 Мая.

А  как вывести список дочерних страниц через - shortcodes.({available}). А то получается никак нельзя страницу оформить. Вывводиться просто список.

Спасибо.

Поделиться

7

Re: Вывод ссылок на дочерние страницы в родителе

Все, вопрос снят, вроде как сам справился.

Поделиться

8

Re: Вывод ссылок на дочерние страницы в родителе

В общем кому может пригодится. Доработал функцию "available". Позволяет создать что-то вроде мини-каталога. То бишь на дочерней странице выводится все вложенные категории, с обрезкой до нужного количества символов.

Преимущества - можно моздавать неограниченное колличество мини-каталогов.
Недостатки - нету пагинации, и пока не получилось прицепить {cut}.

Собственно код:
Заменяем стандартную запись в файле /plugins/box/pages/pages.plugin.php - у меня это 438 строка

на

    public static function available()
    {
               $pages = Pages::$pages->select('[parent="'.Pages::$requested_page.'"]', 'all');    
               $current_page = Pages::$page['slug'];
                  $query = '[parent="'.$current_page.'" and status="published"]';
                $posts = Pages::$pages->select($query, array('slug', 'title', 'author', 'date'), 'date', 'DESC');
                foreach($posts as $key => $post) {
                $post_short = explode("{cut}", Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $post['id'] . '.page.txt')));
                $posts[$key]['content'] = mb_substr(Filter::apply('content', $post_short[0]),0,100, 'utf-8');
                }    
                View::factory('box/pages/views/frontend/available_pages')
                ->assign('pages', $pages)
                ->assign('contents', $posts)
                ->assign('current_page', $current_page)
                ->display();
    }
    

   
И меняем запись в файле /plugins/box/pages/views/frontentd/available_pages.view.php
на

<?php foreach($contents as $post) { 
        foreach ($pages as $page) {
                        if ($post['id'] == $page['id']) {
                        echo $post['content'];
        ?>
             <li><a href="<?php echo $page['parent'].'/'.$page['slug']; ?>"><?php echo $page['title']; ?></a></li>
<?php
        }
    }
 } 
?>

Далее для дочерней странице используете шаблон available, а для вложенных страниц шаблон какой вам необходим.

Если у кого есть замечания пишите, доработаем вместе.

P.S. в php я не селен.

Поделиться