如何在面包屑moodle 2.7中更改renderers.ph中的文本?

时间:2014-11-04 15:52:48

标签: navbar moodle breadcrumbs

我正在尝试将home的文本更改为导航栏(Moodle 2.7)的面包屑中的fontAwesome图标。

我使用Shoelace主题中的文件覆盖了core_render.php。

我在初始化breadcrumbs数组后添加了一行以更改$breadcrumbs[0];那只做了一半的工作。图标替换了文字,但href标记的<a>属性并不符合我的预期;它遵循导航,而不是家庭的URL。

我不明白这个链接的位置。如何在保留主页URL的同时使用fontAwesome图标?

以下是代码:

class theme_ubo_core_renderer extends theme_bootstrapbase_core_renderer {
    /*
     * This renders the navbar.
     * Uses bootstrap compatible html.
     */
    public function navbar() {
        $items = $this->page->navbar->get_items();
        if (right_to_left()) {
            $dividericon = 'fa-angle-left';
        } else {
            $dividericon = 'fa-angle-right';
        }
        $divider = html_writer::tag('span', html_writer::start_tag('i', array('class' => 'fa '. $dividericon .' fa-lg')) .
                        html_writer::end_tag('i'), array('class' => 'divider'));
        $breadcrumbs = array();
        foreach ($items as $item) {
            $item->hideicon = true;
            $breadcrumbs[] = $this->render($item);
        }

        //Change the first entry

        $breadcrumbs[0]='<a href=""><i class="fa fa-home fa-2x"></i></a>';


        $list_items = html_writer::start_tag('li') . implode("$divider" . html_writer::end_tag('li') .
                        html_writer::start_tag('li'), $breadcrumbs) . html_writer::end_tag('li');
        $title = html_writer::tag('span', get_string('pagepath'), array('class' => 'accesshide'));
        return $title . html_writer::tag('ul', "$list_items", array('class' => 'breadcrumb'));
    }
}

1 个答案:

答案 0 :(得分:1)

该行:

$breadcrumbs[] = $this->render($item); 

将调用函数render_navigation_node($item)(我认为 - 我没有经过双重检查)

该函数接收面包屑中的每个项目,并将其从navigation_node实例转换为字符串。

如果你只想强迫第一项成为“家”的链接,使用你选择的图标,你可能会逃脱:

$breadcrumbs[0] = html_writer::link(new moodle_url('/'), html_writer::tag('i', '', array('class' => 'fa fa-home fa-2x')));

另一种方法是看看您是否可以更改内容&#39; $ items数组中的第一个$项目是你想要的图标,然后循环并在每个项目上调用render()。