Дмитрий

Дмитрий

С нами с 05 ноября 2018; Место в рейтинге пользователей: #363
Дмитрий
27 января 2019, 11:44
0
Код сниппета TagsList.php такой:
<?php
	$pdoTools = $modx->getService('pdoTools');
	$TvSuperSelect = $modx->getService('tvsuperselect', 'tvsuperselect', MODX_CORE_PATH . 'components/tvsuperselect/model/tvsuperselect/');
	if (!$TvSuperSelect) {
		$modx->log(xPDO::LOG_LEVEL_ERROR, 'Не удалось загрузить TvSuperSelect');
		return;
	}

	$q = $modx->newQuery('tvssOption');
	$q->groupby('value');
	$q->select('value, tv_id');
	$q->where(array(
		'tv_id' => $tv_id
	));
	
	if ($q->prepare() && $q->stmt->execute()) {
		$tags = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
	}
	
	$tags_page = $modx->makeUrl($tags_page, '', '', 'full');
	
	foreach($tags as $tag) {
		$result  .= $pdoTools->getChunk($tpl, array(
			'tag' => $tag['value'], 
			'tags_page' => $tags_page
		));
	}
	
	return $result;
Что тут нужно изменить/добавить?
Дмитрий
27 января 2019, 02:27
0
Благодарю. На этом варианте остановлюсь.

Еще такой вопрос.

Вышеуказанные решения — это вывод в ресурсе принадлежащих ему(ресурсу) тегов.

А в самом облаке облаке тегов все теги сайта вывожу так:
{$_modx->runSnippet('@FILE snippets/TagsList.php', [
	'tv_id' => 8,
	'tpl' => '@FILE chunks/tags/tags_list_item.tpl',
	'tags_page' => 25
])}

В chunks/tags/tags_list_item.tpl следующий код:
<a href="{$tags_page}{$tag}/">{$tag}</a>,
Выводятся так:
<a href="url-страницы-тега/">Какой-то текст1</a>, <a href="url-страницы-тега/">Какой-то текст2</a>, <a href="url-страницы-тега/">Какой-то текст3</a>, <a href="url-страницы-тега/">Какой-то текст4</a>, <a href="url-страницы-тега/">Какой-то текст5</a>,
Как в этом случае удалить запятую у последнего тега, если это не массив, а много строк?
То есть:
string string string string string string string string string string string ....
Дмитрий
26 января 2019, 00:40
0
Благодарю.
Теперь понятно, если first или last имеет значение TRUE, то это первая и последняя итерация соответственно.
Дмитрий
25 января 2019, 23:49
0
Андрей, может это глупый вопрос, но откуда получаются значения last=$last? Не пойму, но работает. Или это типа модификатора?
Дмитрий
25 января 2019, 23:37
0
Спасибо, добрый человек, то что нужно!
Дмитрий
20 января 2019, 09:49
0
Василий, подскажи еще следующее.

В стандартной пагинации, если
'setMeta' => 1
то rel=«canonical», если находишся на любой странице пагинации выглядит следующим образом:
<link rel="canonical" href="https://mysite.ru/category/"/>
то есть ведет на каноническую страницу.

А после переделки на «человекопонятную навигацию» при нахождении на странице пагинации, например, на 3 странице, выглядит следующим образом:
<link rel="canonical" href="https://mysite.ru/category/page/3/"/>
то есть ведет на текущую страницу.

Подскажи, возможно ли в плагине что-то изменить или добавить (и что именно), чтобы rel=«canonical» при нахождении на любой странице пагинации вел на каноническую страницу пагинации, вот так:
<link rel="canonical" href="https://mysite.ru/category/"/>
Или это в плагине не сделать, то тогда каким образом это реализовать?

Ранее задавал этот вопрос вот здесь, но не было времени разбираться и пока отложил на потом. Сейчас пришло время добить эту тему до конца.
Там Rasul предложил решение, но думаю есть другое, более гибкое решение.
Дмитрий
20 января 2019, 08:51
0
Василий, все, разобрался и все получилось. Огромное спасибо за подсказку.
Дмитрий
20 января 2019, 08:18
0
Плейсхолдер — количество страниц пагинации через свой сниппет получил.
а как передать переменные из плагина в этот свой сниппет?
Дмитрий
20 января 2019, 07:53
0
Василий, а можно подробнее, а то не очень давно познакомился с MODX.
То есть создать сниппет с редиректом и вызвать его после pdoPage, то есть пагинации?

