непавильный адрес картинки из-за чпу
Здравствуйте, у меня такой вопрос: в общем на сайте у меня включено ЧПУ и есть TV поле с картинкой. Но сама картинка не отображается на сайте, так как из-за чпу к её адресу приписывается ещё и адрес категории. То есть вот как это всё выглядит:
site.com/category/images/img.jpg
А должно быть так:
site.com/images/img.jpg
Скажите, как можно решить эту задачу?
site.com/category/images/img.jpg
А должно быть так:
site.com/images/img.jpg
Скажите, как можно решить эту задачу?
Комментарии: 13
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Кто нибудь может что нибудь сказать по этому поводу? Правильное ли это решение, или нужно делать по другому?
Устанавливая тег base вы сломаете якорную навигацию если она есть. Это большая загадка, по какому недоразумению эта штука присутствует (или сейчас нет уже, не уверен) в дефолтном шаблоне modx сразу после установки. И даже видел абсурдные разговоры о том, что это «особенность движка» от лиц, которые не очень понимаю видимо как работает HTML в браузере… короче если вы точно не знаете нужен ли вам тег base (а 99.5% что не нужен) — не используйте его!
Вы хотели подробностей, так вот:
Вообще, контролировать наличие начального слеша можно несколькими способами (и к стати если запутаться, можно наткнуться на ошибку с // двумя начальными слэшами так что я например предпочитаю в верстке его добавлять именно так как и подсказал @Роман ) так как пути строятся из частей, каждой из которых в MODX можно управлять (а можно оставить по дефолту и всё тоже будет ок)
На самом деле к любому ресурсу на сайте есть 2 пути, и оба необходимы:
1) где на жестком диске на сервере лежит файл
2) по какому uri его можно получить из интернета
У вас «проблема» (которая на самом деле особенность построения любого относильеного uri в браузерах, подробности на MDN) с путём 2.
Есть параметр baseUrl в настройках источника файлов (а он в свою очередь указан в вашей TV с картинкой) — можно в его значении поставить в начале этот слэш и тогда не придется его дописывать в верстке.
Только не путайте с basePath — это путь до картинки на сервере (путь 1)
Например картинки лежат на сервере в папке /home/user/data/www/site.ru/assets/img/ тогда в настройках Медиа -> Источники файлов -> Картинки будут такими:
1) basePath = assets/img/
2) baseUrl = /assets/img/
Но как здесь видно,
А первая часть пути до папки задается ещё раньше в файле конфига сайта /core/config/config.inc.php
Если всё ещё не понятно, формулируйте вопросы, дожмём тему))
Я использую данный тег на всех проектах, не только modx и он прекрасен.
Не вижу никаких минусов и переходы по якорным ссылкам работают.
Та проблема которая описана на stackoverflow решается элементарно, нужно просто в якорной ссылке указывать не #id, а site.com#id
Но даже если у использование base href и создаст какие то проблемы у кого-то, то мне кажется это еще не причина так негативно отзываться о таком замечательном теге, решающим куда больше проблем чем создающим)
Такой подход работает надежно ровно до той поры, пока контент-менеджеру (или прямо вам, но в спешке, когда «оперативка в голове занята») использовать якорную ссылку в поле content или другом, где у вас подключен HTML-редактор.
В плюс к этому, указанные вами ссылки всё равно не будут работать на тестовом домене (не все их используют, ну ок, тогда читайте как «при переезде сайта на другой домен», что тоже редкость, но блин, это побочный эффект, которого бы не было).
Это всё можно победить, конечно, если держать это в голове или описать в документации проекта (ага :) ) но я предлагаю, советую и рекомендую вместо того чтобы «стрелять себе в ногу» тегом base и потом лечить последствия, просто не заниматься самострелом, если позволите.
Указав base href = site.com/ Можно на любой странице подключить скрипт используя относительный путь относительно base href.
и на любой странице он будет подключен, вне зависимости от url
А как поступаете вы? Для каждого скрипта указываете абсолютный путь?
будет
зато я точно знаю, что заберу скрипт от корня, а в вашем случае потенциально возможны неожиданности (по моему мнению, прошу не судить строго, может кому-то и нравится не держать пути под контролем а применять пути относительно директорий, а не корня)