Именованный якорь
Последнее обновление May 13th, 2019 | История страницы | Улучшить эту страницу | Сообщить о проблеме
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
Budget
$301 per month—let's make that $500!
Learn moreЧто такое именованный якорь?¶
Именованный якорь - это ссылка на контент в текущем ресурсе.
Типичный именованный якорь будет похож на:
<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
Budget
$301 per month—let's make that $500!
Learn more