Structure of this Wiki


Table of Contents

  1. Structure of this Wiki
    1. Site Infrastructure:
    2. Site Structure

Date: April 15, 2025 8:51 PM

Site Infrastructure:

This site is a Jekyll site, so the bones of it are based off of Jekyll functionality. Jekyll documentation can give insight into things like pages structure, how to change page layouts, front matter, etc.

Jekyll is a format which is meant to be readable, so it mostly uses Markdown, which is plain text with some readable style formatting. however there are some more ~coding~ style bits. For example, how to reference variables, other pages, etc. Here is a Jekyll cheat sheet for how to reference various data types within markdown pages using Jekyll. More tutorials can be found on Cloud Cannon

The theme of this site is just-the-docs. This is a common Jekyll theme, and created the template for the styles, layouts, header/footers, etc. Essentially everything in the _includes, _layouts and _sass files were started from base files from just-the-docs. If you’re interested in making your own Jekyll site with a different theme, there are many themes available at jekyllthemes.org, jekyllthemes.io, GitHub.com #jekyll-theme repos, and jamstackthemes.dev.

Site Structure

Pages & Navigation

The docs which appear in the left hand navigation are any .md files which start with:

---
title: <any title> 
	#This is the title which will appear on the nav bar
	#This doesn't have to match any content within the file
	#But is the label which is the 'parent' field for any nested pages
nav_order: 1 
	#This is the order they'll appear in the nav bar, lowest=first
nav_enabled: true 
	#default to true
	#if false the page will still be in the nav bar,
	# but the nav bar won't be *visible* on that page
parent: <any title>
	# if this references an existing 'title' field, the doc will be 
	# located as a nested doc under that doc in the nav bar
---

If two parents have the same title, but different grandparents, you can set their grand_parent titles to distinguish between their parents. The grand_parent title needs to be the same as the parent of the parent.

--
title: T
parent: S
grand_parent: X
---
--
title: T
parent: S
grand_parent: Y
---

Table of Contents

X ├──S │ └── T Y ├──S │ └── T

Config File

The _config.yml file controls everything which is site-universal. For example, the color scheme, header and footer, and

These are set in the _config.yml file, because they span every page. Note: any changes to _config.yml file won’t be seen until you restart the server (if hosting locally)

  • The logo (on the upper left) is set here:

      # Set a path/url to a logo that will be displayed instead of the title
      logo: "/assets/images/logo_circle.png"
    
  • The link (on the upper right) to our repository + text is set here:

      # Aux links for the upper right navigation
      aux_links:
        "This Repository on Github":
          - "https://github.com/HolmesLab/holmeslab"
    
  • This enables that the navigation bar is always seen

      # Enable or disable the side/mobile menu globally
      nav_enabled: true
    
  • This adds external links into the navigation bar

      # External navigation links
      nav_external_links:
        - title: Holmes Lab Website
          url: https://holmeslab.rutgers.edu/ 
    
  • This sets footer content

      # Footer content
      # appears at the bottom of every page's main content
        
      # Back to top link
      back_to_top: true
      back_to_top_text: "Back to top"
        
      footer_content: 'Copyright &copy; 2025 Avram Holmes. Distributed by an <a href="https://github.com/just-the-docs/just-the-docs/tree/main/LICENSE.txt">MIT license.</a> <a href="https://www.netlify.com/">This site is powered by Netlify.</a>'
    

Folders & Files — Legend

holmeslab #Repo name + site name, so makes our link HolmesLab.github.io/holmeslab
├── 404.html # Shows up when a link points to non-existent page
├── Gemfile # This has info for what jekyll file you're using and versioning
├── Gemfile.lock # This is versioning, automatically created by updating Gemfile
├── README.md # This will show up on the front page of the repo
├── _config.yml # This controls site-wide aspects of jekyll formatting

THIS is likely the only folder you’ll change. The docs folder contains all the pages.

All navigation in the site (defined by each file’s frontmatter) should be reflected in the folder structure, for readability and organization All folders need an index.html which will be the ‘homepage’ for that section The ‘title’ field of the index.html front matter will be what files within that section reference as

'parent'
│   ├── docs
│   │   ├── Folder # folder titles/naming = for readability, isn't relevant to site filepaths or links
│   │   │   ├── Subfolder
│   │   │   │   └── index.html # index.html means the homepage for a certain section
│   │   │   │   └── page.html # this means the site URL will be holmeslab.github.io/docs/page
│   │   ├── Lab Space at CAHBIR
│   │   │   ├── CAHBIR E-Mailing List SOP
│   │   │   │   └── index.html
│   │   │   │   └── page.html
│   │   │   ├── pictures_folder 
│   │   │   │   ├── Screenshot1.png # images in index.html or page.html
│   │   │   │   ├── Screenshot2.png
│   │   │	# The name of the file with images will be referenced directly by pages, so be careful changing the name of any folders because then those references in files will also need to be changed
│   ├── favicon.ico # This is the icon which goes at the tab header on browsers
│   ├── index.html # This is the home page of the website
│   ├── robots.txt
│   └── sitemap.xml

