2014-11-04 52 views
0

我正試圖將家中的文本更改爲導航欄(Moodle 2.7)的麪包屑中的fontAwesome圖標。如何更改麪包屑中的renderers.ph中的文本,moodle 2.7?

我使用Shoelace主題中的文件覆蓋core_render.php。

我在麪包屑數組初始化之後添加了一行,以便更改$breadcrumbs[0];那只是做了一半的工作。該圖標替換了文本,但<a>標籤的href屬性並非我所期望的;它遵循導航,而不是家庭的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

行:

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

會調用函數render_navigation_node($item)(我想 - 我還沒有仔細檢查)

這個函數會爲每個itemcore中的項目,並將其從navigation_node實例轉換爲字符串。

如果你只是想迫使第一項是一個鏈接到「家」,與您所選擇的圖標,你也許可以矇混過關:

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

另一種方法是,看是否可以更改在循環並調用每個項目的render()之前,$ items數組中第一個$ item的'content'是您想要的圖標。

+0

謝謝!這就像我想要的。另一個是改變lang文件夾中的字符串,但我更喜歡你的解決方案,它保持在同一個地方。 – 2014-11-04 19:49:14