<p>The brief answer is that the Settings &gt; Routes feature is perfect for that. You can add tokens as URL segments that are provided to any template you select as variables. The same can be accomplished with the <code>routes.php</code> config file.</p>
<p>For a very small organization that should work well. If not a very small org, here is another option to consider:</p>
<p>Nowadays I create a dedicated Authors channel separate from Craft Users. The Blog channel gets an Author relation field, and the Authors channel might get a User relation field. At the end of the day, an Author is metadata, and making it a system user is potentially a conflation that introduces other issues, e.g. external contributing authors that you don't want to give user accounts to.</p>
<p>Pros (esp for medium-to-large orgs):</p>
<ul>
<li>Author SEO is handled just like any other channel</li>
<li>Listing pages are also just like any other channel (problem solved)</li>
<li>Can have outside contributor profiles without creating User accounts</li>
<li>Author profile fields can be specialized without polluting User fields</li>
<li>An editor or content manager can publish articles for any Author</li>
<li>etc.</li>
</ul>
<p>Cons:</p>
<ul>
<li>Some custom module work to sync Author entries with Users if necessary</li>
</ul>
<p>The only possible magic to implement is assigning a related Author to the to a newly created entry based on the current user if that's the expected behavior. Also, if you want to keep common User fields and Author channel fields in sync, such as email, names, etc. then there's that.</p>
<p>Hope that helps!</p>

CC BY-SA 4.0
2021-12-22T14:18:03.990Z
Thank you so much! Your answer is incredibly well thought out and answers all scenarios.
Dario Zadro
CC BY-SA 4.0
2021-12-22T15:01:31.777Z
One question: how do you tie the query back to the Blog relationship? I have tried variations of `craft.entries.section('blog').relatedTo(authors).all()` with no luck. Am I missing something?
Dario Zadro
CC BY-SA 4.0
2021-12-22T15:40:09.773Z
I figured it out! For others that might have trouble, first, you must set a variable, such as `set author = entry.id` then use that variable in the `relatedTo` method.
Dario Zadro
CC BY-SA 4.0
2021-12-21T22:31:51.417Z
2021-12-21T22:31:51.417Z
Sam Hernandez
<p>I'm trying to understand the best or most common approach to creating unique author/user pages that list that user's blog entries.</p>
<p>This <a href="https://craftcms.stackexchange.com/questions/719/how-do-i-list-entries-from-a-single-author">question</a> was helpful for how to process the results.</p>
<p>However, I'm stuck in where to define the Template that will handle the user pages. Outside of creating a publicly accessible twig file, is there a better place and process to define a Template within the Admin settings?</p>
<p>With a general twig file, including SEO meta items becomes more challenging.</p>
<p>Thoughts on how to approach?</p>

<templating><users><author>
How to Create an Author Page?
# How to Create an Author Page?

(Asked by: username_0 on 2021-12-21)

I'm trying to understand the best or most common approach to creating unique author/user pages that list that user's blog entries.

This [question](https://craftcms.stackexchange.com/questions/719/how-do-i-list-entries-from-a-single-author) was helpful for how to process the results.

However, I'm stuck in where to define the Template that will handle the user pages. Outside of creating a publicly accessible twig file, is there a better place and process to define a Template within the Admin settings?

With a general twig file, including SEO meta items becomes more challenging.

Thoughts on how to approach?

**Tags:** templating, users, author

---

## 1 answers

### Answer by username_1 on 2021-12-21. Score: 2 | Accepted answer

The brief answer is that the Settings > Routes feature is perfect for that. You can add tokens as URL segments that are provided to any template you select as variables. The same can be accomplished with the `routes.php` config file.

For a very small organization that should work well. If not a very small org, here is another option to consider:

Nowadays I create a dedicated Authors channel separate from Craft Users. The Blog channel gets an Author relation field, and the Authors channel might get a User relation field. At the end of the day, an Author is metadata, and making it a system user is potentially a conflation that introduces other issues, e.g. external contributing authors that you don't want to give user accounts to.

Pros (esp for medium-to-large orgs):

* Author SEO is handled just like any other channel
* Listing pages are also just like any other channel (problem solved)
* Can have outside contributor profiles without creating User accounts
* Author profile fields can be specialized without polluting User fields
* An editor or content manager can publish articles for any Author
* etc.

Cons:

* Some custom module work to sync Author entries with Users if necessary

The only possible magic to implement is assigning a related Author to the to a newly created entry based on the current user if that's the expected behavior. Also, if you want to keep common User fields and Author channel fields in sync, such as email, names, etc. then there's that.

Hope that helps!

> **Comments:**
> **username_0**: Thank you so much! Your answer is incredibly well thought out and answers all scenarios.  
> **username_0**: One question: how do you tie the query back to the Blog relationship? I have tried variations of `craft.entries.section('blog').relatedTo(authors).all()` with no luck. Am I missing something?  
> **username_0**: I figured it out! For others that might have trouble, first, you must set a variable, such as `set author = entry.id` then use that variable in the `relatedTo` method.  

---

