Вход для клиентов и партнеров
в начало сайта
Партнерская программаОнлайн демоСкачатьКарта сайта
 

Регламент
Документация
Часто задаваемые вопросы (FAQ)
Решения типовых вопросов
Форум поддержки
Библиотека разработчика

Посмотрите демо-ролики и убедитесь в том, что "Twilight CMS" очень удобна в управлении, понятна и проста.

Бесплатно скачайте "Twilight.Basic", установите на своем компьютере и изучите систему более детально.

Если вам нужно установить "Twilight CMS" на существующий сайт или разработать новый - обращайтесь в отдел интеграции.

 

Ваше имя
Ваш Email
Вопрос
Twilight.basic
  • Узнайте больше
  • Сравните версии
  • Twilight.selection
  • Узнайте больше
  • Сравните версии
  • Twilight.evolution
  • Узнайте больше
  • Сравните версии
  •  
    Главная // Форум поддержки

    Сборка сайта / Использование различных сервисов / Не могу понять почему не работает

    есть новые сообщения  Время:   01.11.11 21:58
    runeteye Есть блог, в нём посты, для каждого поста выбирается несколько тегов (меток). В админке на странице редактирования поста, тег добавляется из стороннего справочника (таблицы tags) и затем выбранные теги сохраняются в таблицу posts в переменную tag1.

    Мне нужно вывести на странице с текстом поста все теги, которые я ему присвоил. Логика такая: я возьму из таблицы tags и выведу на страницу те теги (tagname) из этой таблицы, которые совпадают с тегами tag1 из таблицы posts для данной записи.

    В дизайн отрисовки поста я вставил вот такой макрос:

    $News[source: tags; design: tags; filter: tagname rin $Attribute:tag1$]$

    Дизайн tags создал. Макрос ничего не выводит. Если убрать filter и всё после него, то выводится список всех тегов из таблицы tags (этого мне не надо). Если вместо rin поставить in, то выведется то, что мне надо, то с ошибками: есть теги с пробелами, например Google и Google Docs - если у поста есть только тег Google Docs, то выведется сразу два: Google и Google Docs.

    Запятых в tag1 нет, но теги в teg1 разделяются символом NUL (или 0x00 в шестнадцатеричной системе). Замена NUL на другой символ нужного результата не дала.

    Почему не работает макрос?

    есть новые сообщения  Время:   01.11.11 23:47
    Служба поддержки Опишем как это решается у нас в блогах. Если у вас есть тэги с пробелами, на русском или как-то еще - сделайте еще одно поле в справочнике тэгов, где храните некоторый идентификатор без пробелов, например мнемокод латиницей. В атрибуте поста будет храниться перечень таких мнемокодов, через нулевой символ. И in/rin будет работать там без проблем, просто соблюдайте логику. rin лучше заменить на contains (это аналог, просто более понятный при чтении), см. документацию по ключу filter в TSDN.

    В дизайне поста:
    $News[source: tags; design: item_tags; params: tag=$Attribute:tag$]$

    Сам дизайн для вывода тэгов:

        <newsdesign id="item_tags">
            <header/>
            <delimiter>
                <![CDATA[]]>
            </delimiter>
            <item>
                <![CDATA[$Text[source: "<A HREF="/news/?tag=#036;Attribute:mnemo$">$Attribute:title$</A> "; condition: $Attribute:mnemo$ in $Attribute:tag$]$]]>
            </item>
            <footer/>
        </newsdesign>

    Структура данных:
    Сущность для тэгов:
        <entity id="tag" name="Тэг">
            <field id="title" type="string" sortas="literal" name="Title"/>
            <field id="mnemo" type="string" sortas="literal" name="Mnemocode"/>
        </entity>

    Сущность для поста:

        <entity id="news_item" name="Новость" admin-template="news_form_edit">
    ...
            <field id="tag" type="select" table="tags" optiontitle="title" optionvalue="mnemo" name="Тag" params="multiple"/>
    ...
        </entity>

    есть новые сообщения  Время:   02.11.11 21:01
    runeteye Спасибо за подсказку. Логику пока не до конца понял (голова пока другим занята), но думаю, что на практике разберусь.
    есть новые сообщения  Время:   04.11.11 12:20
    runeteye Разобрался, все работает, но возникла другая проблема: когда название одного тега входит в название другого. Например, блог и блоговодство (blog, blogovodstvo). Если у поста стоит только тег "блог", то будет ещё и приписан тег "блоговодство", который автор не устанавливал.

    Можно конечно этот момент сразу после публикации поста отслеживать и исправлять латинский идентификатор на уникальный, но если на блоге 1000 постов и 2000 тегов? Такой косяк может вылезти в любом посте и с любым тегом, так что вручную эту проблему не исправить.

    Остаётся такой вариант решения, как добавление к латинскому идентификатору случайного числа, например текущего времени. Это решит проблему.

    есть новые сообщения  Время:   04.11.11 12:47
    Служба поддержки Ищите варианты, думайте. Ситуации у каждого свои. У нас в блогах обычно тэгов десяток, не более. Если тэгов 2000, то это не тэги, а мусор, который не будет выполнять своего основного назначения: метки, темы. Это скорее будет просто некоторая подпись под постом и выносить её в отдельный механизм не имеет смысла. Тогда проще в поле тэгов просто строкой писать все что угодно, и сделать поиск по блогу с учетом этого поля. А если нужны тэги как ссылки на главной, то отобрать десяток актуальных тем вручную. Это все к тому, что целесообразность того или иного решения зависит от вашей конкретной тематики и задачи. Хороших универсальных решений не бывает.

    Ваше имя:

    Email:

    Сообщение:

    Прислать оповещение на email, если мне ответят

     
    © 2003-17 Страта Технологии (создание сайтов, разработка cms), Twilight CMS in english.
    Наш адрес: Москва, пр. Маршала Жукова д.51
    Тел.: (495) 222-6436, E-mail: , карта сайта, условия использования информации о CMS
    Звоните через Skype:  

    Реклама: