Всего 125 966 комментариев

R2m0x94 (Vasily)
17 февраля 2022, 12:14
0
Проверил, у меня ресурс программно создаётся и даже в searchable 1 — В индекс не добавляется. Сейчас из консольки попробовал запустить процессор, всё хорошо. Ваше решение помогло, спасибо огромное, а на дебаге вот:
Notice: Trying to access array offset on value of type int in /core/components/msearch2/phpmorphy/src/fsa/access/fsa_sparse_file.php on line 32
R2m0x94 (Vasily)
17 февраля 2022, 12:11
0
Спасибо, это самое, то что надо.
Андрей
17 февраля 2022, 11:49
0
А поддомен назван верно?

Также мы поддерживаем работу дополнений на поддоменах dev и new. Сбрасывать ключ для такого домена не нужно — дополнения просто работают сразу на нескольких сайтах: site.ru, dev.site.ru и new.site.ru.

Более того, вы можете добавить 1 цифру к такому поддомену, что даёт вам до 20 тестовых сайтов: dev0.site.ru, new9.site.ru и т.д.
Александр Туниеков
17 февраля 2022, 11:19
0
Или у Вас данные с форм в базе не храняться?
Александр Туниеков
17 февраля 2022, 11:15
0
Тут 2 варианта либо на сайте генерируете файл с нужными данными в любом формате: xml, json,csv. Ссылку на файл даете 1сникам. И 1с переодически грузит этот файл.
Либо 1сники юзают HTTP-сервис 1С https://www.uroki-1c.ru/2018/11/http-1.html и делают вам API какое нужно.
телефон клиента и его РоиСтат ИД
Как выгружать файл зависит от вашей базы. Не знаю как у Вас храняться данные. А РоиСтат ИД в первый раз слышу :-).
Роман
17 февраля 2022, 10:19
0
Видел, что ты решил уже проблему, но в с логах нет твоего условия. Значит сниппет работает не корректно.
Алексей Шумаев
17 февраля 2022, 09:38
0
Не внимательно прочитал вопрос :-)
На самом деле mSearch2 автоматом добавляет в индекс данные создаваемого ресурса.
Если в данном случае этого не происходит и не получается через процессор, значит — да, что-то в системе не работает. Надо дебажить.
Алексей Шумаев
17 февраля 2022, 09:24
+1
Насколько я понял это необходимо:
$modx->runProcessor(
     'mgr/index/update', 
     ['id' => $resource->id], 
     ['processors_path' => MODX_CORE_PATH.'components/msearch2/processors/']
);
Артур Шевченко
17 февраля 2022, 09:01
0
Если API нет, то нельзя ничего реализовать.
Vladimir
17 февраля 2022, 08:27
0
Да беда в том что это был сниппет, почему хз.
История начинается так
{var $tagsArray = $_modx->resource.tags | split}
{set $idx = 0}
[{foreach $tagsArray as $tag}{if $idx == 0}'tags:LIKE' => '%{$tag}%'{else},'OR:tags:LIKE' => '%{$tag}%'{/if}{set $idx = $idx + 1}{/foreach}]
После того как поставил этот форыч в where пришлось идти плакать, потому что я сделал бред, и получил белую страницу, но потом таки сделал

{var $tagsArray = $_modx->resource.tags | split}
{set $newTagsArray = []}
{set $newIdx = 0}

{foreach $tagsArray as $tag}
    {if $newIdx == 0}
        {set $newTagsArray['tags:LIKE'] = '%' ~ $tag ~ '%'}
    {else}
        {set $newTagsArray['OR:tags:LIKE'] = '%' ~ $tag ~ '%'}
    {/if}
    {set $newIdx = $newIdx + 1}        
    
{/foreach}

{'!pdoResources' | snippet  : [
    'parents' => '6',
    'tpl' => 'similarNewsTpl',
    'includeTVs' => 'tags,newsImg',
    'where' => $newTagsArray
]}
И всё заработало, всё сортирует, теперь не нужно устанавливать ещё 2 доп плагина чтобы tagLister работал, да и бывают случаи подобные, где нужно получить всё из всего, а через сниппет не работает, если генерировать там where

Хотя я получается зря мучался, ведь мог сделал всё в снипете сразу, и просто получить вывод
Константин
17 февраля 2022, 08:18
0
Спасибо, похоже Апи нет и им (одинесникам) без разницы какие будут имена, им главное получить Roistat ID и Телефон клиента в любом формате. Можно ли реализовать это как-то проще может? Там просто десктопная программа 1с медицина, где создаются сделки и ведется запись.
Артур Шевченко
17 февраля 2022, 08:05
0
Функция получает на вход массив заголовков запроса, адрес по которому этот запрос отправить, метод запроса (для Битрикс это POST) и массив с данными для тела запроса. Затем отправляет с помощью curl запрос и возвращает результат запроса в формате массива. Но я тут на функцию посмотрел, она немного нелогичная, параметр ispost лишний, проверять надо метод, т.е. if($ispost) лучше написать if($method == 'POST')
Vladimir
17 февраля 2022, 08:01
0
А если написать на феноме в ручную так
{'!pdoResources' | snippet  : [
    'parents' => '6',
    'showLog' => '1',
    'tpl' => 'similarNewsTpl',
    'includeTVs' => 'tags,newsImg',
    'where' => ['tags:LIKE' => '%asd%']
]}
То фильтрует, но если я засуну допустим снипет сюда, и снипет вернет array
то ничего не ищет
<?php
$tags = explode(",", $input);
$output = array();

