1

Тема: Баги в MT

Попробовал сделать иерархическую структуру отображения комментариев. Нашел следуюший баг. Неправильно работает код:

    <mt:Comments>

            <mt:CommentsHeader>
            .........
            </mt:CommentsHeader>

            <mt:CommentReplies>
            .........
            </mt:CommentReplies>

            <mt:CommentsFooter>
            .........
            </mt:CommentsFooter>

    </mt:Comments>

Похоже, что <mt:CommentReplies> сбрасывает флаг признака прохождения первой итерации в <mt:Comments> и <mt:CommentsHeader> срабатывает на каждой итерации.

Решение:

    <mt:Comments>

            <mt:If name="__first__">
            .........
            </mt:If>

            <mt:CommentReplies>
            .........
            </mt:CommentReplies>

            <mt:If name="__last__">
            .........
           </mt:If>

    </mt:Comments>

p.s. Наверное следует сообщить в "органы"? :)

Отредактировано VladimirG (24:05:2009 11:59:13)

2

Re: Баги в MT

Вот такой официальный, 100% рабочий шаблон для ветвистых комментариев:

<MTComments> <!-- Блок комментариев (примечание: теги шапки и подвала комментариев не включены в этом пример) -->
    <mt:IfCommentParent> <!-- Если комментарий имеет родительский комментарий. Игнорируем это, поскольку нам нужны только комментарии самого верхнего уровня -->
        <mt:Else> <!-- Если комментарий не имеет родительского комментария -->
            <$mt:Include module="Comment Detail"$> <!-- Вызов модуля для отображения самого верхнего комментария -->
        <mt:CommentReplies> <!-- Цикл комментариев-ответов -->
            <mt:CommentsHeader> <!-- Вот здесь мы добавляем шапку комментария, чтобы сдвинуть его вправо -->
            <div style="margin-left: 20px;">
            </mt:CommentsHeader>
                <mt:Include module="Comment Detail"> <!-- Вызов модуля для отображения комментария (комментарий-ответ, который может быть родителем других ответов) -->
            <$mt:CommentRepliesRecurse$> <!-- Рекурсивное отображение любых комментариев-ответов -->    
            <mt:CommentsFooter>
            </div>
            </mt:CommentsFooter>
        </mt:CommentReplies>
    </mt:IfCommentParent>
</MTComments>

Сам пример взят из официальной документации, я только перевёл комментарии в нём.

3

Re: Баги в MT

Но вот почему теги CommentsHeader и CommentsFooter не включены в пример — фиг знает, может и потому, что они там не работают.

4

Re: Баги в MT

Хотя нет, у меня работает в одном блоге с шапкой и подвалом для всех комментариев. Там как раз сделано на основе этого примера.

5

Re: Баги в MT

Если CommentsHeader и CommentsFooter внутри CommentReplies, то все нормально, а если между Comments и CommentReplies, то работает криво.

6

Re: Баги в MT

А вот еще. MT 4.25 Pro. Не работает корректно код для динамической публикации:

<mt:Authors need_entry="0">
     <$mt:AuthorUserpicURL$>
</mt:Authors>

1) <$mt:AuthorUserpicURL$> возвращает пустую строку.
2) <mt:Authors> вместо цикла по Авторам (так описано в документации, и так работает для статической публикации), выдает цикл по всем пользователям.

Если решение второй проблемы не представляет особой сложности (указываем фильтр), то не нахожу решение первой проблемы. Можно ли как-то еще достучаться до URL аватарок? Или для динамической публикации вообще не все гладко?

p.s. Для отложенной публикации (Publish Queue) работает еще кривее. Тег <$mt:AuthorUserpic$> выводит бред типа:

<img src="http://www.site.ru/mt-static/?5" width="0" height="0" alt="" />

Отредактировано VladimirG (05:06:2009 03:22:59)

7

Re: Баги в MT

А в каком контексте используется блок mt:Authors?

8

Re: Баги в MT

