Вопросы
pdoTools->getChunk не парсит вложенный контент
Добрый день.
modx 2.6.5
pdoTools 2.12.3-pl
php 7.3
Написал свой плагин для поиска.
Всё нормально работает, но вот ресурсы, у которых class_key === modWebLink и в content есть теги fenom (например у меня там просто ссылки на внутренние ресурсы {`id` | url}), он их не обрабатывает и выплёвывает необработанными тегами.
пытался сделать так
Код:
modx 2.6.5
pdoTools 2.12.3-pl
php 7.3
Написал свой плагин для поиска.
Всё нормально работает, но вот ресурсы, у которых class_key === modWebLink и в content есть теги fenom (например у меня там просто ссылки на внутренние ресурсы {`id` | url}), он их не обрабатывает и выплёвывает необработанными тегами.
пытался сделать так
/* И getChunks и parseChunk */
$obj->content = $pdoTools->getChunk('@INLINE {$c}', ['c'=>$obj->content]);Обработка тегов в ресурсах включена, конечно.Код:
<?php
if ($modx->event->name != 'OnPageNotFound') {return false;}
$alias = $modx->context->getOption('request_param_alias', 'q');
$searchQueryAlias = 's';
if (!array_key_exists($alias, $_REQUEST) || $_REQUEST[$alias] !== 'search' || !array_key_exists($searchQueryAlias, $_REQUEST)) {return false;}
$searchQuery = trim($_REQUEST[$searchQueryAlias]);
if (!isset($modx->resource)) {
$modx->resource = $modx->newObject('modResource');
$modx->resource->pagetitle = 'Поиск по сайту';
}
$fqn = $modx->getOption('pdoTools.class', null, 'pdotools.pdotools', true);
if ($pdoClass = $modx->loadClass($fqn, '', false, true)) {
$pdoTools = new $pdoClass($modx, $scriptProperties);
}
elseif ($pdoClass = $modx->loadClass($fqn, MODX_CORE_PATH . 'components/pdotools/model/', false, true)) {
$pdoTools = new $pdoClass($modx, $scriptProperties);
}
else {
$modx->log(modX::LOG_LEVEL_ERROR, 'Could not load pdoTools from "MODX_CORE_PATH/components/pdotools/model/".');
return false;
}
$pdoTools->addTime('pdoTools loaded');
$out = '';
$stmt = $modx->newQuery('modResource');
$stmt->limit(15);
$preparedSQ = str_replace(' ', ' ', trim($searchQuery));
$preparedSQ = preg_replace('#[^\w]#u', ' ', $preparedSQ);
$preparedSQ = str_replace(' ', ' ', trim($preparedSQ));
$preparedSQPieces = explode(' ', $preparedSQ);
$stmt->where(['id:!=' => 1]);
$stmt->andCondition(['pagetitle:LIKE' => "%$preparedSQ%"]);
$stmt->orCondition(['longtitle:LIKE' => "%$preparedSQ%"]);
if (count($preparedSQPieces) > 1) {
foreach($preparedSQPieces as $idx => $piece) {
$stmt->orCondition(['pagetitle:LIKE' => "%$piece%"]);
$stmt->orCondition(['longtitle:LIKE' => "%$piece%"]);
}
}
$out = '';
$count = $modx->getCount('modResource', $stmt);
if (intval($count) > 0) {
$objs = $modx->getIterator('modResource', $stmt);
foreach($objs as $obj) {
$obj->content = $pdoTools->getChunk('@INLINE {$c}', ['c' => $obj->content]);
$out .= $pdoTools->getChunk('@FILE chunks/particles/search-list.item.tpl', $obj->toArray());
}
} else {
$out .= '<div class="col-12">По вашему запросу «'.$searchQuery.'», ничего не найдено, уточните запрос.</div>';
}
$out = $pdoTools->getChunk('@FILE pages/search.tpl', [
'title' => 'Результат по запросу «'.$searchQuery.'»',
'items' => $out
]);
die($out); MIGX - добавление id и Title тикета из выпадающего списка - возможно ли такое?
Добрый день!
Хочу в MIGX получить возможность добавления Id (мне-то нужен только id) и заголовка тикета (заголовок — для справки, что добавляется именно то, что надо).
Каким образом можно реализовать «визуальный» (мышкой) выбор тикета из выпадающего списка в MIGX?

