Андрей

Андрей

С нами с 28 октября 2016; Место в рейтинге пользователей: #322
Андрей
11 марта 2018, 15:18
0
Скачал дополнение, внес туда публичный и приватный ключ, все делаю как в примере, появляется recaptcha, ставлю галку, но при попытке отправить форму выдает ошибку
Please select the checkbox in the ReCaptcha image.
если убрать recaptcha то форма работает корректно.
Андрей
21 февраля 2018, 09:26
0
я код немного переделал под себя, вот такой точно не выдает ошибку
<?php
$q = $modx->newQuery('modResource');
$q->where(array('pagetitle' => $idsearch));

$resource = $modx->getObject('modResource', $q);

$iddd = $resource->uri;

return $iddd;
Андрей
19 февраля 2018, 23:14
0
Да, конечно.
Андрей
19 февраля 2018, 23:07
0
Роли не имеет. Так все равно больше запросов. На больших объемах это сильно заметно.
Андрей
04 февраля 2018, 11:42
0
без разницы, такое ощущение что он вообще не учитывает
'parents' => 10
у меня была ошибка, там не было запятой, но это ничего не изменило. пробовал id родителя и в кавычки заключать — результат одинаковый. даже если я меняю id родителя — все равно выводятся те же самые ресурсы.
Андрей
03 февраля 2018, 12:33
0
Пытаюсь вывести 2 категории вместе
{set $category1 = '!pdoPage' | snippet : [
	'parents' => 0 //тут нужная категория
	'includeContent' => 1,
	'tpl' => '@INLINE {$pagetitle}',
	'where' => [
		'pagetitle:LIKE' => '%'~ $.get.search | escape ~'%',
		'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
		'OR:content:LIKE' => '%'~ $.get.search | escape ~'%'
	] | toJSON
]}

{if $category1?}
	<div>В каткгории 1 найдено:</div>
	{$category1}
{/if}

{set $category2 = '!pdoPage' | snippet : [
	'parents' => 10 //тут нужная категория
	'includeContent' => 1,
	'tpl' => '@INLINE {$pagetitle}',
	'where' => [
		'pagetitle:LIKE' => '%'~ $.get.search | escape ~'%',
		'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
		'OR:content:LIKE' => '%'~ $.get.search | escape ~'%'
	] | toJSON
]}

