如何在菜单链接中添加img标签?

时间:2019-07-04 08:33:45

标签: php templates drupal menu

请帮助我解决我的问题。 我在数据库中有一个带有mlid(菜单链接ID)列和path列的表-每个主链接菜单都有一个图像。我创建了自定义模块,该模块在菜单链接编辑表单中添加了一个文件上传字段,并将其mlid(菜单链接ID)和path(图像的路径)保存到数据库中。

我的问题是:如何在菜单项中显示图像?我只想为每个菜单项添加一个<img src="..">标签。 代码:

<ul class="menu">
  <li>
    <a>First menu item</a>
    // <img>HERE I WISH TO GENEARATE AN IMG TAG</img>
  </li>
  <li>
    <a>Second menu item</a>
    // <img>HERE I WISH TO GENEARATE AN IMG TAG</img>
  </li>
...
</ul>

请帮助。

1 个答案:

答案 0 :(得分:1)

您可以在模块中实现preprocess hook以便将图像路径加载到传递到模板的$variables数组中:

function MODULE_preprocess_menu_link(&$variables) {
  $element = &$variables['element'];
  $mlid = $element['#original_link']['mlid'];

  # Retrieve image source (if any) from database/original_link object.
  $element['image_src'] = _your_helper_function($mlid);
}

然后,您只需要覆盖模板功能,即可根据是否设置了图像源来输出标签。

在您的主题的template.php 中,创建您自己的THEME_menu_link()函数(或者,如果您的当前主题已经覆盖了它,请小心地将逻辑添加到现有主题中)-例如,以下内容覆盖default implementation的主菜单):

function THEME_menu_link__main_menu($variables) {
  $element = $variables['element'];
  $sub_menu = '';

  if ($element['#below']) {
    $sub_menu = drupal_render($element['#below']);
  }

  $output = l($element['#title'], $element['#href'], $element['#localized_options']);

  if (!empty($element['image_path'])) {
    $output .= '<img src="' . $element['image_path'] . '" />';
  }

  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
相关问题