I have 2 tables: tables Modules contains Module. Module is a table which contains fields. Tables Modules is a table of tables.
The other table is Selected which contains selected fields.
Modules = {Module1}
Module1 = {Name, Age, Date, Add}
Selected = {Age, Name, Date}
The fields in Selected are displayed in my tpl this way:
{foreach key=m_key item=m_label from=$Modules }
{foreach key=f_key item=f_label from=$m_label }
<option value="{$ f_key}" {if !empty($Selected) && in_array($f_key,array_map('decode_html',$Selected))}selected=""{/if}>{vtranslate($f_key, $TEST)}</option>
{/foreach}
{/foreach}
The display is as follows: {Name, Age, Date}
I want the display to be in the same order as in Selected : { Age, Name, Date}
Any idea how to do this?
{foreach key=m_key item=m_label from=$Modules }
{php}
$m_label = !empty($Selected) ? array_merge(array_intersect($Selected, $m_label), array_diff($m_label, $Selected)) : $m_label;
{?php}
{foreach key=f_key item=f_label from=$m_label }
<option value="{$ f_key}" {if !empty($Selected) && in_array($f_key,array_map('decode_html',$Selected))}selected=""{/if}>{vtranslate($f_key, $TEST)}</option>
{/foreach}
{/foreach}
I don't know if I get your intention right. Hope the above code could help.