Есть идея отмечать основной файл и хранить на него ссылку в поле properties ресурса, но это для будущих версий, я и так в последние дни что-то увлёкся доработками.
<?php
// Получаем готовый текст
$text = trim($input);
if (empty($text)) {
return;
}
// Стандартные чанки, можно переопределить
if (empty($tpl)) {$tpl = '@INLINE <li>[[+value]]</li>';}
if (empty($tplOuter)) {$tplOuter = '@INLINE <ul>[[+rows]]</ul>';}
// Подключаем pdoTools для работы с инлайновыми чанками
$pdo = $modx->getService('pdoTools');
// Разбиваем текст по символу переноса строки
$rows = '';
$tmp = array_map('trim', explode("\n", $text));
foreach ($tmp as $value) {
if (empty($value)) {continue;}
$rows .= $pdo->getChunk($tpl, array('value' => $value));
}
// Если есть, что выводить - выводим
if (!empty($rows)) {
return $pdo->getChunk($tplOuter, array('rows' => $rows));
}
И можно вызывать в чанке оформления галереи:
[[+add:getAddList]]
Здесь сам сниппет ничего получать не должен, потому что, в отличии от ТВ, у картинок нет имён и они не так привязаны к ресурсам. Поэтому, работаем только с уже переданным текстом.
3. Откуда вообще могут взяться дубли по url, если этих url нигде нет? Ссылки на сайте выводятся как надо, в sitemap.xml — тоже. Яндекс сам при индексировании будет убирать слэш у контейнеров, что ли?
Ну а теперь ответы.
Friendly urls — это команды движку открыть какую-то страницу не по номеру, а по имени. Имя отправляется на запрос в index.php и он уже думает, какую страницу отдать. Так что, Apache2 и Nginx здесь сразу не при чём, работать нужно с движком сайта.
Для примера я набросал простой плагин, который сравнивает запрошенный адрес с каноническим для страницы, и если они не совпадают — делает 301 редирект.
Есть идея отмечать основной файл и хранить на него ссылку в поле properties ресурса, но это для будущих версий, я и так в последние дни что-то увлёкся доработками.
Тогда нужно его совсем чуть-чуть переделать:
И можно вызывать в чанке оформления галереи:
Здесь сам сниппет ничего получать не должен, потому что, в отличии от ТВ, у картинок нет имён и они не так привязаны к ресурсам. Поэтому, работаем только с уже переданным текстом.
И в чанке выводи tv так:
Код не проверял, но попробуй разобраться
modx.pro/howto/5139-super-modx-strict-seo-accelerated-frontend/
1. Я не смог найти способ проверить наличие дублей, вообще. Все статьи в интернете больше походят на набор бабушкиных сплетен «зайдите в гугл, поищите так, а потом на яндекс, поищите эдак — видите, у вас разные результаты, значит у вас там где-то дубли!».
2. Если на сайте есть страницы, которые Яндекс исключил из поиска, наверное — он должен где-то их показывать? Не вижу
3. Откуда вообще могут взяться дубли по url, если этих url нигде нет? Ссылки на сайте выводятся как надо, в sitemap.xml — тоже. Яндекс сам при индексировании будет убирать слэш у контейнеров, что ли?
Ну а теперь ответы.
Friendly urls — это команды движку открыть какую-то страницу не по номеру, а по имени. Имя отправляется на запрос в index.php и он уже думает, какую страницу отдать. Так что, Apache2 и Nginx здесь сразу не при чём, работать нужно с движком сайта.
Для примера я набросал простой плагин, который сравнивает запрошенный адрес с каноническим для страницы, и если они не совпадают — делает 301 редирект.
Конечно, его нужно внимательно тестировать, но общее направление работ понятно.
Создал плагин, повесил на событие OnDocFormSave.
Можно еще добавить условие, чтобы урл, таким образом, формировался только для новых ресурсов. Мне пока не нужно.
NEW CONTEXT ROUTING PLUGIN FOR MODX
chsmedien.com/blog/2014/01/new-context-routing-plugin-for-modx
(modx.com/extras/package/xrouting