При выборе в поле должен быть выбранный Id (и рядом название заголовка), но отобразиться (для выбора) должен именно ЗАГОЛОВОК.
Есть ли такая возможность в MIGX? Мне достаточно небольшого примера (если такое вообще реализуется)…
Хочу в MIGX получить возможность добавления Id (мне-то нужен только id) и заголовка тикета (заголовок — для справки, что добавляется именно то, что надо).
Каким образом можно реализовать «визуальный» (мышкой) выбор тикета из выпадающего списка в MIGX?

При выборе в поле должен быть выбранный Id (и рядом название заголовка), но отобразиться (для выбора) должен именно ЗАГОЛОВОК.
Есть ли такая возможность в MIGX? Мне достаточно небольшого примера (если такое вообще реализуется)…
Грузит не корректный контекст ( добавление сайта )
Всем доброго времени суток!
Нужно было создать еще один ресурс (сайт) в cms.
1. Создал новый контекст
2. В настройках контекста указал параметры
http_host
base_url
ID каталога,
и тд для нового ресурса
По большому счету сделал настройки аналогичные другим ресурсам этой же CMS.
Однако, при обращении, CMS упорно открывает ресурс с другим контекстом. Причем на уровне веб сервера все норм. Смотрел переменные, http_host верный. Я бы понял если повалило ошибки из нового контекста, но цмс как будто не видит что он есть.
Куда еще можно копать?
Всех с прошедшими праздниками и наступившим НГ!
Нужно было создать еще один ресурс (сайт) в cms.
1. Создал новый контекст
2. В настройках контекста указал параметры
http_host
base_url
ID каталога,
и тд для нового ресурса
По большому счету сделал настройки аналогичные другим ресурсам этой же CMS.
Однако, при обращении, CMS упорно открывает ресурс с другим контекстом. Причем на уровне веб сервера все норм. Смотрел переменные, http_host верный. Я бы понял если повалило ошибки из нового контекста, но цмс как будто не видит что он есть.
Куда еще можно копать?
Всех с прошедшими праздниками и наступившим НГ!
AjaxForm + Register
Нигде не нашел решения как сделать регистрацию из стандартного пакета Login через AjaxForm, ниже мое решение может кому пригодиться.
1 Размещаем сниппет AjaxForm где требуется (на странице, в попап окне и т.п.)
Рейтинга для размещения в разделе Решения не хватило, поэтому публикую здесь.
1 Размещаем сниппет AjaxForm где требуется (на странице, в попап окне и т.п.)
[[!AjaxForm?
&snippet=`custRegister`
&form=`tpl.register.form`
&submitVar=`signup-btn`
&activationResourceId=`9`
&activationEmailTpl=`lgnActivateEmailTpl`
&activationEmailSubject=`Thanks for Registering!`
&usergroups=`Users`
&usernameField=`email`
&generatePassword=`1`
&validate=`nospam:blank,
fullname:required:minLength=^3^,
email:required:email`
&placeholderPrefix=`reg.`
]]2 Создаем чанк tpl.register.form с формой<form id="signup-form" action="[[~[[*id]]]]" method="post">
<input type="hidden" name="nospam">
<input type="hidden" name="password" value="11111111">
<input type="text" name="fullname">
<small class="alert-fullname"></small>
<input type="email" name="email">
<small class="alert-email"></small>
<input type="submit" name="signup-btn" form="signup-form" value="Signup">
</form>3 Создаем сниппет custRegister<?php
$result = $modx->runSnippet('Register', $scriptProperties);
foreach($modx->placeholders as $key => $ph){
if(strpos($key, $scriptProperties[placeholderPrefix].'error.') === 0) $placeholders[$key] = $ph;
}
if($modx->getPlaceholder($scriptProperties[placeholderPrefix].'validation_error')) return $AjaxForm->error('Form has errors', array('error' => $placeholders));
else return $AjaxForm->success('Form is valid');4 На странице с формой добавляем скрипт, который заполнит алерты или сообщит об успехе или еще все что угодно<script>
$(document).on('af_complete', function(event, response){
$.each(response.data.error, function(index, value){$(response.form).find('.alert-' + index.split(".").pop()).html(value);});
response.message='';//jGrowl - off
});
</script>Вот и всё!Рейтинга для размещения в разделе Решения не хватило, поэтому публикую здесь.
Изменение гео-координат на карте при изменении адреса организации в админке
Имеем сайт-каталог организаций. В каком-то разделе находится страница организации, у которой есть адрес. На странице организации есть закладка «на карте», на которой с помощью API Геокодера Яндекса вычисляется координата расположения организации по адресу и выводится с центром в этой точке.
Сайт написали так, что эта координата вычисляется только один раз при первом обращении на страницу организации на сайте, после создания новой организации в админке.
Если в админке изменить адрес уже созданной организации, то на карте ничего не изменится, будет использовано первое вычисленное значение координат. Это значение записывается в поле 'made_in' организации в базе данных. Очистки кэша не помогают.
Мне нужно, чтобы это значение координаты менялось с изменением адреса в админке. Т.е., видимо, оно должно вычисляться в бэкэнде, а его значение уже подставляться при обращении на страницу и отрисовке карты.
Подскажите, как лучше реализовать эту возможность? Через PHP-админ очищать периодически поле не хочется, хотя и помогает.
Сайт написали так, что эта координата вычисляется только один раз при первом обращении на страницу организации на сайте, после создания новой организации в админке.
Если в админке изменить адрес уже созданной организации, то на карте ничего не изменится, будет использовано первое вычисленное значение координат. Это значение записывается в поле 'made_in' организации в базе данных. Очистки кэша не помогают.
Мне нужно, чтобы это значение координаты менялось с изменением адреса в админке. Т.е., видимо, оно должно вычисляться в бэкэнде, а его значение уже подставляться при обращении на страницу и отрисовке карты.
Подскажите, как лучше реализовать эту возможность? Через PHP-админ очищать периодически поле не хочется, хотя и помогает.
Тайланд, вопрос не про разработку.
Интересно, есть ли кто то из разработчиков в Тайланде?
Open Source проекты на MODX
Доброго времени суток! Посоветуйте проекты с открытым исходным кодом на MODX, хочется попробовать вложить свои навыки в разработку и поучиться у других. Либо дать наводку, где искать такие.
[Решено] msProducts вызов массива msVendor в prepareSnippet
Друзья активно начался параметром prepare сниппета msProduct.
Подскажите пожалуйста как вызвать в prepare массив данных msVendor к примеру название бренда или ресурс.
Заранее спасибо.
Подскажите пожалуйста как вызвать в prepare массив данных msVendor к примеру название бренда или ресурс.
Заранее спасибо.
Установка MODx в подкаталог или основной каталог поверх существующего сайта
Здравствуйте!
Хочу поставить MODx поверх существующего сайта, причём так, чтобы это не затронуло УЖЕ размещённый контент (html-страницы, zip-архивы и прочее).
Существующий сайт НЕ ИСПОЛЬЗУЕТ PHP и базы данных.
Есть ли какие-то подводные камни в такой установке?
Куда лучше поставить MODx — в основной каталог или подпапку? Что может пойти не так в каждом из случаев?
В интернете крайне мало информации по данному вопросу (есть одна статья на modx.pro).
Если кто занимался такой установкой — просветите пожалуйста?
Заранее, СПАСИБО!
Хочу поставить MODx поверх существующего сайта, причём так, чтобы это не затронуло УЖЕ размещённый контент (html-страницы, zip-архивы и прочее).
Существующий сайт НЕ ИСПОЛЬЗУЕТ PHP и базы данных.
Есть ли какие-то подводные камни в такой установке?
Куда лучше поставить MODx — в основной каталог или подпапку? Что может пойти не так в каждом из случаев?
В интернете крайне мало информации по данному вопросу (есть одна статья на modx.pro).
Если кто занимался такой установкой — просветите пожалуйста?
Заранее, СПАСИБО!
pdoResources where по дате в Fenom
Здравствуйте.
Фильтрую события по дате, по умолчанию — сегодня.
Фильтрую события по дате, по умолчанию — сегодня.
[[pdoResources:default=``?
&parents=`[[+id]]`
&includeTVs=`start`
&sortby=`start`
&tpl=`tplEvent`
&where=`["start Like '[[!getUrlParam? &name=`date` &default=`[[*nowdate:default=`now`:date=`%Y-%m-%d%`]]`]]'"]`
&tplWrapper=`tplEvents`]]Как сделать запрос where в Fenom? {$_modx->runSnippet('pdoResources', [
'parents' => $id,
'includeTVs' => 'start',
'tpl' => 'tplEvent',
'where' => '{"start:LIKE":"2020-01-12%"}',
'tplWrapper' => 'tplEvents',
'showLog' => '1',
])}Если написать дату — события выводятся.