Соответственно в сниппете получить количество страниц с помощью:
$modx->getPlaceholder('pageCount');
так???
Дмитрий
29 декабря 2018, 02:15
0
Да, уже обновился еще днем как только исправили.
Дмитрий
18 декабря 2018, 21:44
0
или хотя бы один раз прописать в шаблоне по вашему варианту, но с условиями, что если ресурс с пагинацией, то выводить нужное…
Дмитрий
18 декабря 2018, 21:28
0
Проблема в том, что у разных категорий могут быть свои шаблоны, это придется там где пагинация, прописывать каждый раз в шаблоне.
Хочется сделать в одном месте и там где пагинация, чтобы это включалось.

Думаю, как-то в плагине надо прописать условие, что если это rel=«canonical» то не применять /page/№/
Дмитрий
18 декабря 2018, 20:57
0
По крайнему Вашему варианту на любой странице в коде вот это:
<link rel="canonical" href="https://mysite.ru/uslugi/" />
<link rel="prev" href="https://rmysite.ru/uslugi/">
<link rel="next" href="https://mysite.ru/uslugi//page/-1">

Спасибо за участие, но думаю предложенная концепция не подойдет, так как 3 эти мета-тега постоянно будут в исходном коде. В то время как при нахождении на первой и последней странице должно быть 2 мета-тега.

То есть,
если находиться на 1 странице должно быть:
<link rel="canonical" href="https://rmysite.ru/uslugi/"/>
<link rel="next" href="https://rmysite.ru/uslugi/page/2/"/>
Если находиться на последней (3-последняя страница), то должно быть:
<link rel="canonical" href="https://rmysite.ru/uslugi/"/>
<link rel="prev" href="https://rmysite.ru/uslugi/page/2/"/>

Поэтому без правки php кода, думаю, не обойтись.
Дмитрий
17 декабря 2018, 19:53
0
У меня сейчас:
<link rel="canonical" href="https://mysite.ru/category/page/2/"/>
<link rel="prev" href="https://mysite.ru/category/"/>
<link rel="next" href="https://mysite.ru/category/page/3/"/>

Хочу чтобы было:
<link rel="canonical" href="https://mysite.ru/category/"/>
<link rel="prev" href="https://mysite.ru/category/"/>
<link rel="next" href="https://mysite.ru/category/page/3/"/>

Если делать по Вашему варианту, отключить регистрацию мета-тегов — &setMeta=`0` и в head прописать:
<link rel="canonical" href="[[~[[*id]]? &scheme=`full`]]" />
то останется только:

<link rel="canonical" href="https://mysite.ru/category/"/>
Дмитрий
17 декабря 2018, 19:38
0
Страницу с облаком /tags/ сделал, теги выводятся, схема URL правильная:
site.ru/tags/определенный+тег/

Однако из статьи bezumkin.ru/sections/tips_and_tricks/2918/ не совсем понятно как применить все описанное к данному случаю.

Не сочтите за наглость, опишите это пожалуйста для далёких (пока) новичков в MODX и не особо знающих php, а именно можете дать код плагина, который это делает (кастомную маршрутизацию).

Я так понимаю на него надо будет повесить событие OnPageNotFound

Заранее, благодарю!
Дмитрий
17 декабря 2018, 17:03
0
2. Кастомной маршрутизацией по шаблону /tags/{item} присваивается плейсхолдер и sendForward-ится на страницу из пункта 1.
Можно этот пункт поподробнее, недолго знаком с MODX, да и в php не особо силен.
Дмитрий
17 декабря 2018, 16:43
0
pdoPage (БЕЗ ПЕРЕДЕЛКИ ПО ВЫШЕУКАЗАННОЙ ИНСТРУКЦИИ) регистрирует в head если находиться, например, на 2 странице:
<link rel="canonical" href="https://mysite.ru/category/"/>
<link rel="prev" href="https://mysite.ru/category/"/>
<link rel="next" href="https://mysite.ru/category/?page=3"/>
Я переделал по инструкции, с rel=«prev» и rel=«next» все нормально, выводит правильно, а rel=«canonical» выводится таким образом, что на какой бы странице не находился, канонический адрес указывает на текущую страницу, а не на главную страницу категории.
Надо сделать, чтобы было как до переделки, чтобы rel=«canonical» указывал на страницу категории без page№

Где-то в коде плагина надо внести изменения, но к сожалению не особо силен в php, конечно если «долго мучиться, что нибудь получится», по крайней мере всегда получалось если ответа не находилось.