{% if page.author_profile or layout.author_profile or page.sidebar %}
  <div class="sidebar sticky">
      {% if page.lang == 'cn' %}
      <div class="back-to-home"><a href="/cn/">{{ site.data.ui-text[page.lang].breadcrumb_home_label | default: "Home" }}</a> > {{ page.title }}</div>
      {% else %}
      <div class="back-to-home"><a href="/">{{ site.data.ui-text[page.lang].breadcrumb_home_label | default: "Home" }}</a> > {{ page.title }}</div>
      {% endif %}
  {% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %}
  {% if page.sidebar %}
    {% for s in page.sidebar %}
      {% if s.image %}
        <img src=
        {% if s.image contains "://" %}
          "{{ s.image }}"
        {% else %}
          "{{ s.image | absolute_url }}"
        {% endif %}
        alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
      {% endif %}
      {% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
      {% if s.text %}{{ s.text | markdownify }}{% endif %}
    {% endfor %}
    {% if page.sidebar.nav %}
      {% include nav_list nav=page.sidebar.nav %}
    {% endif %}
  {% endif %}
  </div>
{% endif %}
