Отображение последних авторов в Expression Engine

Я пытаюсь собрать код для отображения 3 последних авторов в моем блоге с помощью Expression Engine.

Это фрагмент кода, с которого я начинаю:

<dl class="authors">
    {exp:channel:entries channel="{embed:my_channel}" limit="3" dynamic="no" site="{embed:my_site}"}
        <dt><span class="photo"><img src="{avatar_url}" width="{avatar_image_width}" height="{avatar_image_height}" alt="{author}'s Photo"></span></dt>
        <dd>{author}</dd>
    {/exp:channel:entries} 
</dl>

Теперь я не совсем уверен, как кодировать, чтобы получить последних 3 авторов, опубликовавших записи. Видите ли, последние 3 записи могли быть опубликованы одним и тем же автором, и в этом случае нам пришлось бы просмотреть больше записей, чтобы получить двух других самых последних авторов. Вот где я застрял. Любые идеи?


person steacha    schedule 25.02.2013    source источник


Ответы (1)


Это можно создать просто с помощью модуля запросов. Я включил, как объединить запрос, чтобы дать вам настраиваемые поля для автора, если вы их также настроили:

ПРИМЕЧАНИЕ. Я не проверял конкретные детали этого кода (с вашими кодами встраивания и т. д.), хотя мне удалось протестировать запрос.

Если у вас нет (или вы не хотите) данных настраиваемого поля участника, вы можете удалить эти строки из запроса.

<dl class="authors">
{exp:query sql="
SELECT DISTINCT
    exp_members.username,
    exp_members.member_id,
    exp_members.email,
    exp_members.screen_name as author,
    exp_members.avatar_filename,
    exp_members.avatar_width,
    exp_members.avatar_height,
    exp_member_data.m_field_id_1 as my_custom_member_field
FROM
    exp_channel_titles,
    exp_members,
    exp_member_data
WHERE
    exp_members.member_id = exp_channel_titles.author_id
    AND
    exp_channel_titles.channel_id = '{embed:my_channel}'
    AND
    exp_members.member_id = exp_member_data.member_id
    AND
    exp_channel_titles.site_id = '{embed:my_site}'
ORDER BY
    exp_channel_titles.entry_id DESC" limit='3'}
    <dt><span class="photo"><img src="{avatar_url}" width="{avatar_width}" height="{avatar_height}" alt="{author}'s Photo"></span></dt>
    <dd>{author}</dd>
{/exp:query} 

person user2125185    schedule 01.03.2013
comment
Извините за поздний ответ, user2125185, но вы поставили меня на правильный путь. Тем не менее, я все еще не получаю именно то, что мне нужно. Мне пришлось явно указать идентификатор канала (из 1), чтобы выбрать правильный канал, а не имя канала, как в вашем примере. Проблема, которую я получаю сейчас, заключается в том, что порядок сортировки неверен. Итак, мне интересно, правильно ли он выбирает участников. Чтобы уточнить, я хочу выбрать 3 самых последних участника, которые разместили сообщения на определенном канале (ID 1 для моего канала блога), и перечислить их от участника с самым последним сообщением до участника с самым последним сообщением. - person steacha; 02.04.2013