I am a newcomer to Ghost CMS and I’m really thrilled about it.
I come from an 8y old WP and was looking for something more straightforward, fast, sleek. I’m still in the process of setting up my Ghost blog, after quite a painful migration (zip archive was too big for import, could not increase PHP limits enough, ended up with uploading the json after some fixes in it, managed to clean most tags, still have to reupload and integrate my pictures).
Context:
Sorry if it’s been answered before but I could not find the fix.
I’m trying to use collections in order to separate my content at URL level and it went well. But it kinda messed my pagination up.
I used another template just to be sure it would not interfere but I actually duplicated index.hbs and renamed the copy.
My problem:
The / condition being last, it misses every post already filtered before. If you go on my blog, the homepage is / and calling index.hbs, and the first page is empty.
I would like my index to show all the posts, newest first, keep the pagination full and working, but also keep the ability to use the collections with the distinct URLs.
My question:
Do you know how I can achieve this? Should I be using channels? If so, can I keep my automatic primary-tag based URL categories for the related posts?
Thank you for your time/help and kudos to the team.
Hey @pianographe
Short answer is yes, this is what Channels is for . Channels let you produce post list views of any posts but it doesn’t make them exclusive, and lets the posts respect their collection permalinks. More documentation on Channels can be found here: https://ghost.org/docs/api/v3/handlebars-themes/routing/channels/
It’s a filtered slice of content from across your site, without modifying the content itself.
Thank you for your quick answer, seems like it’s working as expected!
Edit:
Actually, I found out that my posts URLs are not synced anymore to the primary-tag they belong to, they have the permalink structure mywebsite[dot]com/$slug
I would like to get a “category” or so in the URL.
For example, I have several posts about photography (primary) tagged “photo”. I’d like them to:
be displayed with all the other posts on the Index page, order newest first
be channeled though a “photo” tag to quickly access them
get a path like mywebsite[dot]com/photo/my-post-about-photo-nb1(just like with the collections)
Is there any way to have this “hybrid” feature? 1 and 2 are OK but 3 is missing now…
I tried to use the permalink attribute but it had no effect so I commented involved lines. I then rolled back (to collections) as having structured URL is very important to me (I like my stuff sorted and I’m using Disqus with old comments from WP that can only be displayed if the URL is the same).
At the end of the day, my preferred choice would be using collections and having the possibility to display a homepage listing all the posts, no matter in which collection they are, so that visitors could identify the latest publications at a glance
routes:
/:
controller: channel
template: index
collections:
/musique/:
permalink: /musique/{slug}/
template: custom-collections
filter: primary_tag:musique
/photo/:
permalink: /photo/{slug}/
template: custom-collections
filter: primary_tag:photo
/moto/:
permalink: /moto/{slug}/
template: custom-collections
filter: primary_tag:moto
/carnets-de-voyage/:
permalink: /carnets-de-voyage/{slug}/
template: custom-collections
filter: primary_tag:carnets-de-voyage
/les-petites-videos/:
permalink: /les-petites-videos/{slug}/
template: custom-collections
filter: primary_tag:les-petites-videos
# NOTE: if you plan on having posts without any of the above primary tags, you need to add a collection here to "catch" the posts that weren't caught by the other filters
taxonomies:
tag: /{slug}/
author: /auteur/{slug}/
I’m not 100% sure if you need to add a filter for the route
Something may have happened with your migration from WordPress. Either the images weren’t in the export, or you didn’t copy over all your photos from the server you had WordPress installed on.
The image paths don’t get changed when they are ported over to Ghost, however Ghost will automatically produce additional image sizes for performance when the images are requested
Yes, it’s perfectly normal, thank you for your concern.
I exported the full WP blog via the tool, but the result was 720MB and my PHP upload limit was 512MB, without exception (confirmed with my web support) because I’m on shared hosting (#teamPassenger).
Therefore, I used the json file alone to at least import the articles, knowing that I would have to redo all the media management. Luckily for me, I don’t have hundreds of articles, but mainly a few long travel diaries with pictures (like this one: Carnet de Voyage : New York City et la Floride).
I could have recovered the tree structure and the files of the WP installation to keep the same paths, but I preferred to recover only the original photos and reinstall them cleanly on Ghost, to free myself from the “chaotic” management of WP with its 6 to 10 different dimensions for each image. I see it as an opportunity to go back in my memories and to have a well laid out content, even if it will take me some time.
Hello, I refer to this comment you added to the routes.yml…is it a requirement that every post be caught by a collection? or can a post be “orphaned”. I know a post can only belong to 1 collection, but can it not belong to any collection and still be visible just with its URL?
A post that isn’t part of a collection will get assigned a url like yoursite.com/p/longrandomstringhere. That’s probably not desirable behavior, so it’d be wise to provide a collection to catch any posts that aren’t selected by another collection.
ok, thanks, so it wouldn’t take the slug assigned in Admin?
can two collections have the same permalink, say domain.com/ ?
does a collection necessarily need to have a feed that is visible to the user at the permalink driven by the template?
in other words, if a visitor lands on an article on my website via search and I want to drive them to a landing page without distracting them with an entire feed of articles, is there a way?
To expand on this, published posts that are not part of a collection have undefined behavior, but generally result in an error. I’m not sure if these posts intentionally point to the preview page (which redirects to the post URL for published posts → /404/)
Yes. Collections define where a post listing will be included - from my example, /musique/, /photo/, etc. will all show the posts from their respective collection on that page.
I kind-of answered this question with my previous statement. I guess you can redirect a collection path to something else if you don’t want it to be used.
In this case the visitor would see the single post, not the post feed. For example, https://ghost.org/changelog/internal-linking/ is a single post, and https://ghost.org/changelog/ is a collection*
*Note that Ghost’s Changelog is a sub-site and not a custom collection of https://ghost.org
Thanks, wanted to make sure I understand: in your original example, I would have no choice but to specify a collections path: like /musique/ (as below) and then I’d have to redirect that path using the redirects.yml file?
Could I instead modify the theme so that it doesn’t list a collection of posts?