MODX Evolutionで隣接ドキュメントを出力する

多くのサイトでは、記事のテキストの後に、他のサイト資料へのリンクのブロックを見つけることができます。 たとえば、リンク「次の記事」、「前の記事」。 また、製品ページでは、製品自体に加えて、同じカテゴリの隣接製品へのリンクを確認できます。



製品の各ページに同じカテゴリの他の製品へのリンクを表示するというタスクに直面すると、隣接する製品とリンクします。



Dittoでは、Wayfinderのように、そのような機会は見つかりませんでした。 そのため、簡単なスニペットを作成し、ここで共有することにしました。 誰かが役に立つといいな。 上記のスニペットは非常にシンプルです。MODXのソリューションを書き始めたばかりの人にとっては素晴らしい例です。 コードには多くのコメントがあるため、理解に問題はないはずです。





4つのパラメーターをスニペットに渡すことができます。





チャンクパターン:



<a href="[~[+id+]~]">[+pagetitle+]</a>
      
      









  <?php //     $prevDocs = (isset($prevDocs)) ? $prevDocs : 2; //      ID $nextDocs = (isset($nextDocs)) ? $nextDocs : 2; //      ID $sortRevert = (isset($sortRevert)) ? $sortRevert : 0; //     //       $prevDocs = (int) $prevDocs; $nextDocs = (int) $nextDocs; $sortRevert = (int) $sortRevert; //  ID        $id = $modx->documentIdentifier; //  ID - $parent = $modx->documentObject['parent']; //     if (!isset($tpl)) { echo "No chunk defined for siblings-snippet!"; return; } //     if ($modx->parseChunk($tpl,array()) === NULL) { echo "Chunk specified, but not found!"; return; } //        ID $prev = $modx->db->makeArray($modx->db->select('id,pagetitle','modx_site_content',"id < {$id} and parent = {$parent} and published = 1",'id DESC',$prevDocs)); //        ID $next = $modx->db->makeArray($modx->db->select('id,pagetitle','modx_site_content',"id > {$id} and parent = {$parent} and published = 1",'id ASC',$nextDocs)); //       $siblings = array_merge($next,$prev); //         $indexed = array(); //       ID  foreach ($siblings as $sibling) { $indexed[$sibling['id']] = $sibling; } //  if ($sortRevert === 1) { rsort($indexed); } else { sort($indexed); } //  html foreach($indexed as $sibling){ $html .= $modx->parseChunk($tpl,array( 'id' => $sibling['id'], 'pagetitle' => $sibling['pagetitle'] ), '[+', '+]' ); } echo $html; ?>
      
      






All Articles