Как определить что в топике есть иные ресурсы чем текст и вставленные в текст картинки?

Под иными ресурсами понимаются: заполненные дополнительные поля, прикрепленные файлы.
Задача — выводить кнопку «читать далее» в ленте топиков только в тех случаях когда есть тэг кут, фотосет,голосование, прикрепленные файлы, заполенные дополнительные поля и т.д., если же ничего этого нет — кнопку не выводить.

С тэгом кут, фотосетом и голосовалкой вроде понятно, а вот как быть с прикрепленными файлами и дополнительными полями?

13 комментариев

+1
Проблемы твоей есть решение

1. Файл
{if $oFile=$oTopic->getFieldFile($iFileFieldId)}
    Если есть файл.
{/if}


2. Поле
{if $oAnotherField = $oTopic->getField($iAnotherFieldId)}
     {$sAnother = $oAnotherField->getValue()}
     {if $sAnother == "что-то определенное"}
         Можно еще значение проверить.
     {/if}
{/if}
Отредактирован:
+1
Соответственно
$iFileFieldId, и
$iAnotherFieldId
— id номера полей
Отредактирован:
0
а без $iFileFieldId нельзя? мне ведь не важно какие там поля и сколько их. важно что они есть — любые...
0
Важно что они есть любые это другая задача. Каков вопрос таков ответ. Хочешь проверить что добавлен файл — проверяй по id поля. Можно сделать перебор по массиву, через $oContentType, в шаблонах можно найти пример.
0
Почему же другая? Ведь если я пишу о тэге кут, фотосете, и при этом упоминаю прикладываемые файлы- понятно же что меня интересует дополнительное поле «любое» а не какое-то конкретное? ведь ни тэга кут, ни фотосета не бывает тут «разных». Соответственно в контексте вопроса- должно быть понятно что меня интересует любой дополнительный ресурс а не какой-то конкретный.
0
ведь ни тэга кут, ни фотосета не бывает тут «разных»
Вообще-то а) не совсем так б) читаем еще раз что ты написал

С тэгом кут, фотосетом и голосовалкой вроде понятно, а вот как быть с прикрепленными файлами и дополнительными полями?
Поле типа «файл» это вполне конкретное доп. поле. Их может быть много.
Упомянутые «Дополнительные поля» — это именно что дополнительные поля, которых может быть сколько угодно почти каких угодно.

Так что какой вопрос такой ответ.

А насчет того что тебе нужно другая логика, а именно проверить наличие любого из полей, как я уже сказал это делается перебором всех полей, получаемых через объект ContentType, посмотри шаблоны, в частности вывод доп. полей и скопируй оттуда, ибо эта логика уже реализована.
Отредактирован:
0
То есть в cms нет такой сущности, которая бы была отлична от нуля если у топика существует хотя бы одно, любое, дополнительное поле? Поиск этого хотя бы одного, любого дополнительного поля надо делать перебором?
Отредактирован:
0
Но ведь дополнительные поля топика где-то регистрируются? Следовательно где то обязана быть сущность которая будет отлична от нуля если есть хотя бы одно любое дополнительное поле?
0
Поле типа «файл» это вполне конкретное доп. поле. Их может быть много.
Упомянутые «Дополнительные поля» — это именно что дополнительные поля, которых может быть сколько угодно почти каких угодно.

Так что какой вопрос такой ответ.


Логика работы CMS с дополнительным полем типа файл — несколько иная чем с другими типами дополнительных полей. Например с текстовыми.

Поэтому я предположил, что в CMS существует некая сущность, которая учитывает поля типа файл ассоциированные с топиком отдельно от других дополнительных полей. Поэтому в вопросе прикрепленные файлы и другие дополнительные поля указаны раздельно.
0
Есть сущность «тип контента» из нее можно получить все id доп полей, которые ты сконфигурил в движке для данного типа топика. А определить заполнены эти поля, добавлены ли файлы, фотосет и т.д. можно только прямым перебором с проверкой существования ненулевого значения. Это очевидно. И так сделано в шаблонах. В движке нет сущности «если хотя бы одно поле заполнено». Это твоя собственная нужная лично тебе логика. И если уж на то пошло тег «кат» не имеет отношения к этим доп сущностям никакого.

Выше я все что нужно достаточно подробно объяснил, причем не один раз.
0
ясно. спасибо
0
Если нужно проверить, есть ли вообще заполненные дополнительные поля у топика (неважно, какие), то вот примерно такой код может быть:
{if $oContentType}
    {foreach $oContentType->getFields() as $oField}
        {if $oField->getFieldType() == 'file'}
            {if $oTopic->getFieldFile($oField->getFieldId())}
                {$bFieldsNotEmpty = true}
            {/else}
        {else}
            {if $oTopic->getField($oField->getFieldId())}
                {$bFieldsNotEmpty = true}
            {/else}
        {if}
    {/foreach}
{/if}

{if $bFieldsNotEmpty}
    поля не пустые
{/if}
0
понятно. спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.