Refs: https://github.com/TryGhost/Ghost/issues/9528 (YAML Settings), https://github.com/TryGhost/Ghost/issues/9192 (Routing re-write), https://github.com/TryGhost/Ghost/pull/9550 (Url Service).
Ghost's Routing has always been almost entirely static and hard-coded. The only config we've offered is the option to add dates to permalinks, but that setting is probably my least favourite part of Ghost 馃槀
People close to the project will have heard a lot about a mysterious feature called "channels", which was an attempt to expose more configuration around lists of posts. This has been working behind the scenes, but we haven't been clear on how to expose the functionality: Apps? Config? UI?
Early this year we sat down and rethought routing from the ground up with a view to answering the following questions: How can we make it possible to solve all the common routing use cases? How do we expose functionality to our users? How does this fit in with Apps? And where the fuck do Channels fit into all of this?
Top 3 common use cases we want to solve:
There are 3 main problems we have with trying to reach these use cases:
We think we have the answers, however the theory is never quite the same as the practice. This issue represents our current thinking at the time of writing and is very subject to change!
In https://github.com/TryGhost/Ghost/issues/9528 we added the ability to customise Ghost through YAML files that live in content/settings. The first file that will live here will be routes.yaml, and this will be the gateway to all things dynamic routing. This solve the configuration problem.
The solution to everything else is the introduction of a URL service and a huge rewrite of all the code that generates content for Ghost blogs 馃槄
Beta Goals
In the first beta version, by editing content/settings/routes.yml it will be possible to:
/blog/*./tag/:slug/ -> /category/:slug/Once the first beta goes out we will be looking for people to test their routing use-cases. At that point, we'll publish some documentation on how the default routes.yml file is structured and how to define custom routes and collections within the limitations.
Tracked tasks
Overall Goals
This issue will be closed when we achieve the following:
_Note: There are some extensions to the dynamic routing behaviour that are known but not covered by this issue, which include custom controllers and custom taxonomies_
馃挕 Please direct all questions & discussion to the forum. This issue will be used for collecting bugs & use cases once the beta goes out.
Will this feature be in ghost-free too?
@fernandops26 Ghost self-hosted and Ghost (Pro) run [essentially] the same exact code; features like dynamic routing will be available in both Ghost (Pro) and Ghost self-hosted.
Those two points are killers:
This first point will open a whole new market for custom "landing page" manages within Ghost. Love it!
FYI: We will officially announce Dynamic Routing Beta in Ghost 2.0.
Dynamic Routing Beta was shipped in Ghost 1.24.0. I am closing this issue for now. I extracted two sub features, which we aren't able to achieve yet.
Any further improvement or bug should be tracked separately 馃懟
Most helpful comment
FYI: We will officially announce Dynamic Routing Beta in Ghost 2.0.