Expression Engine SQL查询帮助 - 作者的最新帖子

时间:2011-08-15 16:27:56

标签: sql expressionengine

  

可能重复:
  expression engine sql query entries list by authors

我正在尝试创建一个来自频道的最新帖子的简短边栏列表,每个帖子都由一位单独的作者创建。 有人可以帮助合并这些查询我觉得我(有点)单独工作吗?

格式:

screen name
thumbnail
title

此查询代码创建一个列表,但使用author_id而不是屏幕名称 标题工作正常,但缩略图没有加载,路径写不正确。

{exp:query sql="SELECT t.title, t.author_id FROM exp_channel_titles t 
ORDER BY author_id ASC LIMIT 4"}
{author_id}<br />
<a href="{path=portfolios/gallery/{username}}"><img src="{thumbnail}"></a><br>
<a href="{path=portfolios/gallery/{username}}">{title}</a><br />
{/exp:query} 

此查询代码正确创建路径并正确创建用户名,但标题仅显示为{title} 缩略图无法加载。

{exp:query sql="SELECT m.member_id, m.username, m.screen_name, m.avatar_filename FROM exp_members m 
WHERE m.group_id='5' "}
{screen_name}
<a href="{path=portfolios/gallery/{username}}"><img src="{thumbnail}"></a><br>
<a href="{path=portfolios/gallery/{username}}">{title}</a><br />
 {/exp:query} 

我认为我需要使用JOIN,但我真的不是SQL查询专家。

thumbnail是exp_channel_fields中的一个字段 - 任何想法如何将其纳入查询? 图像的文件名在exp_channel_data中,但就像这样 -

{filedir_1}13.jpg 

如何摆脱

{filedir_1} 

位或创建路径?

或者我应该使用{exp:channel:在那里吗?

1 个答案:

答案 0 :(得分:0)

此处的最佳方法,因为您需要解析自定义字段,首先要查找来自不同作者的最新4个条目的entry_ids,然后使用{{channel:entries标记通过嵌入将其传递到entry_id标记1}}参数。

这应该有效(确保用适当的整数替换channel_id):

{embed="embeds/_latest_per_member" entry_ids="{exp:query sql="SELECT entry_id, author_id FROM exp_channel_titles WHERE entry_date IN( SELECT MAX(entry_date) FROM exp_channel_titles  WHERE status != 'closed' AND channel_id = 1 GROUP BY author_id ) ORDER BY entry_date DESC LIMIT 4" backspace="1"}{entry_id}|{/exp:query}"}

然后您的 embeds / _latest_per_member 模板看起来像这样:

{exp:channel:entries channel="channel_name" entry_id="{embed:entry_ids}"}
    {author_id}<br />
    <a href="{path=portfolios/gallery/{username}}"><img src="{thumbnail}"></a><br>
    <a href="{path=portfolios/gallery/{username}}">{title}</a><br />
{/exp:channel:entries}