1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.

Разделение сообщений разным фоном?

Тема в разделе "Для новичков", создана пользователем slu2005, 17.07.2013.

Загрузка
  1. slu2005

    slu2005 Активный пользователь

    Регистрация:
    14.07.13
    Сообщения:
    28
    Симпатии:
    1
    Версия XF:
    1.2.3
    Господа, долго пытался найти ответ на свой вопрос на данном форуме, но не нашел...

    Как сделать так что бы в темах при оставление ответа, чередовался фон? Например первое сообщение на белом фоне, след. ответ на сером, потом ответ на белом и т.д. Это нужно для того что бы четко визуально разграничить сообщения пользователей и повысить читабельность. Например такое разделение фона в сообщения реализовано на forumhouse.ru
    Заранее спасибо.
     
  2. Kolya groza morey

    Kolya groza morey Местный

    Регистрация:
    14.06.13
    Сообщения:
    366
    Симпатии:
    118
    Версия XF:
    1.5.9
  3. slu2005

    slu2005 Активный пользователь

    Регистрация:
    14.07.13
    Сообщения:
    28
    Симпатии:
    1
    Версия XF:
    1.2.3
    Спасибо. Можно подробней, на пальцах так сказать, зайти туда, сделать так то.... Я думаю многим интересно будет такая реализация...
     
  4. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    Не знаю, причем тут :nth-child, ведь речь, если я верно понял, об отображении сообщений внутри темы. А сообщения не являются детьми других сообщений.

    В общем, все очень просто.
    Нужно как то помечать четные и нечетные сообщения. Для этого в шаблоне thread_view нужно найти кусок кода и заменить. Лучше через TMS а еще лучше через TMC

    это найти:
    Код:
        <ol class="messageList" id="messageList">
            <xen:foreach loop="$posts" value="$post">
                <xen:if is="{$post.message_state} == 'deleted'">
                    <xen:include template="post_deleted_placeholder" />
                <xen:else />
                    <xen:include template="post" />
                </xen:if>
            </xen:foreach>
            <xen:edithint template="attached_files" />
        </ol>
    это вставить:
    Код:
        <ol class="messageList" id="messageList">
            <xen:foreach loop="$posts" value="$post" i="$i">
                <xen:if is="{$post.message_state} == 'deleted'">
                    <xen:include template="post_deleted_placeholder" />
                <xen:else />
    <xen:if is="{$i}%2!=0">
    <div class="some_new_class_to_message">
                    <xen:include template="post" />
    </div>
                <xen:else />
                    <xen:include template="post" />
     
    </xen:if>
                </xen:if>
            </xen:foreach>
            <xen:edithint template="attached_files" />
        </ol>
    Кстати, искомый кусок шаблона, по моим наблюдениям, чаще всего подвергается изменениям. Так что надо перед заменой посмотреть его окончательный вариант на вашем форуме ну и внести поправки, а то часть аддонов может сломаться. Которые через правки TMS сделаны и завязаны на весь кусок. Какой-то мой - точно сломается.

    После этой нехитрой манипуляции часть сообщений, а именно с нечетными номерами, находятся внутри слоя с классом "some_new_class_to_message". Кстати, его можно переименовать.
    Теперь нам нужно задать отображение этого класса.
    Для этого в шаблоне EXTRA.CSS добавляем такие строчки:
    Код:
    div.some_new_class_to_message div.primaryContent
    {
    background-color: @primaryDark;
    }
    Ну, как вы уже наверное догадались, можно использовать свой селектор и свое оформление, css вы и без меня знаете, наверное.
    На этом все, как говорил мой преподаватель по матану - спасибо за внимание.
     
    Mirovinger и slu2005 нравится это.
  5. slu2005

    slu2005 Активный пользователь

    Регистрация:
    14.07.13
    Сообщения:
    28
    Симпатии:
    1
    Версия XF:
    1.2.3
    Спасибо, надо попробовать... Может плагин какой специальный существует? Что бы код не резать и не вызвать конфликтов с другими плагинами.
     
  6. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Гораздо проще в extra.css воткнуть вот это
    Код:
    .messageList li.message:nth-of-type(even) {
    background-color: #fff;
    }
    Цвет, соответственно, подставить свой.

    Только вот IE версии ниже 9-й это не поймут...
     
    slu2005, akinak и Mirovinger нравится это.
  7. slu2005

    slu2005 Активный пользователь

    Регистрация:
    14.07.13
    Сообщения:
    28
    Симпатии:
    1
    Версия XF:
    1.2.3
    Спасибо! Как бы работает, но меняется фон не под текстом сообщения, а в окантовке сообщения и под аватаркой. Под текстом сообщения фон так и остается белым
     

Поделиться этой страницей