Итак, у меня есть сайт с дюжиной страниц, использующий Drupal в качестве CMS. Хотите знать, как установить / добавить все ссылки href на любой странице с динамическим атрибутом?
так вот пример URL:
http://www.site.com/?q=node/4
и я хотел добавить к URL-адресу вот так:
http://www.site.com/?q=node/4&attr=1234
Теперь у меня есть навигационная панель на сайте, и когда я наводю указатель мыши на ссылку, я вижу URL, но мне нужно добавить строку & attr = 1234 в конце. Строка является динамической, поэтому она может время от времени меняться.
Я думал, что jQuery был бы хорошим выбором для этого, но есть ли у Drupal какая-либо функциональность?
Теперь я видел пару сообщений в стеке:
Проблема в том, что я изучаю Drupal и имею минимальный опыт работы с jQuery, но с обоими лучше. Я вижу, что jQuery может заменить HREF, но похоже, что они жестко закодировали HREF, может ли jQuery найти все HREF на странице и добавить к ней строку? Также у Drupal есть эта функциональность, и какой подход был бы лучшим?
Также нужно, чтобы это работало для чистого или стандартного формата URL, поэтому я думаю, что Apache справится с этим, я просто хотел убедиться.
Спасибо за любую помощь
EDIT:
Похоже, что общее мнение о том, что Drupal должен обрабатывать запросы такого типа. Просто ищу лучшую реализацию. Лучше всего было бы просто вызвать функцию, но я бы хотел, чтобы она динамически добавлялась ко всем существующим href, поскольку я хочу, чтобы это было динамическим, а не жестким кодированием любых вызовов url / href. Так что я могу добавлять / удалять страницы на лету без необходимости что-либо переконфигурировать / перекодировать.
Спасибо за отличные советы, хотя
РЕДАКТИРОВАТЬ # 2:
Хорошо, возможно, я задаю вопрос. Вот то, что мне нужно, и почему оно еще не работает для меня.
Мне нужно передать значение в URL, которое изменяет внешний вид сайта. Мне нужно, чтобы он передавался почти на каждый тег href на странице, но не на страницах выхода пользователя или администратора.
Я вижу в своем коде шаблона, где генерируются навигационные ссылки, поэтому я мог передать свой код в массиве атрибутов в качестве второго параметра функции, но это установка атрибутов тега, а не атрибутов URL.
Теперь я вижу, что нижние навигационные ссылки используют эту функцию Drupal: menu_navigation_links () в menu.inc, но верхняя навигационная система использует пользовательскую функцию.
Эта функция в скрипте template.php выглядит как та, которая создает ссылки
function lplus($text, $path, $options = array()) {
global $language;
// Merge in defaults.
$options += array(
'attributes' => array(),
'html' => FALSE,
);
// Append active class.
if (($path == $_GET['q'] || ($path == '<front>' && drupal_is_front_page())) &&
(empty($options['language']) || $options['language']->language == $language->language)) {
if (isset($options['attributes']['class'])) {
$options['attributes']['class'] .= ' active';
}
else {
$options['attributes']['class'] = 'active';
}
}
// Remove all HTML and PHP tags from a tooltip. For best performance, we act only
// if a quick strpos() pre-check gave a suspicion (because strip_tags() is expensive).
if (isset($options['attributes']['title']) && strpos($options['attributes']['title'], '<') !== FALSE) {
$options['attributes']['title'] = strip_tags($options['attributes']['title']);
}
return '<a href="'. check_url(url($path, $options)) .'"'. drupal_attributes($options['attributes']) .'><b>'. ($options['html'] ? $text : check_plain($text)) .'</b></a>';
}
не уверен, как включить то, что мне нужно, в эту функцию.
Так что на домашней странице отсутствует узел? Q =, и если я добавляю амперсанд, он выдает ошибку.
http://www.site.com/&attr=1234 // throws error
Но если я модифицирую его в правильный формат, он будет работать нормально
http://www.site.com/?attr=1234