mt:Authors используется в индексном шаблоне для вывода Custom Fields пользователей. Т.к. Комментаторы могут редактировать профиль и менять Custom Fields, но не могут публиковать записи или страницы, требуется оперативное обновление страницы, реализованной этим шаблоном.
Наверное, лучший выход - публикация этого шаблона по событию (изменение полей Custom Fields). Но не знаю как это сделать (все же как?). Поэтому попробовал динамическую публикацию и Publish Queue. Но не получилось. Цикл по авторам работает, выводятся все соответствующие поля, включая Custom Fields, но проблема оказалась с mt:AuthorUserpicURL. При динамической публикации это поле пустое, а при Publish Queue содержит неправильную ссылку, наподобие той, что я приводил в сообщения ранее. Запуск скрипта при Publish Queue на хостинге происходит через Cron, публикация происходит крайне редко, не могу понять причину, при этом на мэйл порой приходят сообщения об ошибках:

Use of uninitialized value in substitution (s///) at
путь/public_html/cgi-bin/mt/lib/MT/Asset.pm line 77.
Use of uninitialized value in substitution (s///) at
путь/public_html/cgi-bin/mt/lib/MT/Asset.pm line 78.
Use of uninitialized value in concatenation (.) or string at
путь/public_html/cgi-bin/mt/lib/MT/Author.pm line 748.
Use of uninitialized value in concatenation (.) or string at
путь/public_html/cgi-bin/mt/lib/MT/Author.pm line 748.
Use of uninitialized value in concatenation (.) or string at
путь/public_html/cgi-bin/mt/lib/MT/Author.pm line 748.
Use of uninitialized value in concatenation (.) or string at
путь/public_html/cgi-bin/mt/lib/MT/Author.pm line 748.


Если посмотреть строку 748 в Author.pm, там как раз идет формирование адреса на аватарку. Пока не могу понять в чем проблема :(

Отредактировано VladimirG (08:06:2009 02:08:46)

9

Re: Баги в MT

Я попробовал сделать динамический шаблон, в который запихал эту конструкцию — всё получилось. Вот как я сделал:

1. Создаём модульный шаблон с необходимым содержанием (хоть всю страницу можно поместить туда):

<mt:Authors need_entry="0">
     <$mt:AuthorUserpicURL$>
</mt:Authors>

2. Создаём индексный шаблон с расширением .php, который будет публиковаться вручную:

<?php
    include('<$MTCGIServerPath$>/php/mt.php');
    $mt = new MT(<$MTBlogID$>, '<$MTConfigFile$>');
    $mt->display("mt:1"); // 1 здесь — это ID модульного шаблона, который будет отображён.
?>

В результате получаем полностью динамическую страницу, без использования .htaccess.

Подробнее об этом методе публикации: http://www.sixapart.com/blog/2004/09/ph … chite.html

10

Re: Баги в MT

Попробовал так сделать. Не помогло. AuthorUserpicURL - пустая строка. Более того выяснилось что это происходит при любом варианте динамической публикации, не только внутри тегов <mt:Authors>. Например внутри <mt:Entries> - то же самое. Но при статической публикации все работает нормально. Где искать проблему?

Может подскажите, как сделать статическую публикацию по событию, после некоторых действий пользователя - не автора (а именно - после редактирования профиля)?

11

Re: Баги в MT

Еще заметил такую странность. У комментария есть ссылка "Ответить", так при статической публикации с ней все нормально, а при динамической - она на английском "Replay". Я посмотрел php код <$mt:CommentReplyToLink$> - там должен происходить перевод фразы, но этого не происходит.

Это у меня так криво динамическая публикация работает или у всех? Кто-нибудь может у себя проверить? И показываются ли аватарки в ней? :o
(у меня MT 4.25 Pro русская версия)

12

Re: Баги в MT

А можете мне скинуть данные для доступа, чтобы я смогу посмотреть/протестировать шаблон с аватаром?

13

Re: Баги в MT

Андрей, отправил вам в личку.