1 Отредактировано EXxX (30-04-2013 17:00:03)

Тема: [Решено] Вывод записей по значению дополнительного поля

Здравствуйте, уважаемые разработчики и сообщество.
Ситуация следующая: на главной странице надо выводить предварительное содержание определенных записей. Записи могут располагаться в разных категориях. Вывод хочу обеспечить путем включения в дополнительные поля обязательного радиобатона "да/нет". То есть - отмечено значение "Да" - запись светится на главной. Возникла необходимость - сменил настройки и уже другие записи висят на главной.
Никак не могу разобраться, как подцепить значение этого поля. Буду весьма благодарен за помощь!

Thumbs up Thumbs down

2

Re: [Решено] Вывод записей по значению дополнительного поля

Делал такую фишку для проект 41svn.ru, всё что вы видите в слайдере, сделано как раз именно так. Сделал через виджет products

products.tpl

<ul id="slider">
{foreach $recent_news as $item}
{$item = $CI->load->module('cfcm')->connect_fields($item, 'page')}
{if $item.field_slide==1}
            <li>
                <div style="height:125px; overflow:hidden;">
                <a href="{site_url($item.full_url)}"><img src="{str_replace('images/','images/_thumbs/_',media_url($item.field_image))}" alt="{$item.title}" width="175" class="image" /></a>
                </div>
                <a href="{site_url($item.full_url)}"><img src="{$THEME}/img/see.jpg" alt="Смотреть" class="see" /></a>
                <span class="price">{$item.field_price} тыс.р.</span>
                <img src="{$THEME}/img/shadow.png" class="shadow" />
                {if $item.field_news==1}<img src="{$THEME}/img/news.png" />{/if}
            </li>
{/if}
{/foreach}
</ul>

field_slide - это поле, которое по-умолчанию имеет значение 1, но если оно отмечено.

Простое правило программиста будь проще

3

Re: [Решено] Вывод записей по значению дополнительного поля

Отмечу что это реализовано в версии 3.*, в 4 версии немного изменили схему вывода данных, возможно будет как-то по другому, так что вы сначала выведите просто переменную $item.field_slide, посмотрите какое значение она принимает при отметке и не отметке, и используйте это при создании условия.

Удачи вам!

Простое правило программиста будь проще

4 Отредактировано EXxX (29-04-2013 16:53:06)

Re: [Решено] Вывод записей по значению дополнительного поля

chuikoff, спасибо большое!
Интересная cms, информации бы побольше.

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

{foreach $recent_news as $item}
    {$item = $CI->load->module('cfcm')->connect_fields($item, 'page')}
        {if $item.field_tomain == 'Да'}
            {echo $item.field_tomain}

            <center>
                <h4><a href="{site_url($item.full_url)}" title="{$item.title}">{$item.title}</a></h4>
            </center><br/>
            {$item.prev_text}

        {/if}
{/foreach}

В связи со спецификой дальнейшего использования важно, чтобы значения, передаваемые дополнительным полем были строковыми типа "Да" и "Нет" (или другая осмысленная пара).
Странно, но при этом следующая конструкция, написанная для проверки, выводит в браузере - "Да".

{foreach $recent_news as $item}
    {$item = $CI->load->module('cfcm')->connect_fields($item, 'page')}
        {if $item.field_tomain !== 'Да'}
            {echo $item.field_tomain}
        {/if}
{/foreach}

Тут я вообще ничего не понял. Условие выполняется, если значение переменной $item.field_tomain не соответствует 'Да', и выдает дальше значение этой переменной равное 'Да'...
Либо строковое значение сравнивать некорректно, либо действительно в 4-й версии логика своя.

Thumbs up Thumbs down

5

Re: [Решено] Вывод записей по значению дополнительного поля

А что выводит

{var_dump($item.field_tomain)}
Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!

6

Re: [Решено] Вывод записей по значению дополнительного поля

supleader пишет:

А что выводит

{var_dump($item.field_tomain)}

Вот это:

string(11) "
Да
"

Thumbs up Thumbs down

