0

我有一个带有一些简单代码的自定义模块:

function theme_extras_form_alter(&$form, &$form_state, $form_id) {
   if ($form['#id'] == 'views-exposed-form-blog-posts-page') {
      $form['field_post_type_tid']['#options']['All'] = t('Refresh');
      $form['field_post_type_tid']['#options']['3'] = t('<i class="icon-twitter"></i>');
   }
}

第一个替换效果很好,但第二个呈现为纯文本,而不是 html。我需要为每个表单元素执行此操作(事实上,刷新甚至会被替换为更远的图标)。我在这里缺少什么来正确输出html?

4

1 回答 1

0

我决定使用 jQuery 来解决这个问题,因为使用自定义模块实现预期效果并不实用,而且实际上可能有些过头了。以下是使我到达那里的重构不佳但有效的代码:

(function($) {

$(document).ready(function(){

    var link = '<a href="http://project.local/blog-posts?field_blog_post_type_tid=',
        id   = '#edit-field-blog-post-type-tid-';

    $(id + 'all').html(link + 'All"><span class="icon-container"><i class="icon-undo"></i></span></a>');
    $(id + '3').html(link + '3"><span class="icon-container"><i class="icon-music"></i></span></a>');
    $(id + '2').html(link + '2"><span class="icon-container"><i class="icon-camera"></i></span></a>');
    $(id + '5').html(link + '4"><span class="icon-container"><i class="icon-quote-right"></i></span></a>');
    $(id + '1').html(link + '1"><span class="icon-container"><i class="icon-file-text-alt"></i></span></a>');
    $(id + '4').html(link + '4"><span class="icon-container"><i class="icon-film"></i></span></a>');
});

})(jQuery);
于 2013-08-08T03:20:56.993 回答