Perch CMS过滤

时间:2013-05-16 14:40:35

标签: php perch

我正在使用Perch,这是一个php CMS。我在这里问这个问题,因为它似乎是一个普通的php问题。

基本上,我在搜索页面上使用过滤器:

perch_content_custom('Jobs', array(
    'page'=>'/view-job.php',
    'template'=>'_job_list.html',
    'filter' => array(
        array(
            'filter'=>'job_subject',
            'match'=>'eq',
            'value'=> $_GET['subject']
            ),

        array(
            'filter'=>'job_term',
            'match'=>'eq',
            'value'=> $_GET['term']
        ),
    )
));

我只想过滤GET字符串是否有值, - 所以如果指定了job_subject,则应用过滤器 - 但我知道我不能使用IF语句而且我不确定php中的替代方法?

2 个答案:

答案 0 :(得分:0)

这个怎么样:

$filters = array();

if(!empty($_GET['subject'])) {
    $filters[] = array(
        'filter'=>'job_subject',
        'match'=>'eq',
        'value'=> $_GET['subject']
    );
}

if(!empty($_GET['term'])) {
    $filters[] = array(
        'filter'=>'job_term',
        'match'=>'eq',
        'value'=> $_GET['term']
    );
}

perch_content_custom('Jobs', array(
    'page'=>'/view-job.php',
    'template'=>'_job_list.html',
    'filter' => $filters
));

但是我觉得当有一个包含很多条目的过滤器时,这不是一个好方法......如果CMS不支持更好的过滤条件,我想这不是一个很好的解决方案...

答案 1 :(得分:0)

不要担心:如果值字段为空,Perch将匹配所有值,就好像该过滤器不存在一样。

您可以在此轻松使用“三元运算符”(?:)来代替IF语句。

作为一个例子,这里是你如何避免返回所有内容:

'value'=>(空($ _ GET [“s”])?'undefined':$ _GET [“s”])