содержимое $wa->blog->posts(1, 3) на странице другого блога

вставляю сквозной блок в index.html, в блоке {$latest_posts = $wa->blog->posts(1, 3)}

содержимое постов не выводится, если посетитель на странице другого блока, на статик страницах все нормально.

цикл по постам срабатывает, по разметке видно, но значения {$post.title} и прочие пустые. что не так?


13 ответов

  • 1
    Эрик Webasyst 16 декабря 2015 09:23 #

    Сложно понять по объяснению что именно и где не работает. Опишите подробнее, приложите снимки экранов.

  • 1
    Андрей 16 декабря 2015 15:23 #

    на сайте 3 блога. новости (ид =1), мероприятия (ид = 2), клуб (ид =3)

    в index.html сслева вставляю {$wa->block("blog.latest_posts")}

    где blog.latest_posts условно:

    {$posts = $wa->blog->posts(1,5)}

    {foreach $posts as $post}
    <a href="{$post.link}">{$post.title}</a>
    <p>{$post.text|strip_tags|truncate:200}</p>
    <hr>
    {/foreach}


    - после этого заходим например на страницу "контакты" (статическая страница) слева новости есть

    - заходим на страницу блога "клуб" слева новостей нет

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


    - заходим в магазин слева новости есть
    - заходим на блог "новости" (тот же самый котрый выводится слева), слева новости есть
    -заходим на блог "клуб " слева новостей нет

    итого {$posts = $wa->blog->posts(1,5)} не работает коректно на страницах блога отличного от ид =1






    • +1
      Андрей Андрей 16 декабря 2015 16:02 #

      прошу прощения за опечатки :)

    • +1
      Эрик Эрик Webasyst 21 декабря 2015 08:31 #

      Проверьте настройки маршрутизации, возможно блог Клуб открывается у вас на витрине, где отображение первого блога запрещено.

      • +2
        Андрей Андрей 21 декабря 2015 13:48 #

        "настройки маршрутизации" это структура сайта? у всех блогов единая тема и настройки

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

        впечатление что опция "один блог" блокирует вывод всех остальных даже если они вызыаются явно по ИД. Надо, Можете позсказать в каких классах формируется запрос и фоматирование ответа для {$wa->blog->posts([blog_id[,number_of_posts]])} ? гляну, что там
        • +2

          Да, тоже столкнулся с такой же проблемой.

          "один блог" блокирует вывод всех остальных даже если они явно вызываются по ИД.

          Решил вопрос изменением этой настройки.

      • +2
        Андрей Андрей 25 декабря 2015 16:48 #

        нашел баг в движке, зарепортил

  • 2

    Привет из 2к22 :)

    Столкнулся с такой же проблемой! Есть какие новости с чем это связано?

    • +1
      replicant replicant 4 мая 2022 11:28 #

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

    • +1

      все еще не поняли? )) очевидно ведь - в настройках стоит "отображать один блог" для поселения, поэтому все остальные блоги в нем и не отображаются

      public function posts($blog_id = null, $number_of_posts = 20, $fields = array())
      {
          $posts = null;
          if ($available_blogs = $this->blogs()) {
          <...>
      }

  • 0
    okumsky 7 сентября 2022 10:31 #

    оставлю тут, может кому пригодится

    /**
         *
         * Get posts
         *
         * @param int   $blog_id null if all available
         * @param int   $number_of_posts
         * @param array $fields
         *
         * @return array
         */
        public function posts($blog_id = null, $number_of_posts = 20, $fields = array())
        {
            $posts = null;
            if ($available_blogs = $this->blogs()) {
                $post_model = new blogPostModel();
    
                $search_options = array();
                //if ($blog_id === null) {
                //    $search_options['blog_id'] = array_keys($available_blogs);
                //} elseif (isset($available_blogs[$blog_id])) {
                //    $search_options['blog_id'] = $blog_id; print_r($blog_id);
                //} else {
                    $available_blogs = blogHelper::getAvailable(false);
                //    if (in_array($blog_id, $available_blogs)) {
                        $search_options['blog_id'] = $blog_id;
                //    }
                //}
                
                if ($search_options) {
                    $extend_data = array('blog' => $available_blogs);
                    $number_of_posts = max(1, $number_of_posts);
                    $posts = $post_model->search($search_options, array('params' => true), $extend_data)->fetchSearchPage(1, $number_of_posts, $fields);
                }
            }
            $non_escape_fields = array(
                'text'            => true,
                'text_before_cut' => true,
                'plugins'         => true,
            );
            self::escape($posts, array('*' => $non_escape_fields));
            return $posts;
        }

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите