1

Тема: Вывод содержания контента одной страницы внутри другой

Вчера часа три посвятил поиску решения этого вопроса. Даже забыл зачем мне это нужно было. Саму идею только запомнил: вывод содержания контента одной страницы внутри другой с помощью шорткода, так, как это сделано с блоками.  {block get="test"}  Возможно ли это? Плагины новостей и блога не понравились. Если пользователь пишет какую-нибудь статью и решил вставить подборку таких статей, на эту же тему. Можно, конечно, тупо скопировать, но мы же в XXI веке! :-)

Поделиться

2

Re: Вывод содержания контента одной страницы внутри другой

Через iframe можно вывести......

Лучше сгореть, чем истлеть...

Сайт kromverk

Поделиться

3

Re: Вывод содержания контента одной страницы внутри другой

kromverk пишет:

Через iframe можно вывести......

Он типа так хочет:
{pages=home}
{pages=about}
{pages=forum}
В таком виде их выводить

Поделиться

4

Re: Вывод содержания контента одной страницы внутри другой

JINN, то есть надо какой-то плагин? Где эту функцию get_page_content редактировать-прописывать?

Поделиться

5

Re: Вывод содержания контента одной страницы внутри другой

Спасибо, будем пробовать.

Поделиться

6

Re: Вывод содержания контента одной страницы внутри другой

Прошу сильно не пинать, я ведь самоучка. Не получается.  Рассуждаю так: функция get_page_content

function get_page_content($slug) {
            return Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $slug . '.page.txt'));
}

преобразовывает html-код контента определенной статьи в текстовый вид.  Что именно за статью надо преобразовывать определяет переменная slug. Добавляю данный код в pages.plugin.php. По аналогии с blocks плагином

// Add shortcode {block get="blockname"}
    Shortcode::add('block', 'Block::_content'); 

и на основании документации переделываю

// Add shortcode {page get="slug"}
    Shortcode::add('page', 'Page::_get_page_content'); 

Пробовал и добавочную функцию такого типа

function foo($attributes) {
    
    // Extract
    extract($attributes);
    
    // text
    if (isset($text)) $text = $text; else $text = '';

    // return
    return $text;
    
}

Все равно ничего не выводится, кроме

{page get="slug"}

Разработчики, помогите, пожалуйста, может это и нужное дополнение будет для самой CMS

Поделиться

7

Re: Вывод содержания контента одной страницы внутри другой

Не идет.
Parse error: syntax error, unexpected T_PUBLIC in /home/blokspil/blokspilok.org.ua/test/plugins/box/pages/pages.plugin.php on line 370
Содержание 370 строки:

public static function url() {
            return Option::get('siteurl').Pages::$page['slug'];
        }

Поделиться

8

Re: Вывод содержания контента одной страницы внутри другой

Shortcode::add('page', 'get_page_content'); 

function get_page_content($attributes) {

    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);

    return Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));
}
{page slug="home"}

Сайт Awilum

Поделиться

9

Re: Вывод содержания контента одной страницы внутри другой

Ура! Выводит...но... с одной ошибкой. Те страницы, которые содержат {block get="test"} - блоковая часть не выводится.

Поделиться

10

Re: Вывод содержания контента одной страницы внутри другой

УУУУРРРААА! Все работает! Ребятки, молодцы! Можно идти спатки со спокойной душой! Спасибо!!!!

Поделиться

11 (2012-11-20 06:28:04 отредактировано sergeyterr)

Re: Вывод содержания контента одной страницы внутри другой

так а что ты сделал чтобы заработало?

Спасибо говорим плюсиком в репутацию. Так виднее smile

Поделиться

12

Re: Вывод содержания контента одной страницы внутри другой

Может кто нибудь объяснить что он сделал? и в каком файле это редактировать?

(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться

13 (2012-11-20 11:14:23 отредактировано newbie)

Re: Вывод содержания контента одной страницы внутри другой

RomanArt пишет:

Может кто нибудь объяснить что он сделал? и в каком файле это редактировать?

Ну судя по коду тут:

/plugins/box/pages/pages.plugin.php

Найти 29-30 строки:

        // Include Admin
        Plugin::Admin('pages', 'box');

Заменить на:

        // Include Admin
        Plugin::Admin('pages', 'box');

    }
    
    Shortcode::add('page', 'get_page_content');
     
    function get_page_content($attributes) {
    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);
    return Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));
    }

