Drupal - 根据URL将类添加到现有按钮

时间:2015-09-10 21:42:12

标签: php jquery drupal-7

我网站的每个页面都有一个立即预订按钮。我想知道选择了哪个按钮,并且不想在网站上添加25个以上的块来手动添加类。如果我可以使按钮唯一,我可以使用Google Analytics(根据页面网址添加其他类)。但我不是编码器,尽管我熟悉PHP和jQuery。

2 个答案:

答案 0 :(得分:0)

Hye Michael,在阅读了你的问题之后,我在我当地的测试drupal网站上测试了你的场景。实现它真的很容易。这是您需要将一段PHP代码放入您创建的块中。

<?php
$url = current_path();
$class_from_url = explode("/", $url);
echo "<a href=[link_to_whatever] class='". $class_from_url[0] ."'>[Link Title]</a>";
?>

确保您的&#34; PHP过滤器&#34;启用模块,允许您从&#34;文本格式&#34;中选择PHP代码。在块体下。

答案 1 :(得分:0)

对于Drupal 7,实现目标的最佳方法是将theme_button()功能复制到主题的template.php文件中,并添加一些自定义代码以检查网址并添加类。

YOURTHEME_button($vars) {
  $element = $variables ['element'];
  $element ['#attributes']['type'] = 'submit';
  element_set_attributes($element, array('id', 'name', 'value'));

  $element ['#attributes']['class'][] = 'form-' . $element ['#button_type'];
  if (!empty($element ['#attributes']['disabled'])) {
    $element ['#attributes']['class'][] = 'form-button-disabled';
  }

  // Check URL to determine what button class to add
  $button_class = null;
  $current_path = base_path() . request_path();
  switch ($current_path) {
    '/form1':
      $button_class = 'button-for-form1';
      break;
    '/form2':
      $button_class = 'button-for-form2';
      break;
  }
  if ($button_class !== null) {
    $element ['#attributes']['class'][] = $button_class;
  }

  return '<input' . drupal_attributes($element ['#attributes']) . ' />';
}

请注意,此方法仅为您明确指定的URL添加类,并忽略可能作为URL的一部分包含的任何用户提供的参数。