Как в сниппете использовать встроенный поиск админки MODX?

Хочу использовать именно встроенный, так как он довольно быстрый при большом количестве ресурсов. Есть тысячи ресурсов с названием населенного пункта в pagetitle.
  1. Получаю геолокацию посетителя;
  2. получаю название населенного пункта из геолокации;
  3. ищу встроенным поиском в определенном каталоге по pagetitle;
  4. если есть результат, выводим ссылку на этот ресурс.
Буду благодарен за ответы.
Viktor
30 октября 2019, 21:08
modx.pro
674
0

Комментарии: 4

Наумов Алексей
31 октября 2019, 09:06
+1
Да вряд ли встроенный поиск работает иначе) и быстрее)
$q = $modx->newQuery('modResource');
$q->where(array('parent' => X, 'pagetitle:LIKE' => '%'.$location.'%'));
...
    Viktor
    31 октября 2019, 18:02
    +1
    спасибо!

    может кому-то пригодится:
    <?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];
            //что-то делаем с этими данными
        };
    }
      Viktor
      31 октября 2019, 18:02
      0
      спасибо
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4