Вывести на странице другую страницу:

{page slug="home"}

home - это название slug
P.S. Может конечно код корявый, но грубо говоря не надо на странице home выводить страницу home

Поделиться

14 (2012-11-20 11:19:33 отредактировано RomanArt)

Re: Вывод содержания контента одной страницы внутри другой

Спасибо что показал как сделать, все работает

(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться

15

Re: Вывод содержания контента одной страницы внутри другой

RomanArt пишет:
        /**
         * Get pages contents
         *
         * @return string
         */
        public static function content() {
            return Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . Pages::$page['id'] . '.page.txt'));
        }

сюда нужно добавить вот это? :

function get_page_content($attributes) {

    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);

    return Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));
}

а куда это тогда? smile)

Shortcode::add('page', 'get_page_content'); 

пробывал все в месте влепить сайт не открывался

Обновил пост выше:
http://forum.monstra.org/ru/post/2415/#p2415

Поделиться

16

Re: Вывод содержания контента одной страницы внутри другой

т.е теперь я могу создать страницу home  например
в нее впихнуть весь код страницы с дизайном - подключить страницы в местах заполнения текста \ картинок \ ссылок + блоки в эту страницу  и все будет как примерно задумывал о снайпах \ блоках если ты помнишь конечно smile

(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться

17

Re: Вывод содержания контента одной страницы внутри другой

RomanArt пишет:

т.е теперь я могу создать страницу home  например
в нее впихнуть весь код страницы с дизайном - подключить страницы в местах заполнения текста \ картинок \ ссылок + блоки в эту страницу  и все будет как примерно задумывал о снайпах \ блоках если ты помнишь конечно smile

Ну что-то это я сложно просто представляю.... Ты сделай через блоки дизайн, а в блоки вставь:

{page slug="home"}

Иначе просто вывод контента мне не понятен:-)

Поделиться

18

Re: Вывод содержания контента одной страницы внутри другой

{page slug="'test1"} - в контенте 

как правильно сделать для снайпов или шаблонов тег?

так не работает
<?php echo Slug::get('test1'); ?>
<?php echo slug::get('test1'); ?>
(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться

19

Re: Вывод содержания контента одной страницы внутри другой

<?php echo get_page_content(array('slug' => 'test1')); ?>

Сайт Awilum

Поделиться

20

Re: Вывод содержания контента одной страницы внутри другой

RomanArt А что такое снайп? Никак не пойму, ты все время их используешь.

Спасибо говорим плюсиком в репутацию. Так виднее smile

Поделиться

21

Re: Вывод содержания контента одной страницы внутри другой

я просто так называю : "Сниппеты" "Snippets" , не разу не использовал русскую админку на английской только сижу, как прочит так и говорю smile

(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться

22

Re: Вывод содержания контента одной страницы внутри другой

возникла проблема не работает шорт код в постах теперь smile)

{siteurl}

не пашет ток в постах и только на сайте где менял код для плагины "page"
в блоках все ок, на чистом движке все ок

(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться

23

Re: Вывод содержания контента одной страницы внутри другой

function get_page_content($attributes) {

    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);

    $content = Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));

    $content = Filter::apply('content', $content);

    return $content;
}

Сайт Awilum

Поделиться

24 (2012-11-20 19:28:57 отредактировано russhohol)

Re: Вывод содержания контента одной страницы внутри другой

Вот изменения в мой файл pages.plugin.php 25-33 линия

  Shortcode::add('page', 'get_page_content'); 

       function get_page_content($attributes) {
    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);

    $content = Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));

    return Filter::apply('content', $content);
}

Поделиться

25

Re: Вывод содержания контента одной страницы внутри другой

Awilum пишет:
function get_page_content($attributes) {

    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);

    $content = Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));

    $content = Filter::apply('content', $content);

    return $content;
}

вот весь код мой, правильно? не знаю туда ли я вставил но все работает спасибо smile)

        // Include Admin
        Plugin::Admin('pages', 'box');

    }

function get_page_content($attributes) {

    $page = Pages::$pages->select('[slug="'.$attributes['slug'].'"]', null);

    $content = Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt'));

    $content = Filter::apply('content', $content);

    return $content;
}

    class Pages extends Frontend { 
(c) RomanArt
Создание дизайнов любой сложности для Monstra cms

Поделиться