$idx = 0;
foreach($tags as $tag){
    if($idx == 0){
        array_push($output,'tags:LIKE','%'.$tag.'%');
    } else {
        array_push($output,'OR:tags:LIKE','%'.$tag.'%');
    }
    
    $idx++;
}

return $output;
Вызов такой
{set $wh = '!tagsWhereV2' | snippet : ['input' => $_modx->resource.tags]}
,
{'!pdoResources' | snippet  : [
    'parents' => '6',
    'showLog' => '1',
    'tpl' => 'similarNewsTpl',
    'includeTVs' => 'tags,newsImg',
    'where' => $wh
]}
При этом лог одинаковый, и там и там стоит where и написано что сортирует, вывод оди и тот же, но как я наврено понял бед в том что это снипет, можно как-то внутри странице на самом fenome написать это список?
Vladimir
17 февраля 2022, 07:39
0
Когда пишу вручную where
&where=`{"tags: LIKE": "%asd%"}`
Страница становится белой, а в логе это
line 69, near '{"tags: LIKE":' <- there
Почему так неизвестно, неделю назад делал так же, всё работало
Vladimir
17 февраля 2022, 07:36
0
Лог такой
0.0001030: pdoTools loaded
0.0000339: xPDO query object created
0.0008740: Included list of tvs: newsImg, tags
0.0001979: leftJoined modTemplateVarResource as TVnewsimg
0.0001509: leftJoined modTemplateVarResource as TVtags
0.0002151: Added selection of modResource: `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `alias_visible`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
0.0000110: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.newsImg`
0.0000069: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.tags`
0.0000110: Replaced TV conditions
0.0013409: Processed additional conditions
0.0025702: Added where condition: 0=, modResource.id:NOT IN(7), modResource.parent:IN(6,7,39,40,41,42,43,44), modResource.published=1, modResource.deleted=0
0.0000100: Replaced TV conditions
0.0001101: Sorted by modResource.parent, ASC
0.0001791: Sorted by modResource.menuindex, ASC
0.0000038: Limited to 10, offset 0
0.0006480: SQL prepared "SELECT `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`alias_visible`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties`, IFNULL(`TVnewsimg`.`value`, '') AS `tv.newsImg`, IFNULL(`TVtags`.`value`, '') AS `tv.tags` FROM `modx_site_content` AS `modResource` LEFT JOIN `modx_site_tmplvar_contentvalues` `TVnewsimg` ON `TVnewsimg`.`contentid` = `modResource`.`id` AND `TVnewsimg`.`tmplvarid` = 54 LEFT JOIN `modx_site_tmplvar_contentvalues` `TVtags` ON `TVtags`.`contentid` = `modResource`.`id` AND `TVtags`.`tmplvarid` = 56 WHERE  ( `modResource`.`id` NOT IN (7) AND `modResource`.`parent` IN (6,7,39,40,41,42,43,44) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.parent ASC, modResource.menuindex ASC LIMIT 10 "
0.0011370: SQL executed
0.0000699: Rows fetched
0.0072129: Prepared and processed TVs
0.0013368: Loaded "modChunk" with name "similarNewsTpl"
0.0034480: Compiled Fenom chunk with name "modchunk/109"
0.0051410: Returning processed chunks
0.0188210: Total time
4 194 304: Memory usage
Все новости
Константин
17 февраля 2022, 06:32
0
Артур, а как работает данная функция?
Артур Шевченко
16 февраля 2022, 21:42
0
Если функция публичная, думая можно попробовать либо $modx->getService либо $modx->addPackage а потом вызывать нужный метод.
R2m0x94 (Vasily)
16 февраля 2022, 21:07
0
Там, я уже был. Спасибо.

Мне нужно добавление слов в индекс при создании товара, то есть из плагина. А настройка mse2OnBeforeSearchIndex, что-то не срабатывает и в бд слова не пишутся. От того и вопрос, как выполнить индексацию слов при том, что есть публичная функция Index()

Индексация происходит в админке и за неё отвечает assets/components/msearch2/js/mgr/widgets/index.form.js:27
core/components/msearch2/processors/mgr/index/create.class.php:148
Артур Шевченко
16 февраля 2022, 20:52
0
Не знаю что за index вам нужен, но как создавать товары minishop2 программно можно глянуть
тут