def breadcrumbs(self, tree_alias, context):
tree_alias, sitetree_items = self.init_tree(tree_alias, context)<EOL>if not sitetree_items:<EOL><INDENT>return '<STR_LIT>'<EOL><DEDENT>current_item = self.get_tree_current_item(tree_alias)<EOL>breadcrumbs = []<EOL>if current_item is not None:<EOL><INDENT>context_ = self.current_page_context<EOL>check_access = self.check_access<EOL>get_item_by_id = self.get_item_by_id<EOL>def climb(base_item):<EOL><INDENT>"""<STR_LIT>"""<EOL>if base_item.inbreadcrumbs and not base_item.hidden and check_access(base_item, context_):<EOL><INDENT>breadcrumbs.append(base_item)<EOL><DEDENT>if hasattr(base_item, '<STR_LIT>') and base_item.parent is not None:<EOL><INDENT>climb(get_item_by_id(tree_alias, base_item.parent.id))<EOL><DEDENT><DEDENT>climb(current_item)<EOL>breadcrumbs.reverse()<EOL><DEDENT>items = self.apply_hook(breadcrumbs, '<STR_LIT>')<EOL>self.update_has_children(tree_alias, items, '<STR_LIT>')<EOL>return items<EOL>
Builds and returns breadcrumb trail structure for 'sitetree_breadcrumbs' tag.

        :param str|unicode tree_alias:
        :param Context context:
        :rtype: list|str