7

Re: [Решено] Вывод записей по значению дополнительного поля

Либо строковое значение сравнивать некорректно, либо действительно в 4-й версии логика своя.

Всё верно, у 4 версии логика своя, у меня в последнее время тоже глюки со значениями доп.полей. Нужно терзать разработчиков, так работать нельзя)) нужно срочно исправлять баг! Я думал может я один такой баг ловлю, оказывается нет.

string(11) "
Да
"

Забавно, но число 11 указывает на количество символов в строке, а на самом деле та их всего 2. Я пытался делать и trim, и вырезать с помощью строковых функции буквы отдельно, но что-то всё не очень хорошо получилось. Ждём решения!!!

Простое правило программиста будь проще

8

Re: [Решено] Вывод записей по значению дополнительного поля

У меня вместо пустого адреса картинки $item.field_image , появляется нижнее подчёркивание "_", и даже и тоже лишние символы! из-за чего я не могу проверить на пустое изображение.

Простое правило программиста будь проще

9

Re: [Решено] Вывод записей по значению дополнительного поля

smile Спасибо за помощь.
Очень хочется, чтобы кто-то из разработчиков прокомментировал эту ситуацию и дал рекомендацию или хотя бы костыль smile

Thumbs up Thumbs down

10

Re: [Решено] Вывод записей по значению дополнительного поля

В случае с Да/Нет скорее всего хватит такого - str_replace(array("\n","\r","\r\n"," "), '', $item.field_tomain);

Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!

11

Re: [Решено] Вывод записей по значению дополнительного поля

supleader пишет:

В случае с Да/Нет скорее всего хватит такого - str_replace(array("\n","\r","\r\n"," "), '', $item.field_tomain);

Спасибо, но - к сожалению - не срабатывает. Результат этого разбора идентичен исходной строке. Хотя, как минимум, переносы должны были пропасть вроде...

Thumbs up Thumbs down

12

Re: [Решено] Вывод записей по значению дополнительного поля

chuikoff пишет:
string(11) "
Да
"

Забавно, но число 11 указывает на количество символов в строке, а на самом деле та их всего 2.

Возникло подозрение, что сюда же попадают символы HTML разметки. Если в режиме редактирования дополнительного поля переключиться в редактор HTML, то видим, что каждое значение, которое введено в новой строке (как положено) обрамляется тегами <p> и </p> - т.е. добавляется 7 символов. Указывая значение "1" получаем string(8) "1", что в принципе соответствует моему предположению. Правда, для более длинных значений размер строки увеличивается не на 7 символов, а более. Но, это все так - рассуждения. Проблему пока решить не удалось.

Thumbs up Thumbs down

13

Re: [Решено] Вывод записей по значению дополнительного поля

Значит там не символы переноса строки, а просто тэги. Тогда попробуйте так:

trim(strip_tags($item.field_tomain))

Или даже без trim...

Профессиональное создание сайтов любой сложности, аудит, продвижение, а также поддержка вашего интернет ресурса - web2life.ru

TIMEWEB > Всегда больше, чем просто хостинг для ImageCMS!

14 Отредактировано EXxX (30-04-2013 16:59:25)

Re: [Решено] Вывод записей по значению дополнительного поля

supleader пишет:

Значит там не символы переноса строки, а просто тэги. Тогда попробуйте так:

trim(strip_tags($item.field_tomain))

Или даже без trim...

УРРААА!!!  smile  smile  smile
Спасибо огромное!!!
Ларчик-то просто открывался smile Заработала такая конструкция:

{foreach $recent_news as $item}
    {$item = $CI->load->module('cfcm')->connect_fields($item, 'page')}
        {if strip_tags($item.field_tomain) == 'Да'}
            <center>
                <h4><a href="{site_url($item.full_url)}" title="{$item.title}">{$item.title}</a></h4>
            </center><br/>
            {$item.prev_text}
        {else:}
            ...
        {/if}
{/foreach}

P.S. Отдельное спасибо за функцию strip_tags()

Thumbs up Thumbs down