Как получить ID текущего редактируемого ресурса?

Для реализации поиска по ресурсам с зависимостью контекста внутри TinyMCE мне необходимо достать context_key ресурса, на странице редактирования которого, соответственно и производится поиск по ресурсам.
В заголовке написал про ID потому что и ID и context_key — это поля таблицы modx_site_content, поэтому разницы и нет. Если знаете, как достать ID, значит знаете как достать и context_key :)
P.S. Файл, в котором производится поиск, подключен к коннектору. Однако при попытке использования $modx->resource->get('context_key'); ничего не возвращается.

UPD. Решил вопрос с помощью ExtJS. В js-файле плагина, в адрес поискового запроса добавил GET-параметр id, которому присвоил MODx.request.id, получил id в файле, на который ссылается XHR в js.
Затем вытянул ресурс по id и взял его context_key. Это на случай, если кому пригодится)
Если кому-то, как и мне, нужен поиск ресурсов в TinyMCE с зависимостью от контекста, могу написать статейку или выложить готовое.

UPD. Узнал, что в ModExt есть MODx.ctx, которая выводит текущий контекст. Это решает проблему с создаваемым ресурсом, у которого нет ID, в следствии чего никак не вытащишь контекст.
Echo
04 июля 2016, 14:33
modx.pro
2
3 416
0

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

Павел Карелин
06 июля 2016, 12:38
0
$resource тут хранится кажется объект редактируемого ресурса. Ну или в конечном счете всегда можно дернуть
$_GET['id']
и запросить объект через
$modx->getObject('modResource', $_GET['id'])
.
    Echo
    06 июля 2016, 13:04
    0
    К сожалению не всё так просто. У меня GET-запрос отправляется из js-скрипта(вернее не у меня, а у плагина TinyMCE). php-файл, к которому обращается этот скрипт используется исключительно в качестве обработчика и для возврата результата. Поэтому в этом коде фактически невозможно вытащить из GET id, ибо обращение к нему идет всего с одним параметром — текст для поиска. Ну теперь еще и второй параметр я добавил ctx, который передает ключ контекста вне зависимости от типа ресурса(редактируемый / создаваемый).
    Георгий Пушкин
    12 августа 2016, 18:49
    0
    Если кому-то, как и мне, нужен поиск ресурсов в TinyMCE с зависимостью от контекста, могу написать статейку или выложить готовое.
    Если будет время и желание, напишите, пожалуйста, с небольшим описанием. Для меня интересная тема.
      Echo
      02 сентября 2016, 14:43
      +1
      Да в принципе это дело не стоит отдельной статьи. Всё достаточно просто.
      В файле /assets/components/tinymcerte/js/vendor/tinymce/plugins/modxlink/search.php
      заменить следующие 2 строки:
      $query = $modx->getOption('q',$_REQUEST,'');
      if(strlen($query) < 3) exit();
      на следующие 3 строки:
      $context = $modx->getOption('ctx',$_REQUEST,'');
      $query = $modx->getOption('q',$_REQUEST,'');
      if(strlen($query) < 3) exit();
      А в соседнем файле /assets/components/tinymcerte/js/vendor/tinymce/plugins/modxlink/plugin.min.js
      найти строку
      var xhr = new XMLHttpRequest(), _link = encodeURI(TinyMCERTE.editorConfig.modxlinkSearch+'?q='+v);
      И заменить её на
      var xhr = new XMLHttpRequest(), _link = encodeURI(TinyMCERTE.editorConfig.modxlinkSearch+'?ctx='+MODx.ctx+'&q='+v);
      Готово.
      Проблема только в одном может быть — если до этого поиск уже производился, то это решение будет работать только в инкогнито, либо в другом браузере, где поиск еще не производился.
      Решение — полный сброс куки и кэша браузера.
        Echo
        02 сентября 2016, 15:00
        +1
        Извиняюсь, немного не так.
        Заменить эти строки
        $query = $modx->getOption('q',$_REQUEST,'');
        if(strlen($query) < 3) exit();
        
        $c = $modx->newQuery('modResource');
        $c->where(array(
            'pagetitle:LIKE' => '%'.$query.'%',
            'OR:alias:LIKE' => '%'.$query.'%',
        ));
        на эти
        $context = $modx->getOption('ctx',$_REQUEST,'');
        $query = $modx->getOption('q',$_REQUEST,'');
        if(strlen($query) < 3) exit();
        
        $c = $modx->newQuery('modResource');
        $c->where(array(
        	'context_key' => $context,
            'pagetitle:LIKE' => '%'.$query.'%',
        ));
        
        $c->orCondition(array(
            'id:LIKE' => '%'.$query.'%',
        ));
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6