2015-10-19 44 views
0

我想輸出某些元描述取決於資源ID和父母ID使用ModX Revo。ModX - 輸出取決於id和父母id

問題是,Modx過濾器只能運行只有一個特殊標記(或ID,或父母的ID或別的東西),例如。

[[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=`<meta name="description" content="[[*description]]" />`]] 

在這種情況下標記是ID。在我的情況,我需要添加到這個情況多了一個聲明,就必須全力以赴:如果[* ID]是331,然後...

  • 否則,如果[*父]是

    • 321的話..
    • 否則...

    我怎樣才能做到這一點,而無需創建模板或塊? 我嘗試了一些變種:

    這只是沒有在第331資源輸出工作

    [[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=`[[*parent:is=`321`:then=`<meta name="description" content="[[*description]] - News Page" />`:else=`<meta name="description" content="[[*description]]" />`]]]] 
    

    OR

    這兩種描述

    [[*id:is=`331`:then=`<meta name="description" content="[[*description]] — Page [[+page]]" />`:else=``]] 
    [[*parent:is=`321`:then=`<meta name="description" content="[[*description]] - News Page" />`:else=`<meta name="description" content="[[*description]]" />`]] 
    
  • 回答

    0

    你要風與重複的描述,而不是偉大的SEO &可能更好的方式來到你想要的地方。但那不是問題。

    最好的辦法是寫一個快速的片段,要輸出的meta標籤:

    [[!getMeta? &resourceid='[[*id]]' ]] 
    

    在getMeta片段:

    <?php 
    
    $id = isset($scriptProperties('resourceid')) ? $scriptProperties('resourceid') : FALSE 
    
    if(!$id){ return; } 
    
    $output = ''; 
    
    if($modx->getParent($id,1,'id') == 321){ 
    
        $output = '...your meta tag for the funny parent'; 
    
    }else{ 
    
        if($id == 331){ 
          $output = '...your meta tag...'; 
        }else{ 
          $output = '...your alternate meta tag...'; 
        } 
    
    } 
    
    echo $output; 
    
    return; 
    

    類似的規定。 - 您應該創建塊來輸出任何HTML,或者您可以將塊存儲在屬性集中。

    +0

    謝謝!我可以只寫'$ output ='';?另外,當我將此片段添加到我的模板中時,網站變得不起作用。什麼可能是錯誤的? –

    0

    我會建議看看pdoField或其他pdoTools片段之一。已經建立了參數來完成您似乎需要的過濾和條件。 pdoField DOCS

    確保查看一般pdoTools屬性以及特定於pdoField的屬性。