Вход • Регистрация

Как вывести статьи в блок?

  • 23 января 2016 г. , редакция: 23 января 2016 г.
  • Я правильно понимаю, Александр предлагает использовать шаблонный тег <insert name="show_block" module="clauses" count="5" site_id="22"> где в значении site_id указывается номер страницы на которой прикреплен модуль «Статьи»?
    Такая конструкция выводит только 5 статей. А как сделать чтобы выводились все статьи с категориями и использовался шаблон указанный на странице со статьями?

    На картинке я показал что хочу сделать. Есть страница «Все статьи». К ней прикреплен модуль «Статьи» и на странице выводятся все статьи и категории. Модуль использует специально заданный шаблон. Как на главной и на странице статьи вывести содержимое страницы «Статьи»?
    • 23 января 2016 г. , редакция: 23 января 2016 г.
    • Андрей, внимательнее и вдумчивее читайте документацию. В вашем вопросе уже содержится ответ:
      Цитата
      <insert name="show_block" module="clauses" count="5" site_id="22">
      Такая конструкция выводит только 5 статей.
      Разумеется, ведь count="5", поставьте count="1000".

      У модуля "Статьи" 2 шаблонных тега. Вы можете выводить статьи по категориям в различных блоках, используя атрибут cat_id. ID категории можно узнать, например, наведя мышку в админке на нужную категорию (см. скриншот).
      • 23 января 2016 г.
      • Павел, наверное ТС хотел не привязываться к количеству, а вывести все. count="all" разве не выводит все имеющиеся?
        • 23 января 2016 г. , редакция: 23 января 2016 г.
        • Я думаю, что выведет. Меня немного смутило, что в документации это не отмечено. В опросах есть, в баннерах есть, а в статьях - нет.

          Не люблю я документацию, которую нужно додумывать. указали атрибут, укажите диапазон значений, которые он принимает.

          Проверил на рабочем сайте, у меня не выводит. Видимо all работает только там, где явно указан в документации.
          Цитата
          Павел, наверное ТС хотел не привязываться к количеству
          А модуль всё-равно выведет всё, что найдёт и оно будет меньше 5000. Это ж сколько клавиатур надо извести, чтобы 5000 статей написать?
          • 23 января 2016 г.
          • count="all" выведет все статьи.
            • 23 января 2016 г. , редакция: 23 января 2016 г.
            • Цитата
              count="all" выведет все статьи.
              Не знаю, может я один такой, но не выводит (см. скриншот).
      • 23 января 2016 г. , редакция: 23 января 2016 г.
      • Я наверное непонятно объяснил что именно хочу. У меня есть страница со статьями (см. вторую картинку или вживую на http://diafan.orenburgdesign.ru/services) и мне нужно чтобы все эти статьи без изменений показывались на главной. Поставил тег <insert name="show_block" module="clauses" count="5" site_id="22"> на главную (я знаю что будет если увеличить атрибут count). Но вместо оформленного списка статей и категорий вывелся список последних статей (см. первую картику или вживую на http://diafan.orenburgdesign.ru). Мне нужно чтобы статьи на главной выводились так же как и на странице Статьи.
        • 23 января 2016 г.
        • Цитата
          Я наверное непонятно объяснил
          теперь понятно. Сейчас попробую у себя на тесте воспроизвести то, что вам надо.
      • 23 января 2016 г.
      • Насчет двух шаблонных тегов у модуля «Статьи». Первый <insert name="show_block" module="clauses"> выводит последние статьи. Он не подходит потому что выводит последние статьи без категорий. Второй <insert name="show_block_rel" module="clauses"> выведет похожие статьи и тем более не подойдет. Если просто к главной прикрепить модуль «Статьи», то он никак не будет взаимодействовать с таким же модулем на странице со статьями.
  • 23 января 2016 г. , редакция: 23 января 2016 г.
  • Цитата
    Если просто к главной прикрепить модуль «Статьи», то он никак не будет взаимодействовать с таким же модулем на странице со статьями.
    Не совсем верно. Вариант №1 решения вашей задачи:
    Прикрепить к главной 2-ой модуль Статей, создать в нём категории. На странице первого модуля в настройках статей указать в качестве доп.категории те, которые создали для главной.

    Оформление сохраняется. Вас этот вариант устроит?
    • 23 января 2016 г.
    • Я думал над таким решением. Это подойдет для пары страниц. Но я еще хочу чтобы ссылки на все статьи показывались так же на странице статьи. А их будет любое количество. Продублирую картинку, которую я вначале показывал.
  • 23 января 2016 г. , редакция: 23 января 2016 г.
  • В моем представлении должен быть шаблонный тег, в котором можно указать id страницы откуда нужно взять результат работы модуля и вывести на любой другой странице. Идея с дополнительными категориями хорошая, но их количество будет увеличиваться пропорционально страницам.
  • 23 января 2016 г. , редакция: 23 января 2016 г.
  • Цитата
    Идея с дополнительными категориями хорошая, но их количество будет увеличиваться пропорционально страницам.
    С вашей задумкой в эту сторону даже смотреть не стоит. Эта идея не расширяемая. На каждую новую страницу получится новая доп.категория.

    Шаблонный тег по-умолчанию содержит
    Код
    Array
    (
    [rows] => Array
    (
    [0] => Array
    (
    [id]
    [name]
    [anons]
    [site_id]
    [link]
    [date]
    [tags]
    [rating]
    )
    так что тоже не подойдёт.

    У меня, к сожалению, уровень компетенции не шибко высокий. Сейчас выходные, в рабочие дни народу побольше, вам наверняка подскажут подходящий вариант решения. У меня идеи есть, но всё упирается в доработку файлов. У меня ощущение, что есть простое решение, просто я о нём не знаю.

    Вообще, если учесть, что шаблонный тег выводит всё-таки все статьи (если его попросить), можно от него добиться необходимого результата. Берём вьюху шаблонного тега, переписываем там вывод статей, исходя из
    Код
    [link] => clauses/o-pokhodakh/ispytano-na-sebe/
    clauses/o-pokhodakh/ - это ведь категория. Можно либо пересобрать массив, либо проверку написать в цикле. Задать соответствие фрагментов ссылок с названиями существующих категорий и вывести. Придётся переписать шаблон и оформить также, как шаблон модуля.

    Хотя, как мне кажется, стоит поискать/подождать более элегантное решение.
  • 23 января 2016 г.
  • Цитата
    мне нужно чтобы все эти статьи без изменений показывались на главной.

    Попробуйте сделать так:
    Скопировать ваш код из clauses.view.list.php в clauses.view.show_block.php

    Я не гарантирую что это сработает (нет времени проверить), но я бегло просмотрел код и вроде как данные ля блока вывода те же самые.
    На всякий случай указывайте site_id="" и count="" превышающий общее число статей.
    • 23 января 2016 г. , редакция: 23 января 2016 г.
    • Из документации
      Цитата
      Атрибуты:

      — cat_id – категории статей, если в настройках модуля отмечено «Использовать категории». Идентификаторы категорий перечисляются через запятую. Можно указать отрицательное значение, тогда будут исключены статьи из указанной категории. Можно указать значение current, тогда будут показаны статьи из по текущей (открытой) категории или из всех категорий, если ни одна категория не открыта. По умолчанию категория не учитывается, выводятся все статьи;


      Возможно придется добавить и атрибут cat_id="" с перечислением всех категорий
    • 23 января 2016 г.
    • Если это не поможет то придется править clauses.model.php
      Код
      public function show_block(){}

      • 24 января 2016 г.
      • Цитата
        Если это не поможет то придется править clauses.model.php

        До такого еще не дорос.
    • 24 января 2016 г.
    • Цитата
      Скопировать ваш код из clauses.view.list.php в clauses.view.show_block.php

      В clauses.view.list.php и clauses.view.show_block.php идентичный код. Да и clauses.view.list.php не подходит потому что выведет только статьи одной категории. А мне нужно вывода всех категорий поэтому я скопировал код из clauses.view.first_page.php. На главной поставил тег <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="11,12,13">. Ничего не вывел потому что не прошла проверка if (empty($result["rows"]).
      • 24 января 2016 г. , редакция: 24 января 2016 г.
      • Цитата
        Скопировать ваш код из clauses.view.list.php в clauses.view.show_block.php
        Это первое, что я попробовал - просто перекинуть код шаблонов (исходя из того, что разбираться в них и править - не совсем подходящий для Андрея (andkozinskiy) вариант). Ничего не вышло.

        Видимо, правки в модели вам не избежать, если хотите увидеть именно ту работу шаблонного тега, которую описывали. Можно скорректировать способ, описанный мной выше, раз
        Цитата
        Если это не поможет то придется править clauses.model.php
        До такого еще не дорос.
        Сделать несколько шаблонных тегов (по одному на категорию). Объединить их в один блок через раздел "Страницы > Блоки на сайте" и выводите этот блок одним шаблонным тегом везде, где нужно. Останется только оформить это через CSS. Но тут проблемы нет.
        • 24 января 2016 г.
        • А, типа такого кода сделать Блоком на сайте и поставить его в любое место шаблона:
          Код
          <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="11">
          <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="12">
          <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="13">
          <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="14">

          Еще можно изменить шаблон clauses.view.show_block чтобы для вывода использовались нужные классы и порядок следования блоков. Потом при добавлении новой категории дописать код Блока на сайте. Хорошая идея! Спасибо.
          • 24 января 2016 г. , редакция: 24 января 2016 г.
          • Цитата
            Еще можно изменить шаблон clauses.view.show_block чтобы для вывода использовались нужные классы
            Можете просто обернуть шаблоныые теги статей в отдельный DIV с ID
            Код
            <DIV id="clauses_block">
            <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="11">
            <insert name="show_block" module="clauses" count="100" site_id="22" cat_id="12">
            </DIV>
            и сделать отдельную группу CSS-стилей для него с префиксом #clauses_block. Шаблонные блоки выводят нормальную иерархию - весь вывод тега в блоке, название категории в отельном вложенном блоке, статьи - тоже в отдельном вложенном.
            • 24 января 2016 г.
            • Если порядок следования совпадает.
              • 24 января 2016 г.
              • Делайте цитату - к чему конкретно относится ваш ответ, а то не всегда понятно. Если имеется ввиду сортировка, то сами категории сортируете руками в блоке. А статьи выводимые сортируете посредством атрибута каждого тега статей
                Код
                <insert name="show_block" module="clauses" sort="date">
              • 24 января 2016 г.
              • Цитата
                Делайте цитату - к чему конкретно относится ваш ответ, а то не всегда понятно.

                Не будущее запомню.
        • 24 января 2016 г.
        • Что значит ТС?
          • 24 января 2016 г.
          • От английского TS - Topic Starter, начавший тему или же более привычное - автор темы.
            • 24 января 2016 г.
            • Я ее продолжил
              • 24 января 2016 г.
              • Тогда имеет место некорректное использование данного термина самим ТС.
                Цитата
                Павел, наверное ТС хотел не привязываться к количеству, а вывести все. count="all" разве не выводит все имеющиеся?
                Поправлю своё сообщение.
  • 24 января 2016 г.
  • Да, извиняюсь, ТС получился я)) Хотя имел ввиду Андрея, просто не увидел, что это продолжение темы, а подумал, что новая тема с новым вопросом)))
    • 24 января 2016 г. , редакция: 28 января 2016 г.
    • Про такие ситуации говорят: "Я - не я и хата не моя!"

      Мне всё-таки интересно, что там с count="all"... Я на 6.0.0.5 попробовал - у меня не получилось.

      Андрей утверждает, что оно работает
      Цитата
      Андрей (andkozinskiy) Вчера, 22:19
      count="all" выведет все статьи.
      Вы предположили, что оно работает
      Цитата
      [Партнер-разработчик] Сергей (darkheart) Вчера, 21:47
      Павел, наверное ТС хотел не привязываться к количеству, а вывести все. count="all" разве не выводит все имеющиеся?
      Итого имеем неопределённость в 3-х вариантах: да/нет/наверное. Кто-то ведь прочтёт, может даже по поиску выйдет на это обсуждение. Надо этот момент прояснить окончательно.
  • 24 января 2016 г. , редакция: 24 января 2016 г.
  • можем на дефолте попробовать. Сейчас скачаю 6,0,0,6 и отпишусь. Андрей, на какой версии CMS у вас работает count="all" ?
    • 28 января 2016 г.
    • У меня стоит 6.0.0.4. Когда экспериментировал со статьями где-то получалось, где-то нет. Сейчас <insert name="show_block" module="clauses" count="all" site_id="22"> ничего не выводит.
    • 28 января 2016 г.
    • Осталось подождать результат Сергея, но что-то мне подсказывает, что count="all" не заработает и у него.
      • 28 января 2016 г. , редакция: 28 января 2016 г.
      • Уважаемые коллеги, Вам необходимо просто проверить shop.model.php на предмет реакции функции на параметр count="all". Вот и все. Если такой реакции у функции нет, то также просто ее добавить. Да и незабыть про shop.php
        • 28 января 2016 г.
        • Виталий, это всё понятно. Вы конечно же имели в виду clauses.model.php и clauses.php. Можно и функцию написать и неопределённые атрибуты использовать. Это не сложно. Я больше переживаю за тех, кто не увидит разницы между shop.model.php и clauses.model.php в наших сообщениях.
          • 28 января 2016 г. , редакция: 28 января 2016 г.
          • Да, ЛЮБИМОВ ПАВЕЛ (WEBNAVIGATOR), Вы правы. Конечно, clauses, хотя принципы одни и теже. Да и если кто будет дополнять этот код, то не забудте про страничную пагинацию, т.к. элементов может быть очень много.
  • 29 января 2016 г.
  • Прошу извинения за поздний ответ. Срочно нужно было улететь в Москву. Да проверил на последеней. Уже на 6.0.0.7 - ничего не выводит

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум