---
layout: none
search: exclude
---
{% include custom/conditions.html %}

{% if site.project == "mydoc_writers" or site.project == "mydoc_designers" %}
{% for entry in sidebar %}
{% for subcategory in entry.subcategories %}
{% for item in subcategory.items %} {% if subcategory.type != "frontmatter" %}
{{item.url | replace: "/mydoc/","" | replace: ".html", ""}}:
  title: "{{item.title}}"
  url: "{{item.url | prepend: '..' }}"
  link: "<a href='{{item.url | prepend: ".." }}'>{{item.title}}</a>"
{% endif %}
{% for thirdlevel in item.thirdlevel %}
{% for deeplevel in thirdlevel.thirdlevelitems %} {% if thirdlevel.type != "frontmatter" %}
{{deeplevel.url | replace: "/mydoc/","" | replace: ".html", ""}}:
  title: "{{deeplevel.title}}"
  url: "{{deeplevel.url | prepend: '..' }}"
  link: "<a href='{{deeplevel.url | prepend: '..' }}'>{{deeplevel.title}}</a>"
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endfor %}

{% for entry in topnav %}
{% for subcategory in entry.subcategories %}
{% unless subcategory.external_url %}
{{subcategory.url | replace: "/mydoc/","" | replace: ".html", ""}}:
  title: "{{subcategory.title}}"
  url: "{{subcategory.url | prepend: '..' }}"
  link: "<a href='{{subcategory.url | prepend: '..'" }}'>{{subcategory.title}}</a>"
{% endunless %}
{% endfor %}
{% endfor %}

{% for entry in topnav_dropdowns %}
{% for subcategory in entry.subcategories %}
{% for subitem in subcategory.items %}
{% unless subitem.external_url %}
{{subitem.url | replace: "/mydoc/","" | replace: ".html", ""}}:
  title: "{{subitem.title}}"
  url: "{{subitem.url | prepend: '..' }}"
  link: "<a href='{{subitem.url | prepend: '..' }}'>{{subitem.title}}</a>"
{% endunless %}
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
