数据排序问题Perl和HTML

数据排序问题Perl和HTML,html,perl,template-toolkit,Html,Perl,Template Toolkit,我目前正在尝试更改我的网页上显示的顺序。我目前的代码如下 <div class="itemtitle"> [% IF session.Type.match('B|N|H|BI') %] [% session.TitleVal %]<br> [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocati

我目前正在尝试更改我的网页上显示的顺序。我目前的代码如下

<div class="itemtitle">
    [% IF session.Type.match('B|N|H|BI') %]
        [% session.TitleVal %]<br>
        [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocationString %]</span></div>[% END %]
    [% ELSE %]
        <a href="[% session.webprogram.getFilename %]">[% session.TitleVal %]</a><br>
        [% IF slot.getLocationString %]<div class="location">Location: <span>[% slot.getLocationString %]</span></div>[% END %]
        [% IF session.getParentsCollection('Program', ['ReadOnly','Y']) %]
            <div class="sessionsponsor">Hosts: <span>(Joint
            [% FOREACH parent IN session.getParentsCollection('Program') %]
                [% IF loop.last && loop.first %]with [% END %][% IF !loop.last && loop.first %]between [% END %][% IF loop.last && !loop.first %]and [% END %]the [% IF loop.first %]<strong>[% END %][% parent.Title %][% IF loop.first %]</strong>[% END %][% IF !loop.last %]; [% END %]
            [% END %])</span></div>
        [% ELSE %]
            [% IF session.program.Title %]<div class="sessionsponsor">Host: <span><strong>[% session.program.Title %]</strong></span>[% END %]</div>
        [% END %]       
    [% END %]

[%IF session.Type.match('B | N | H | BI')%]
[%session.TitleVal%]
[%IF slot.getLocationString%]位置:[%slot.getLocationString%][%END%] [%ELSE%]
[%IF slot.getLocationString%]位置:[%slot.getLocationString%][%END%] [%IF session.getParentsCollection('Program',['ReadOnly','Y'])% 主持人:(联合) [%FOREACH父进程在会话中。getParentsCollection('Program')%] [%IF loop.last&&loop.first%]和[%IF loop.first%]之间的[%END%][%IF!loop.last&&loop.first%]和[%END%]之间的[%IF loop.first%][%END%][%IF loop.first%][%IF!loop.first%][%END%][%IF!loop.last%];[%END%] [%END%]) [%ELSE%] [%IF session.program.Title%]主机:[%session.program.Title%][%END%] [%END%] [%END%]

第一个IF语句代码块我总是希望显示在网页上div的顶部,而不管场景如何。基本上只要session.type=B N H或BI。然而,目前的情况是,第二部分显示在div“first else”的顶部。我一直在努力寻找一种方法来让它正确地执行,并且已经兜了一段时间的圈子。我开始怀疑我可能需要更深入地挖掘问题的根源。但我想先看看有没有人知道怎么做。如果有人有什么建议,我将不胜感激。当前输出的外观是,如果会话等于这些参数,则它位于div的底部。第一个else块位于div的顶部。我想以某种方式将其反转

<div class="itemnumber">    
    <a href="Session36494.html">2WxClimate Poster Session</a>
</div>
<div class="itemtitle">
        Formal Poster Viewing with Coffee Break<br>
        <div class="location">Location: <span>Hall C3 (The Georgia World Congress Center )</span></div>

在咖啡休息时间观看正式海报
地点:C3大厅(佐治亚州世界会议中心)
其中表示2wxClimate,它是session.type不等于B N H或BI时执行的else块。当session.type等于这些值时,将显示第二个块。目前,在显示咖啡休息时间的地方,我希望以相反的顺序显示

</div>

您的问题并非来自您向我们展示的代码

当您向我们显示的TT代码被处理后,您将从外部
[%IF%]
或外部
[%ELSE%]
块获得输出。你不会两全其美

在我看来,您向我们展示的示例输出似乎有一个由
[%ELSE%]
分支生成的块,后面跟着一个由
[%IF%]
分支生成的块。发生这种情况的唯一方法是,如果示例中的所有代码都被处理两次。所以我猜这段代码周围有某种循环。第一次循环时运行
[%ELSE%]
块,第二次循环时运行
[%IF%]


因此,修复您的问题与您向我们展示的代码无关。这是驱动循环的代码(或数据)的问题。如果您的
会话
变量是从数组填充的,那么您需要在开始循环之前对数组进行排序,以便要显示的元素在数组中先出现。

什么是“先显示”?这是在循环中吗?对不起,我是说在div的顶部。我刚刚做了一些编辑,您可以看到这是为了快速xD。如果正在执行“ELSE”,则您的
会话。键入
与条件不匹配。您需要调查底层变量,以找出执行.My if块的原因。它只是让它显示在div的底部,在第一个else语句的下面。你能包含这个模板而不是屏幕截图产生的HTML吗?好的,我怀疑这就是问题所在。谢谢你为我澄清。如果你觉得答案有用,请随意投票或接受:-)