{if $category2?}
	<div>В каткгории 1 найдено:</div>
	{$category2}
{/if}
но второй вывод дублирует первый, хотя значения parents разные и во втором parents точно нет таких ресурсов.
Андрей
17 января 2018, 11:15
0
'tvPrefix' => ''
точно же!
Андрей
17 января 2018, 10:02
0
в моем вопросе было 2 подвопроса, я видимо их недостаточно четко выделил.
1. как вывести TV параметры при поиске по pagetitle например. То есть сам поиск работает, pagetitle выводится, а TV параметра этого же ресурса — нет
2. да, поиск по самим TV парметрам
по логу все верно, насколько я могу судить
.0003102: pdoTools loaded
0.0000761: xPDO query object created
0.0009470: Included list of tvs: Adr, NameReal, URL
0.0004930: leftJoined modTemplateVarResource as TVadr
0.0004148: leftJoined modTemplateVarResource as TVnamereal
0.0003688: leftJoined modTemplateVarResource as TVurl
0.0005469: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `content`, `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.0000148: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.Adr`
0.0000100: Added selection of modTemplateVarResource: IFNULL(`value`, '') AS `tv.NameReal`
0.0000091: Added selection of modTemplateVarResource: IFNULL(`value`, 'нет') AS `tv.URL`
0.0000210: Replaced TV conditions
0.2391658: Processed additional conditions
0.2410922: Added where condition: pagetitle:LIKE=%авто%, OR:content:LIKE=%авто%, modResource.id:NOT IN(999,1002,1001), modResource.parent:IN(998,999,1001,1002,1067,1068,1069,1070,1599,1641,1642,1643,1644,1645,3701,3702,3703,3704,3705,3706,3707,3708,3709,3710,3711,3712,3713,3714,3715,3716,3755,3756,3757), modResource.published=1, modResource.deleted=0
0.0000241: Replaced TV conditions
0.0002000: Sorted by modResource.pagetitle, ASC
0.0000050: Limited to 10, offset 0
0.0057361: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`content`, `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(`TVtstadr`.`value`, '') AS `tv.TstAdr`, IFNULL(`TVtstnamereal`.`value`, '') AS `tv.TstNameReal`, IFNULL(`TVtstmcc`.`value`, '') AS `tv.TstMCC`, IFNULL(`TVtsturl`.`value`, 'нет') AS `tv.TstURL` FROM `LdfDfd3mc_site_content` AS `modResource` LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtstadr` ON `TVtstadr`.`contentid` = `modResource`.`id` AND `TVtstadr`.`tmplvarid` = 5 LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtstnamereal` ON `TVtstnamereal`.`contentid` = `modResource`.`id` AND `TVtstnamereal`.`tmplvarid` = 6 LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtstmcc` ON `TVtstmcc`.`contentid` = `modResource`.`id` AND `TVtstmcc`.`tmplvarid` = 7 LEFT JOIN `LdfDfd3mc_site_tmplvar_contentvalues` `TVtsturl` ON `TVtsturl`.`contentid` = `modResource`.`id` AND `TVtsturl`.`tmplvarid` = 8 WHERE  ( `modResource`.`pagetitle` LIKE '%авто%' OR `modResource`.`content` LIKE '%авто%' AND `modResource`.`id` NOT IN (999,1002,1001) AND `modResource`.`parent` IN (998,999,1001,1002,1067,1068,1069,1070,1599,3756,3757) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.pagetitle ASC LIMIT 10 "
0.0270789: SQL executed
0.0057619: Total rows: 102
0.0001559: Rows fetched
0.0121310: Prepared and processed TVs
0.0090630: Loaded "modChunk" with name "SmartSearchTST.tpl"
0.0431590: Compiled Fenom chunk with name "modchunk/14"
0.0529652: Returning processed chunks
0.3491061: Total time
16 252 928: Memory usage
вывожу TV также как
{$adr}
Андрей
17 января 2018, 09:08
0
Еще вопрос по работе с TV
добавил в выборку TV параметры, по аналогии
'includeTVs' => 'Adr, NameReal, URL',
но ничего не выводится
и как прописать в условии поиска поиск по TV параметрам?
'OR:introtext:LIKE' => '%'~ $.get.search | escape ~'%',
Андрей
16 января 2018, 20:22
0
Круть! Работает. С этой стороны я бы не догадался подойти. Спасибо!
Андрей
14 января 2018, 22:52
0
похоже на то, я пытался нарисовать сам этот контейнер + вызывал TV без &tvPrefix=`tv.`
вопрос решен в общем
Андрей
14 января 2018, 19:11
0
согласен. посмотрел в статистику — мое творение в 4 раза больше запросов с БД генерит, на больших выборках разница во времени очень заметна.
Андрей
14 января 2018, 11:38
0
а вот на счет Collections — отличный вариант, жаль сразу не пришло в голову, я его считал просто альтернативным вариантом отображения админки
Андрей
14 января 2018, 11:20
0
Заморозка url — это мне наду будет вручную прописать все url для каждого элемента?
Андрей
12 января 2018, 20:23
0
да я и до этого добавлял и роботс указывал — нет его и все тут, в рекомендациях пишет что надо добавить.
ладно, добавлю еще раз, может яндекс до этого глючил.
Андрей
09 января 2018, 20:35
0
Спасибо, я решил вот так
[[!pdoResources?
                         &parents=`2`
                         &depth=`3`
                         &limit=`1`
                         &tpl=`tpl.url`
                         &where=`{"pagetitle":"[[+tv.rrr]]"}`
                        ]]
меня тоже озарило)
учитывая что id для меня не самоцель, а этап для получения урл ресурса, мне кажется это более подходящий вариант
Андрей
08 января 2018, 14:25
0
Спасибо!
Андрей
05 января 2018, 18:44
0
в общем прошлый скрипт почему-то работал до первой запятой в тексте и требовал csv в одну строку, в процессе борьбы с этими проблемами скрипт чуть изменился. Вот итоговый вариант, может кому пригодится. Создал 900 страниц за 1 минуту
<?php
require_once '/путь/до/data/www/конфига/config.core.php';
require_once MODX_CORE_PATH.'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService('error','error.modError', '', '');
$csvArray = array();
$csvData = file_get_contents(MODX_ASSETS_PATH . 'file.csv');
$lines = explode(PHP_EOL, $csvData);
foreach ($lines as $line) {
	$csvArray[] = str_getcsv($line, ';');
}

  for ($i = 0; $i <= count($csvArray)-1; $i++) 
  { 
	$response = $modx->runProcessor('resource/create', array(
		'pagetitle' => $csvArray[$i][0],
		'description' => 'описание '.$csvArray[$i][0],
		'tv1' => $csvArray[$i][1],
		'tv2' => $csvArray[$i][2],
		'introtext' => '',
		'content' => '',
		'alias' => 'info-'.$csvArray[$i][0],
		'template' => 3,
		'published' => 1,
		'parent' => 2,
		'hidemenu' => 1
	));    
  }
  ?>
скрипт нужно положить где-то на сервере и запустить через консоль
php /путь/до/скрипта/скрипт.php
соответственно он из файла file.csv создаст кучу ресурсов.
Спасибо Михаилу за помощь!
Андрей
05 января 2018, 02:43
0
в итоге получился вот такой код
$csv = array_map('str_getcsv', file(MODX_ASSETS_PATH . 'user.csv'));

foreach($csv as $key){
    $key = str_getcsv($key[0], ';');
}

  for ($i = 0; $i <= count($key)-1; $i++) 
  { 
        $response = $modx->runProcessor('resource/create', array(
	'pagetitle' => $key[$i],
	'longtitle' => $key[$i+1],
	'description' => '',
	'introtext' => '',
	'content' => '',
	'alias' => $key[$i],
	'template' => 3,
	'published' => 1,
	'parent' => 2,
	'hidemenu' => 1
	
));    
    $i=$i+1;
для простоты я пока оставил только 2 поля, все равно планируется регулярное обновление тогда и добавлю TV параметр.
Все работает, только почему-то за раз добавляется 145 ресурсов. Это конечно лучше чем по одному и руками, но все равно хочется разобраться как это делать для любого количества элементов.
Андрей
03 января 2018, 14:13
0
Да. Оригинал в табличке xls, оттуда можно с любыми разделителями сформировать.