请帮助我解决我的问题。
我在数据库中有一个带有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>
请帮助。
答案 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";
}