Jump to main content Jump to doc navigation

Что такое именованный якорь?

Именованный якорь - это ссылка на контент в текущем ресурсе.

Типичный именованный якорь будет похож на:

<a name="prohibited"></a>

Проблема с использованием именованных якорей с включенными MODX и дружественными URL-адресами заключается в том, что тег <base href =" ">, необходимый для поддержки относительных URL, будет сбивать браузеры с мысли, что любые якоря указывают на базовую страницу href, которая обычно будет вашей домашней страницей. К счастью, нет ничего невозможного с MODX, и есть (по крайней мере) два способа преодолеть эту проблему.

Доступ к именованной привязке путем добавления URL-адреса вручную

Чтобы сгенерировать ссылку на текущий Ресурс при использовании именованного якоря «prohibited»:

<a href="[[~[[*id]]]]#prohibited">Запрещенные действия</a>

Чтобы сгенерировать ссылку на ресурс с идентификатором 12 при использовании именованного якоря «prohibited»:

<a href="[[~12]]#prohibited">Запрещенные действия</a>

Использование плагина для автоматического добавления URL при использовании якорей

В качестве альтернативы, вы можете использовать плагин для автоматического добавления ссылки на текущий ресурс перед реальной привязкой.

Поместите следующий код в новый плагин и на вкладке «Системные события» назначьте его для события «OnWebPagePrerender» (на основе этой записи).

if($modx->resource->get('id') !=$modx->config['site_start']) {
  $modx->resource->_output =str_replace('href="#','href="' .$modx->makeUrl($modx->resource->get('id')) .'#',$modx->resource->_output);
}

Сначала код проверяет, что мы не на главной странице (если мы здесь, нет необходимости добавлять URL на страницу). Когда это не так, он заменит любые вхождения href="# на href="link-to-page.html#, убедившись, что ваши якоря будут работать так, как задумано.

С этим решением вы все еще можете ссылаться на якоря на других страницах, используя второй пример выше.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • modmore
  • Jens Wittmann – Gestaltung & Entwicklung
  • Raffy
  • eydolan
  • Digital Penguin
  • Fabian Christen
  • Dannevang Digital
  • deJaya
  • Sepia River Studios
  • Following Sea
  • Anton Tarasov
  • Lefthandmedia
  • Nick Clark
  • Chris Fickling
  • Murray Wood
  • YJ
  • CrewMark
  • Richard

Budget

$305 per month—let's make that $500!

Learn more