在 modx 中排序
Sorting in modx
你好
整理存档中的期刊问题时遇到问题。 CMS 模式。代码不是我的。现在它看起来像:
<li class="journals">
<ul class="ye">
<li class="year">2015</li>
<ul class="in_nums 2015" style="display: inherit;">
<li data-issue="4804">№1(48)</li>
<li data-issue="5314">№3(51)</li>
<li data-issue="4980">№2(50)</li>
<li data-issue="5148">№2(49)</li>
<li data-issue="5437">№3(52)</li>
</ul>
</ul>
</li>
如您所见,问题不在任何类型的排序中。年份排序正常。
片段:
<?php
$ctx = $modx->getContext($modx->context->key);
$issue_con = $ctx->config['issue_con'];
$query = $modx->newQuery('modResource');
$query->select(array('pagetitle','id'));
$query->where(array('parent'=>$issue_con));
$query->prepare();
$query->stmt->execute();
$res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
$years = array();
foreach ($res as $r)
{
$mas = explode(', ',$r['pagetitle']);
$years[intval($mas[1])][$mas[0]] = $r['id'];
}
krsort($years);
$output = '<ul class="ye">';
foreach ($years as $y=>$nums)
{
$output .= '<li class="year">'.$y.'</li><ul class="in_nums '.$y.'">';
foreach ($nums as $num=>$pid)
{
$output .= '<li data-issue="'.$pid.'">'.$num.'</li>';
}
$output .= '</ul>';
}
$output .= '</ul>';
echo $output;
需要使用括号中的数字 (№3(51)) 或 pids (4980).
提前致谢!
您可以在查询中进行排序,请参阅文档:
https://rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.sortby
按资源 ID 排序:
$query->sortby('id','ASC');
并取消按年排序
你好
整理存档中的期刊问题时遇到问题。 CMS 模式。代码不是我的。现在它看起来像:
<li class="journals">
<ul class="ye">
<li class="year">2015</li>
<ul class="in_nums 2015" style="display: inherit;">
<li data-issue="4804">№1(48)</li>
<li data-issue="5314">№3(51)</li>
<li data-issue="4980">№2(50)</li>
<li data-issue="5148">№2(49)</li>
<li data-issue="5437">№3(52)</li>
</ul>
</ul>
</li>
如您所见,问题不在任何类型的排序中。年份排序正常。
片段:
<?php
$ctx = $modx->getContext($modx->context->key);
$issue_con = $ctx->config['issue_con'];
$query = $modx->newQuery('modResource');
$query->select(array('pagetitle','id'));
$query->where(array('parent'=>$issue_con));
$query->prepare();
$query->stmt->execute();
$res = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
$years = array();
foreach ($res as $r)
{
$mas = explode(', ',$r['pagetitle']);
$years[intval($mas[1])][$mas[0]] = $r['id'];
}
krsort($years);
$output = '<ul class="ye">';
foreach ($years as $y=>$nums)
{
$output .= '<li class="year">'.$y.'</li><ul class="in_nums '.$y.'">';
foreach ($nums as $num=>$pid)
{
$output .= '<li data-issue="'.$pid.'">'.$num.'</li>';
}
$output .= '</ul>';
}
$output .= '</ul>';
echo $output;
需要使用括号中的数字 (№3(51)) 或 pids (4980).
提前致谢!
您可以在查询中进行排序,请参阅文档: https://rtfm.modx.com/xpdo/2.x/class-reference/xpdoquery/xpdoquery.sortby
按资源 ID 排序:
$query->sortby('id','ASC');
并取消按年排序