示例#1
0
def make_page_breadcrumb(page: Post, site_structure: PageDir):
    breadcrumb = page.meta[page.default_lang].get("breadcrumb")
    # TODO should this compare to "False"? (a string?)
    if breadcrumb is None or breadcrumb != "False":
        return generate_breadcrumb(page.permalink(), site_structure)
    else:
        return None
示例#2
0
    def generate_index(self,
                       site: Nikola,
                       post: Post,
                       data: str = None,
                       lang: str = None,
                       depth: int = 1) -> Tuple[str, List[str]]:
        """
        Generate a hierarchical list of pages when shortcode is invoked.

        Ouput: a HTML string (nested <ul> elements containing <a> elements)
        and a list of file dependencies. Depth determines how far the index
        recurses. Set depth to 0 to recurse as much as possible.
        """
        if not post.metadata.is_index_page:
            raise RuntimeError(
                f'Attempt to generate index on "{post.permalink()}" which is not an index page!'
            )

        # index pages can list contents of arbitrary directory
        # find first which directory the page refers to
        index_root: PageDir = site.GLOBAL_CONTEXT["metadata"].structure()
        index_path: str = post.meta[post.default_lang]["index_path"]
        if index_path == ".":
            for directory_name in split_path(post.permalink()):
                index_root = index_root.enter(directory_name)
        elif index_path != "/":
            for directory_name in split_path(index_path):
                index_root = index_root.enter(directory_name)

        self.logger.info(
            f"generating index structure for {post.permalink()} that starts in {index_path}"
        )
        html_result: str = generate_hierarchical_html(index_root, depth)

        # We need to regenerate indexes every time a page is added or removed.
        # We can not return wildcard paths or generally - paths which do not exist
        # but there is a hidden (undocumented) feature that does exactly this.
        # https://github.com/getnikola/nikola/issues/3293#issuecomment-523210046
        file_dependencies = ["####MAGIC####TIMELINE"]

        return html_result, file_dependencies
示例#3
0
 def _is_subpage(self, subpage: Post, page: Post):
     # permalink of subpage starts with page's permalink
     return subpage.permalink().startswith(page.permalink())