This folder is css for specific website items/parts, anything you see which is dynamic (aka not the website layout). Only change these if you’re familiar with css coding or if you have a specific small change you need to do.

├── _includes
│   ├── components
│   │   ├── aux_nav.html 
│   │   ├── breadcrumbs.html
│   │   ├── children_nav.html
│   │   ├── footer.html
│   │   ├── header.html
│   │   ├── mermaid.html
│   │   ├── nav
│   │   │   ├── children.html
│   │   │   ├── links.html
│   │   │   ├── pages.html
│   │   │   └── sorted.html
│   │   ├── search_footer.html
│   │   ├── search_header.html
│   │   ├── sidebar.html
│   │   └── site_nav.html
│   ├── css 
│   │   ├── activation.scss.liquid
│   │   ├── callouts.scss.liquid
│   │   ├── custom.scss.liquid
│   │   └── just-the-docs.scss.liquid
│   ├── favicon.html # This is the code which assigns favicon.ico file to be image which is on the tab
│   ├── fix_linenos.html 
│   ├── footer_custom.html
│   ├── head.html
│   ├── head_custom.html
│   ├── header_custom.html
│   ├── icons
│   │   ├── code_copy.html
│   │   ├── document.html
│   │   ├── expand.html
│   │   ├── external_link.html
│   │   ├── icons.html
│   │   ├── link.html
│   │   ├── menu.html
│   │   └── search.html
│   ├── js
│   │   └── custom.js
│   ├── lunr
│   │   ├── custom-data.json
│   │   └── custom-index.js
│   ├── mermaid_config.js
│   ├── nav_footer_custom.html
│   ├── search_placeholder_custom.html
│   ├── title.html
│   ├── toc_heading_custom.html
│   └── vendor
│       └── anchor_headings.html

This folder is html for website layout templates. You can create new templates and put them in here, and then assign pages to that template by putting layout:template_name.html into the front matter Currently all pages default to minimal.html You can alter the default page layout in the config file – BUT this will change the layout of ALL pages which don’t have a layout specified, so be careful!

├── _layouts
│   ├── about.html
│   ├── default.html
│   ├── home.html
│   ├── minimal.html
│   ├── page.html
│   ├── post.html
│   ├── table_wrappers.html
│   └── vendor
│       └── compress.html

This is is the scss code for all teh things on the page which can be input by the user in the markdown files. For example, buttons, table of contents, typography, color scheme, etc.

├── _sass
│   ├── base.scss
│   ├── buttons.scss # Can change button formatting or add new buttons
│   ├── code.scss
│   ├── color_schemes # Can change color_scheme style or add color_scheme
│   │   ├── dark.scss
│   │   ├── legacy_light.scss
│   │   └── light.scss
│   ├── content.scss
│   ├── custom
│   │   ├── custom.scss
│   │   └── setup.scss
│   ├── labels.scss # Can change button formatting or add new buttons
│   ├── layout.scss
│   ├── modules.scss
│   ├── navigation.scss
│   ├── print.scss
│   ├── search.scss # Can change search formatting or add new buttons
│   ├── skiptomain.scss # Can change 'skip to main' formatting
│   ├── support
│   │   ├── _variables.scss
│   │   ├── mixins
│   │   │   ├── _buttons.scss
│   │   │   ├── _layout.scss
│   │   │   ├── _typography.scss
│   │   │   └── mixins.scss
│   │   └── support.scss
│   ├── tables.scss # Can change table formatting
│   ├── typography.scss
│   ├── utilities
│   │   ├── _colors.scss
│   │   ├── _layout.scss
│   │   ├── _lists.scss
│   │   ├── _spacing.scss
│   │   ├── _typography.scss
│   │   └── utilities.scss
│   └── vendor
│       ├── OneDarkJekyll
│       │   ├── LICENSE
│       │   └── syntax.scss
│       ├── OneLightJekyll
│       │   ├── LICENSE
│       │   └── syntax.scss
│       └── normalize.scss
│           ├── README.md
│           └── normalize.scss

This is the place where media for the site is stored, including images, javascript and css themes.

├── _site
│   ├── 404.html
│   ├── LICENSE
│   ├── assets
│   │   ├── css
│   │   │   ├── just-the-docs-dark.css
│   │   │   ├── just-the-docs-default.css
│   │   │   ├── just-the-docs-head-nav.css
│   │   │   ├── just-the-docs-light.css
│   │   │   └── style.css
│   │   ├── images
│   │   │   ├── android-chrome-192x192.png
│   │   │   ├── android-chrome-512x512.png
│   │   │   ├── apple-touch-icon.png
│   │   │   ├── favicon-16x16.png
│   │   │   ├── favicon-32x32.png
│   │   │   ├── favicon.ico
│   │   │   ├── large-image.jpg
│   │   │   ├── logo_circle.png
│   │   │   ├── logo_department.png
│   │   │   └── small-image.jpg
│   │   └── js
│   │       ├── just-the-docs.js
│   │       ├── search-data.json
│   │       └── vendor
│   │           └── lunr.min.js