Всего 123 803 комментария

Александр Туниеков
20 сентября 2022, 23:52
0
Да я про подсчет результатов. Почему-то называл всегда подсказками :-(
поэтому скидывайте кейсы
Сейчас код вне зоны доступа :-). Завтра скину
Артур Шевченко
20 сентября 2022, 23:35
0
Непонятно какие подсказки ты имеешь в виду, в mFilter есть подсчёт результатов по каждому фильтру, но для фильтров из коробки я этого делать не планировал. И в целом, я не считаю себя экспертом по фильтрации, поэтому скидывайте кейсы, посмотрим, допилим и внедрим.
deleted
20 сентября 2022, 23:35
0
Нет, могу либо доступ к сайту дать, либо на pastebin код скинуть
Артур Шевченко
20 сентября 2022, 23:32
0
Конечно нужна, есть репозиторий с кодом?
Александр Туниеков
20 сентября 2022, 22:41
0
Может вы закрывающею } не скопировали???? Ошибка на это похожа.

Вообще у тебя в ms2Gallery 'limit'=>1 и 2 вариант будет не сильно быстрее. 2+1 простых запроса в базу против 1 более сложного на каждый вызов ms2Gallery. То есть на 1 картинку.
Если картинок много то лучше в основном pdoResources сразу и картинки и Parent подцепить join-ми. Тогда быстрее будет. 1 запрос на все против 3 запросов на каждый дочерний ресурс.
Примерно так:
{'!pdoResources' | snippet : [
    'parents'=>5,
    'tpl'=>'res_chunk',
	'loadModels'=>'ms2gallery',
	'leftJoin'=>[
		'File'=>[
			'class'=>'msResourceFile',
			'on'=>'File.resource_id = modResource.id and File.rank = 1 and File.path LIKE \'%small%\''
		],
		'Parent'=>[
			'class'=>'modResource',
			'on'=>'Parent.id = modResource.parent'
		],
	],
	'select'=>[
		'modResource'=>'*',
		'File'=>'File.url as file_url,File.name as file_name',
		'Parent'=>'Parent.pagetitle as parent_title',
	],
]}
res_chunk:
<div class="col-6 col-md-3 col-sm-6 gv-card">
	<div class="product-grid">
		<div class="product-image">
			<a href="{$id | url}" class="image">
				{if $file_url}
					<img src="{$file_url}" alt="{$parent_title}" title="{$file_name}">
				{else}
					<img src="assets/img/projects/v-1.png" alt="{$pagetitle}" title="{$pagetitle}"/>
				{/if}
			</a> 
			<div class="add-to-cart">
				<a href="{$id | url}">{$pagetitle}</a>
			</div>
		</div>
	</div>
