<?php $id = isset($_GET['id']) ? intval($_GET['id']) : 0; if ($id == 0) { return '<p>ID is empty :(</p>'; } else { $do = $modx->getDocumentObject('id', $id); return '<h1>' . $do['pagetitle'] . '</h1><p>' . $do['content'] . '</p>'; } ?>
То, что ID - это уникальный номер - это понятно
поясняю:
как организовать поиск документа по его id (уникальному номеру, который автоматически присваивается при его создании).
админки это возможно из раздела "поиск".
как искать с фронта?
но тогда возникает вероятность дублирования id.Два ID не могут иметь один номер.
Quote from: Lawer at Sep 24, 2009, 07:40 PMно тогда возникает вероятность дублирования id.Два ID не могут иметь один номер.
<form action="[~[*id*]~]" method="get"> Введите ID фотомодели: <input type="text" name="pid" value="" /> <input type="submit" value="Найти"> </form> [!search_model!]
<?php // Template ID of model $tid = 5; if (isset($_GET['pid'])) { $pid = intval($_GET['pid']); if ($pid <= 0) { return '<p>Incorrect ID.</p>'; } else { $table_site_content = $modx->getFullTableName('site_content'); $model_exists = $modx->db->getValue(" SELECT COUNT(*) FROM $table_site_content WHERE `id` = $pid AND `template` = $tid AND `published` = 1 AND `deleted` = 0 "); if ($model_exists) { return '<p>You model is <a href="' . $modx->makeUrl($pid) . '">here</a>.</p>'; } else { return '<p>Model not found. Sorry looser ;)</p>'; } } } ?>
Все ID в MODx хранятся в памяти, так что лучше вообще не обращаться к базе, а использовать $modx->aliasListing или $modx->documentListing.
Есть сниппет search_model с таким кодом: