Добрый день,
Возможна ли в системе разбиение статей на категории? Возможность вызова статей в блоки по конретным категориям.
В блоке один - статьи из категории 1
В блоке два - статьи из категории 2
Или нет такой возможности?
Добрый день,
Возможна ли в системе разбиение статей на категории? Возможность вызова статей в блоки по конретным категориям.
В блоке один - статьи из категории 1
В блоке два - статьи из категории 2
Или нет такой возможности?
Если в админпанели зайти в пункт меню страницы → Статьи и выбрать какую-нибудь статью на редактирование, то на странице статьи в нижней части увидим два поля Категория и Бренд. Каждое предназначено для привязывания статьи к конкретной категории и бренду соответственно.
Это показано на анимированном скриншоте ниже. Так как страница довольно большая, на скриншоте условно показан ее разрыв в центральной части.
Изображенные поля категории и бренда опциональны к заполнению. То есть статья может быть привязана к категории, а может и нет. Может быть привязана к бренду или нет. То же самое справедливо и для новостей, они также могут подвязываться произвольно к категориям и брендам. Пока недостаток состоит в том, что статью / новость невозможно привязать более чем к одной категории / бренду. Возможно в будущих обновлениях системы этот момент проработаем лучше.
Когда посетитель сайта переходит на страницу чисто категории или чисто бренда или же категории + какого-то входящего в нее бренда, движок согласно этому извлекает из базы данных привязанные к ней статьи и новости и отправляет их список в шаблон сайта в переменных $articles_for_category и соответственно $news_for_category. Если переход был на страницу чисто категории, то в этих переменных содержатся статьи / новости категории. Если же переход был на страницу бренда или категория+бренд, то переменные содержат статьи / новости бренда.
Далее в нужном месте шаблона в цикле пробегаем по содержимому переменных (каждая по сути является массивом записей о статьях / новостях) и выводим в нужной форме. Дадим пример вывода статей категории / бренда:
{* если точно получили список статей категории *} {if isset($articles_for_category) && is_array($articles_for_category) && !empty($articles_for_category)} {* перебираем в цикле статьи *} {foreach $articles_for_category as $r} {* даем ссылку на статью *} <a href="{strip} {$site|default:''|escape} {if !$r->url_special|default:false} articles/ {/if} {$r->url|default:''|escape} {/strip}"> {* выводим название статьи *} {$r->header|default:'Нет названия!'} </a> {* показываем аннотацию (краткий текст) *} <div class="material-announce"> {$r->annotation|default:''} </div> {/foreach} {/if}Здесь синим выделены те участки кода, которые предназначены исключительно для упреждения ошибок в отрисовке шаблона, если какая-то из переменных не была инициализирована или случайно переназначена верстальщиком где-нибудь выше по коду шаблона.
{* если точно получили список новостей категории *} {if isset($news_for_category) && is_array($news_for_category) && !empty($news_for_category)} {* перебираем в цикле новости *} {foreach $news_for_category as $r} {* даем ссылку на новость *} <a href="{strip} {$site|default:''|escape} {if !$r->url_special|default:false} news/ {/if} {$r->url|default:''|escape} {/strip}"> {* выводим название новости *} {$r->header|default:'Нет названия!'} </a> {* показываем аннотацию (краткий текст) *} <div class="material-announce"> {$r->annotation|default:''} </div> {/foreach} {/if}
Что касается возможности одновременно выводить два и более блоков статей, где в каждом блоке перечислены статьи отдельной категории, то пока этой возможности в движке нет. Только один блок, относящийся к текущей категории / бренду.
Однако идея интересная и станет доступной в следующем обновлении системы, так как уже давно предлагалось ввести в нее механизм доступа к движку из шаблона, чтобы динамически запрашивать произвольные сведения, которые движок не передал в шаблон сразу.
Спасибо!
Эту возможность я видел.
Меня интересует следующий механизм.
Есть статьи. У статей есть свои категории, помимо того что их можно привязывать к категориям магазина.
Допустим - Статьи о рыбалке, статьи о удочках, статьи о рыбаках.
При заходе в Статьи просто - выводится список всех статей со всех категорий.
При заходе в категорию статей о рыбалке - выводятся статьи принадлежащие к категории рыбалка.
На главной допустим у меня два блока, которые показывают заголовки последних статей из разных категорий.
1 блок - выводит три статьи из категории статьи о рыбалке.
2. блок выводит статьи о рыбаках.
3 блок - выводит все последние добавленные статьи .
Если я правильно понял, та на данный момент такой возможности нет.
Абсолютно верно. Сейчас нет возможности на произвольной странице сайта вывести иные сведения, кроме тех, что движок поставляет в текущую страницу согласно ее типу.
В следующем обновлении появится интерфейс взаимодействия с движком из шаблона, и тогда например на главной (в шаблоне главной страницы) человек сможет объявить блок1, блок2 ... блокN, а перед каждым обратиться к движку и запросить конкретную информацию. Выглядеть это будет примерно так:
{* в переменную $my_list получаем 4 последние статьи из категории О удочках *} {get_articles from = 'Отдых / Рыбалка / О удочках' count = 4 order = 'last' assign = 'my_list'} {* выводим содержимое $my_list в блок1 *} <div class="block-1"> ... ... </div> {* получаем 5 ранних статей из категории О рыбаках *} {get_articles from = 'Отдых / О рыбаках' count = 5 order = 'first' assign = 'my_list'} {* выводим содержимое $my_list в блок2 *} <div class="block-2"> ... ... </div> {* получаем 3 последние новости из всех категорий *} {get_news from = '' count = 3 order = 'last' assign = 'my_list'} {* выводим содержимое $my_list в блок3 *} <div class="block-3"> ... ... </div> и так далее
Такой интерфейс при достаточном наборе псевдо-функций (get_НЕЧТО) и продуманной структуре параметров позволит реализовывать на сайте нетривиальные решения. Я уже сам вижу, что люди начали делать для Имперы хорошие модули, но в отдельных случаях из-за специфики модуля сталкиваются с проблемой - как получить от движка определенные сведения именно из некоторой страницы шаблона.