ou can easily create a staff directory custom collection, in three fairly easy steps:
- Create a custom collection form
- Add some data into your collection
- Create a custom collection page, and paste in the page code
Create a custom collection form
Go to Settings -> Custom Collection, and add a custom collection.
Note: it is important that you use these exact field types and names so that the import and the code below will function properly.
Name the directory "Staff Directory."
Add the following fields and be sure to name them EXACTLY as specified bellow:
Type: | Name: | Notes: |
Image | Image | |
Name | Name | |
Short Answer | Title | |
Phone | Phone | |
Drop-down |
Category |
Include these three options: Principal Teacher Support Staff |
Paragraph | Description |
Before you save the form, you'll need to enter some information into the "Settings" tab:
- HTML Identifier: staff
- Icon: your choice. I suggest: fa-user
- Singular Name: Staff
- Title field: None
- Featured image field: None
- API Access: none
Now, you can save the custom collection. Notice you will also see this custom collection in your dark gray Admin sidebar on the left side of the screen. Find the new "Staff Directory" option and select it to go to the collection.
Add some personal data into your collection
As you saw with the examples of the fields above, you will need a photo and some data about each person to be in the Staff Directory Collection. Using the "Add Staff" button at the top right, add several people into your collection. This will be important before proceeding so that we will have something to view when we are done with the next section.
Create a custom collection page, and paste in the page code
Now decide where you want the Staff Directory page to be accessible to your visitors. You can navigate to the parent page, and then click "Create" to make a new child page at that location.
- Copy the "Staff Directory Page Code" below.
- Add a new page to your website.
- Choose the "Collection" page type.
- Select the layout you want to use for the page.
- Add a descriptive Title like "Staff Directory".
- Select the "Staff" custom collection.
- Click the blue "Edit" field in the center of the page, and paste the "Staff Directory Page Code" from bellow into this edit area.
- Click save.
- Finally, click the Publish button.
Staff Directory Page Code:
<style> .list-entry-container { display:flex; flex-flow:row wrap; justify-content: space-between; } .list-entry { margin: 15px 30px 15px 0; width: 20%; } img { border-radius:7px; -moz-border-radius:7px; -webkit-border-radius:7px; border: 1px solid #ddd; } </style> <h1>Principal</h1> <div class="list-entry-container"> {% for staff in su.collection( "staff" ).sort( "category" ).sort( "name.last" ) %} {% if staff.category == "Principal" %} <div class="list-entry"> <img src="{{ staff.image.fill( 172,180 ) }}" width="100%"/> <h4>{{ staff.name.first }} {{ staff.name.last }}</h4> <div>{{ staff.title }}</div> <div><a href="tel:{{ staff.phone }}">{{ staff.phone }}</a></div> <div><a href="mailto:{{ staff.email }}">{{ staff.email }}</a></div> <div>{{ staff.description }}</div> </div> {% endif %} {% endfor %} </div> <h1>Teachers</h1> <div class="list-entry-container"> {% for staff in su.collection( "staff" ).sort( "category" ).sort( "name.last" ) %} {% if staff.category == "Teacher" %} <div class="list-entry"> <img src="{{ staff.image.fill( 172,180 ) }}" width="100%"/> <h4>{{ staff.name.first }} {{ staff.name.last }}</h4> <div>{{ staff.title }}</div> <div><a href="tel:{{ staff.phone }}">{{ staff.phone }}</a></div> <div><a href="mailto:{{ staff.email }}">{{ staff.email }}</a></div> <div>{{ staff.description }}</div> </div> {% endif %} {% endfor %} </div> <h1>Support Staff</h1> <div class="list-entry-container"> {% for staff in su.collection( "staff" ).sort( "category" ).sort( "name.last" ) %} {% if staff.category == "Support Staff" %} <div class="list-entry"> <img src="{{ staff.image.fill( 172,180 ) }}" width="100%"/> <h4>{{ staff.name.first }} {{ staff.name.last }}</h4> <div>{{ staff.title }}</div> <div><a href="tel:{{ staff.phone }}">{{ staff.phone }}</a></div> <div><a href="mailto:{{ staff.email }}">{{ staff.email }}</a></div> <div>{{ staff.description }}</div> </div> {% endif %} {% endfor %} </div>