表达引擎orderby问题

时间:2011-10-28 14:57:17

标签: sql-order-by expressionengine

嗨,我正在尝试通过一个名为surname的字段来输入条目,但它似乎没有起作用。将orderby和sort排序更改会得到相同的结果 - 最新的条目列在最后一个列表中。

任何想法我可能做错了什么?

{exp:query sql="SELECT member_id FROM exp_members WHERE group_id = '5'"}
{exp:member:custom_profile_data  member_id="{member_id}" orderby="surname" sort="asc"}
<li><a href="{path=portfolios/gallery/{username}}"><img src="{photo_url}" width="138" height="103" alt="{screen_name}" /></a>
<h3 class="name"><a href="{path=portfolios/gallery2/{username}}">{firstname} {surname}</a></h3></li>
{/exp:member:custom_profile_data} 
{/exp:query} 

2 个答案:

答案 0 :(得分:1)

为了节省一些能量,您可能需要考虑在您的网站上使用Exp-resso中的Freemember。 https://github.com/expressodev/freemember

此模块具有超级简单的语法来执行您想要的操作,并可能添加一些其他功能以使您的ExpressionEngine开发更容易。

答案 1 :(得分:0)

我首先指出,如果你有很多成员,这个嵌套查询可能会让你的服务器陷入困境。使用Query模块一次性获取所有成员数据,然后在没有嵌套custom_profile_data标记的情况下进行交互将更加高效。您必须考虑使用custom_profile_data预先操作的变量(如图像网址),但在性能提升方面值得付出努力。

无论:

custom_profile_data代码仅查询单个成员,因此 orderby sort 不会有任何区别。您的排序需要在exp:query代码中进行。

{exp:query sql="SELECT m.member_id FROM exp_members m, exp_member_data d WHERE m.group_id = '5' AND d.member_id = m.member_id ORDER BY d.m_field_id_X ASC"}
{exp:member:custom_profile_data  member_id="{member_id}"}
    <li><a href="{path=portfolios/gallery/{username}}"><img src="{photo_url}" width="138" height="103" alt="{screen_name}" /></a>
    <h3 class="name"><a href="{path=portfolios/gallery2/{username}}">{firstname} {surname}</a></h3>
    </li>
{/exp:member:custom_profile_data} 
{/exp:query}

m_field_id_X替换为m_field_id自定义成员字段的实际surname(可以通过查看工具→数据→SQL管理器中的exp_member_fields找到该字段)。