pdoSitemap, sitemap.xml, ссылки без слеш на конце

От клиента поступила задача — убрать слеши в конце ссылок в генерируемой карте сайта от pdoSitemap.

<loc>
http://site.ru/articles/stati-o-promyishlenn/
</loc>
Как это сделать, подскажите плиз?

MODX Revolution 2.6.5-pl
pdoTools 2.11.2-pl
php 5.6
Scorp Satex
13 августа 2018, 17:33
modx.pro
3 232
0

Комментарии: 7

SEQUEL.ONE
13 августа 2018, 22:07
0
Насколько знаю ссылки выводятся из поля uri. Можно попробовать в Содержимом удалить из типа данных html слэш, а затем перегенерировать uri, на сайте Ильи Уткина были пошаговые скрипты запускаемые через компонент Console.
    SEQUEL.ONE
    13 августа 2018, 22:11
    0
      Scorp Satex
      14 августа 2018, 14:50
      0
      Спасибо, но такой вариант не пододит конкретно мне.

      Дело в том что сайт старый, и на нем много ссылок со слешами — рекламные и в разных местах.

      Я на сайте поставил скрипт который перенаправляет с ссылки со слешем на ссылку без слеша с параметром 301.

      И мне сейчас нужно конкретно ТОЛЬКО sitemap.xml изменить, не трогая ссылки на сайте в том формате что они есть сейчас.
      Дмитрий
      14 августа 2018, 16:52
      0
      Ну, можно тупо забыдлокодить, но работать будет :)
      Вместо
      <loc>[[+url]]</loc>\n\t
      Делаем что-то типа этого (это лютый быдлокод, но просто как пример фантазии)
      {var $loc = '<loc>'~{$url}~'</loc>\n\t'|replace:'/</loc>':'</loc>'}
      {$loc}
      Идея в том, чтобы взять готовую строку, и если мы доподлинно знаем, что URL оканчивается слэшем, то смешиваем это с тегом и заменяем. Типа такого.
        Scorp Satex
        14 августа 2018, 17:20
        0
        Не работает к сожалению, но спасибо все равно.
          Дмитрий
          14 августа 2018, 17:23
          0
          {var $loc = ('<loc>'~{$url}~'</loc>\n\t')|replace:'/</loc>':'</loc>'}
          Надо разобраться со скобками. Да и вообще, я механику объяснил, дальше разобраться не проблема.
        Валерий
        16 января 2020, 03:42
        0
        Столкнулся на днях с такой же проблемой. Бился пару часов, пока не понял, где ошибался. В итоге, создал чанк для параметра tpl у pdoSitemap:

        <url>
        <loc>[[!slash_out? &slash=`[[+url]]`]]</loc>
        <lastmod>[[+date]]</lastmod>
        <changefreq>[[+update]]</changefreq>
        <priority>[[+priority]]</priority>
        </url>
        Где «slash_out» — сниппет:

        if (empty($slash)) { return 'Пустая строка'; }
        $slash = preg_replace("#/$#", "", $slash);
        return $slash;
        И все работает.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7