Как в сниппете использовать встроенный поиск админки MODX?
Хочу использовать именно встроенный, так как он довольно быстрый при большом количестве ресурсов. Есть тысячи ресурсов с названием населенного пункта в pagetitle.
- Получаю геолокацию посетителя;
- получаю название населенного пункта из геолокации;
- ищу встроенным поиском в определенном каталоге по pagetitle;
- если есть результат, выводим ссылку на этот ресурс.
Комментарии: 4
Да вряд ли встроенный поиск работает иначе) и быстрее)
$q = $modx->newQuery('modResource');
$q->where(array('parent' => X, 'pagetitle:LIKE' => '%'.$location.'%'));
...
спасибо!
может кому-то пригодится:
может кому-то пригодится:
<?php
// https://sypexgeo.net/ru/docs/
include($_SERVER['DOCUMENT_ROOT'].'/SxGeo/SxGeo.php');
$SxGeo = new SxGeo($_SERVER['DOCUMENT_ROOT'].'/SxGeo/SxGeoCity.dat');
//$ip = $_SERVER['REMOTE_ADDR'];
$ip = '109.252.7.175';
$city = $SxGeo->get($ip);
//var_dump($city);
$location = $city['city']['name_ru'];
$q = $modx->newQuery('modResource');
$q->where(array('parent' => 140, 'pagetitle:LIKE' => '%'.$location.'%'));
$сollection = $modx->getCollection('modResource', $q);
$i = 0;
$results = [];
foreach ($сollection as $record) {
$results[$i] = [$record->get('id'),$record->get('pagetitle')];
$i++;
}
//var_dump($results);
foreach ($results as $item) {
if ($item[1] == $location) {
echo 'Res ID: '.$item[0].', Res pagetitle: '.$item[1];
//что-то делаем с этими данными
};
}
спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.