Вывод категорий блога в посте блога

Очередная проблема с которой столкнулся и на хабе опять ни чего про это не нашел. Как вывести категории блога (магазина я знаю как) в посте блога?

Такой код у меня стоит в sidebar.html

<!-- Категории блога -->
{if ($action eq 'default')}
<div class="bloc_menu_blog">
	<div class="bloc_menu_blog1">Категории блога</div>
    {foreach $frontend_action as $plugin => $output}
        {if !empty($output.sidebar)}{$output.sidebar}{/if}
    {/foreach}
</div>
{/if}
<!-- /Категории блога -->

И выводится в index.html

{include file='sidebar.html' inline}

Но вот такой код почему-то не выводится в post.html, что не так?

4 ответа

  • 1

    Шаблон post.html компилируется отдельно от обвязки(еще и раньше ее) и не содержит переменных доступных в ней. Лучшим решением для вас будет написание пользовательского "хелпера" для получения нужных данных в шаблоне post.html.

    • +1
      realteam realteam 26 сентября 2016 15:13 #

      Каким образом это делается? к сожалению не силен в хелперах.

  • 1
    realteam 26 сентября 2016 15:34 #

    Еще интересует как вызывать категории из блога, какой код подскажите, это нужно для создания хлебных крошек в блоге.

  • 1
    realteam 26 сентября 2016 17:56 #

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

    Может кто подскажет как можно это:

    {if empty($posts) && $wa->currentUrl() == $wa_app_url}
    	<div class="welcome">
    		<h1>[`Welcome to your new blog!`]</h1>
    		<p>{sprintf('[`Start by writing a post in your <a href="%s">blog backend</a>.`]', $wa_backend_url|cat:'blog/')}</p>
    	</div>
    {else}
    	{$content}
    {/if}

    Заменить на нормальный заголовок h1, который отображался бы только на главной?

    • +1
      Antonio Antonio 27 сентября 2016 22:05 #

      Поделись. Как крошки прикрутил? Не могу разобраться.

      • +1
        realteam realteam 27 сентября 2016 22:22 #

        Они не совсем правильные, но делюсь:

        Это вставить в stream.html и post.html

        <!-- Хлебные крошки блога -->
        <div class="breadcrumbs bread" prefix="v:http://rdf.data-vocabulary.org/#">
        {$has_current_blog = 0}
            {if $post} {*Эта ветка работает, если мы находимся на странице поста*}
        {foreach $wa->blog->blogs() as $blog}
        {if $wa->globals('blog_id') eq $blog.id}
            <a href="/">{$wa->shop->settings('name')}</a>
        <span typeof="v:Breadcrumb">
            » <a class="bread_blue" href="{$wa->getUrl('blog/frontend')}" rel="v:url" property="v:title">Блог</a>
            » {$wa->title()}
        </span>
        {$has_current_blog = 1}
        {/if}
        {/foreach}
        {$post.title|escape}
        {else} {*Эта ветка работает, если мы находимся на странице блога*}
        {foreach $wa->blog->blogs() as $blog}
        {if $wa->globals('blog_id') eq $blog.id}
            <a href="/">{$wa->shop->settings('name')}</a>        
        <span typeof="v:Breadcrumb">
            » <a class="bread_blue" href="{$wa->getUrl('blog/frontend')}" rel="v:url" property="v:title">Блог</a>
            » {$wa->title()}
        </span>
        {$has_current_blog = 1}
        {/if}
        {/foreach}
        {/if}
        {if !$has_current_blog}Блог{/if} {*Это на случай, если мы не на странице поста и не на странице блога*}
        </div>
        <!-- /Хлебные крошки блога -->

        У хлебных крошек я не знаю как убрать на главной слово "БЛОГ" и не знаю как вывести "категории" в них. Изначально я их нашел в этом хабе, и связался с автором, который мне подсказал следующее:

        Я вижу, у Вас все прекрасно получилось и без нашей помощи) Если Вас интересует именно страница https://collimator.su/blog/, то есть корень поселения приложения блог, то для определения, что Вы находитесь именно на этой странице, можно использовать конструкцию {if $smarty.server.REQUEST_URI == $wa_app_url && $wa_app == 'blog'} {*Ваш код хлебных крошек для страницы https://collimator.su/blog/*} {/if} В этой конструкции мы сначала определяем, является ли текущая ссылка корневой для какого-либо из приложений, а затем проверяем, что это приложение - именно "Блог". Конечно же, можно немного изменить первую часть Вашего кода, так как, если Вы находитесь в посте, то не показывается имя блога, к которому этот пост относится, что, на мой взгляд, не совсем логично. Неплохо бы на странице поста сначала прогнать код, аналогичный коду для страницы блога, а потом добавить в конец имя поста.

        Но к сожалению я не въехал, как прикрутить все это, и если у вас получится, то делитесь тут.

  • 1
    Леонид Залюбовский 15 февраля 2017 07:31 #

    Прямой вывод категорий блога, в приложении Блог:

    {if $categories = blogCategory::getAll()}
    {foreach $categories as $category}
    <a href="{$wa->getUrl('blog/frontend/', ['category' => {$category.url}], true)}">{$category.name}</a>
    {/foreach}
    {/if}
    • +1
      realteam realteam 15 февраля 2017 10:05 #

      А какой способ лучше ваш или вот этот?

      {if $frontend_action}
      	{foreach $frontend_action as $plugin => $output}
      	{if $plugin == 'category-plugin' && !empty($output.sidebar)}
             	{$output.sidebar}
      	{/if}
      	{/foreach}	
      {/if}
    • +1
      Максим Максим 6 сентября 2018 21:16 #

      Ссылка на категорию при таком выводе не работает, вообще ссылка не отображается:

      {$wa->getUrl('blog/frontend/', ['category' => {$category.url}], true)}


    • +1
      Максим Максим 29 июня 2019 15:50 #

      Данная конструкция при отсутствии установленного плагина "Категории" в системе выдает ошибку.

      Каким условием можно проверить в теме дизайна установлен ли плагин "Категории" или нет?

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

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