</div>
Я бы так делал, если картинок много. И phpthumbon бы не стал использовать, а задал бы нужное превью в галерее. Интересно даже какая скорость будет во всех 3 вариантах.
пс. pdoResources наверно лучше кешировать.
Антон
20 сентября 2022, 21:52
0
Первый вариант работает, спасибо. Картинок будет много.
Второй вариант не заработал
Unexpected end of expression in modchunk/84 line 5, near '{'!ms2Gallery' | snippet: [↵'resources'=>$id,↵'innerJoin'=>['Parent'=>['class'=>'modResource','on'=>'Parent.id = modResource.id'],↵'select'=>['Parent'=>'Parent.pagetitle as parent_title'],↵'limit'=>1,↵'tpl'=>'ms2Gallery.mainpage.tpl'↵]' <- there
Александр Туниеков
20 сентября 2022, 21:08
0
Спасибо. Теперь более-менее понятно
Александр Туниеков
20 сентября 2022, 21:03
0
Ну тут 2 варианта:
1) не очень хороший. В $file должно быть $file['resource_id'] и в alt="… ТО САМОЕ..." можно сделать так
alt="{($file['resource_id'] | resource: 'parent') | resource: 'pagetitle'}"
Но модификатор | resource ресурсо-затратный и если будет 100 картинок, то страница будет тупить.
2) В ms2Gallery сразу добавить запрос паджтитл родителей
{'!ms2Gallery' | snippet: [
'resources'=>$id,
'innerJoin'=>['Parent'=>['class'=>'modResource','on'=>'Parent.id = modResource.id'],
'select'=>['Parent'=>'Parent.pagetitle as parent_title'],
'limit'=>1,
'tpl'=>'ms2Gallery.mainpage.tpl'
]}
alt="{($file['parent_title']}"
Примерно так не проверял
Алексей Смирнов
20 сентября 2022, 20:47
+1
Все просто.
в момент когда вы выставляете & система должна создать ссылку на значение. А для того чтобы это сделать нужно значение которое определилось в $a Тоже было ссылкой.
таким образом теперь $a ссылается на массив в памяти, где частичная ссылка на элемент массива в итерации $v.
Поэтому следующее действие $test = $a; просто копирует ссылку (или создает ссылку на тот же элемент памяти) на наш первый массив-со всеми значениями и в обоих переменных ссылка на один и тот же элемент в памяти. Далее, думаю понятно почему изменения в$v2 по сути являются изменением $a
Aleksandr Huz
20 сентября 2022, 20:45
0
На этой недели постараюсь возобновить
Алексей Смирнов
20 сентября 2022, 20:40
0
Эти цифры означают что вы на главной странице.
А по существу использовать pdoField.
Антон
20 сентября 2022, 20:39
0
в точку)
Чанк главной карточки
<div class="col-6 col-md-3 col-sm-6 gv-card">
<div class="product-grid">
<div class="product-image">
<a href="[[~[[+id]]]]" class="image">[[!ms2Gallery? &resources=`[[+id]]` &limit=`1` &tpl=`ms2Gallery.mainpage.tpl`]]</a> 
<div class="add-to-cart">
<a href="[[~[[+id]]]]">[[+pagetitle]]</a>
</div>
</div>
</div>
</div>
Чанк ms2Gallery.mainpage.tpl:
{if $files?}
    {foreach $files as $file}
<img src="{$file['url'] | phpthumbon: 'fltr[]=wmi|assets/wm/wm.png|C|40|100|100|0'}" alt="...ТО САМОЕ..." title="{$file['name']}">
    {/foreach}
{else}
<img src="assets/img/projects/v-1.png" alt="[[+pagetitle]]" title="[[+pagetitle]]"/>
{/if}
Александр Туниеков
20 сентября 2022, 20:36
0
$_modx->resource.id — выводит 1
Ну тут выдается главная страница. То есть код выполняется когда показывается главная. $_modx->resource это массив параметров страницы которая загружается показывается.
Ты на главной выводишь блок с ресурсами. Например:
{'!pdoResources' | snippet : [
    'parents'=>5,
    'tpl'=>'res_chunk'
]}
В res_chunk можно указывать:
{($id | resource: 'parent') | resource: 'pagetitle'}

И должно верно вернуть паджтитл ресурса родителя.
Но наверно ты в res_chunk еще вызываешь ms2Gallery c каким-то чанком. Например gallery_chunk и вот в нем уже $id вернет id файла (или 0 наверно). Чтоб получить id ресурса из res_chunk надо подумать как это сделать.
Но сперва скажи угадал? или у тебя что-то другое?
Антон
20 сентября 2022, 20:35
0
все верно, в чанке прописан код вывода изображения для определенного документа. Есть задумка немного автоматизировать формирование alt для картинки и вписывать туда значения родителя, к которому принадлежит документ (разбавленный другими фразами. Как Вы наверное уже поняли, родитель — это город. Таких родителей около 100ни.
Антон
20 сентября 2022, 20:19
0
$_modx->resource.parent — выводит 0
$_modx->resource.id — выводит 1
$parent — ничего не выводит
Антон
20 сентября 2022, 20:18
0
также выводит Home (id=1)
Evgeny
20 сентября 2022, 19:54
0
ничего не происходит
Александр Туниеков
20 сентября 2022, 19:50
0
Я пробовал делать компонент замену mFilter2. Вместо связки значение фильтра — ids ресурсов в массиве, хотел сделать эту связку в базе прописать и вытаскивать ids отфильтрованных ресурсов запросами. Но если отфильтровывает быстро, то подсказки на 100к товаров отрабатывают за сек 10. И если в mFilter2 улучшить кеширование, то разницы в скорости работы особо нет.
Надеюсь понятно написал для тех кто в курсе как mFilter2 работает.