製品の各ページに同じカテゴリの他の製品へのリンクを表示するというタスクに直面すると、隣接する製品とリンクします。
Dittoでは、Wayfinderのように、そのような機会は見つかりませんでした。 そのため、簡単なスニペットを作成し、ここで共有することにしました。 誰かが役に立つといいな。 上記のスニペットは非常にシンプルです。MODXのソリューションを書き始めたばかりの人にとっては素晴らしい例です。 コードには多くのコメントがあるため、理解に問題はないはずです。
4つのパラメーターをスニペットに渡すことができます。
- &tpl-リンクをリストするためのチャンクテンプレート(必須)
- &prevDocs-より小さいIDを持つドキュメントの数(オプションのパラメーター)
- &nextDocs-大きなIDを持つドキュメントの数(オプションのパラメーター)
- &sortRevert-ドキュメントのソート順(オプションのパラメーター)
チャンクパターン:
<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; ?>