New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow duplicate entry slugs #3671
Conversation
…t will now actually break tests.
…were really only used in v2
Co-authored-by: Jason Varga <jasonvarga@users.noreply.github.com>
…le with a colon but isn't expecting params to be typed
sorry to be this guy, but is this planned to be released in the next two weeks by any chance? have to launch a client site and would very much prefer to be able to use same slugs feature. if thats not realistic, no problem, I will need to build a workaround for the time being. |
Unless something else important pops up, yes that's the plan. |
…ri() will get a fresh uri every time.
Tried to solve this, but turned into a bigger can of worms. We're going to ship this feature without a URI column for now, but circle back to this shortly. It's not a big deal yet because if you're going to have duplicate slugs, you're probably going to be viewing the collection in tree view. |
I am getting errors, when trying to use the same slug on two different sites. The weird part: It shows two different error messages on two pages in the same collection. One is I have two sites set up When I log the $uri here: https://share.getcloudapp.com/lluNyxWL it logs the same URI for both sites. My multisite setup is with folders asdf.com/test and asdf.com/en/test. I think the URI of de |
When you change the slug of the |
I just tested the PR #3808 and while I can save with the same slug, I can't change the slug in either locale anymore. After the save and a reload the old value is shown |
When you upgrade, we keep the unique slug validation. Did a new |
I removed that rule, but couldn’t change the slug anymore. Reverted back to the previous version. Also had to rename the files manually. I have one page with the same slug in the root of the tree. Couldn’t manage to get Statamic to add the number to the filename |
That was hard to follow. I'm going to merge #3808 and release it. You can open a new issue if you still have trouble. |
In this PR I am confused how I should load terms when I only have the slug from the yaml. |
Using Term::findBySlug myself, there is no alternative afaik |
|
Makes sense 🤦 Why can't we just keep the |
Fixes #714
Filename suffixes
You can now have two (or more) entries with the same slug and date combination by appending a suffix.
The suffix is a dot, then anything:
or with dates:
The suffix can be anything if you're creating files by hand, but when using the control panel or creating entries programmatically, it'll use incrementing numbers. (It checks from zero though, so if you have
.1
and.3
, it'll make a2
, not a4
.)URI Validation
Even though slugs no longer need to be unique, the URIs need to be.
Entries now get duplicate URI validation. The message will be shown on the slug field.
When you submit a tree, it'll check whether there are any duplicate URIs and prevent saving.
Backwards compatibility
Technically, the removal of unique slug validation could be considered a breaking change, so this PR includes an update script that'll add unique slug validation to all collection blueprints.
If you actually wanted unique slugs, the automatically added rule will keep this behavior.
If you don't want the slugs to be unique, then you can remove the rule that gets added.
Deprecations
Entry::findBySlug()
has been deprecated. Since the concept of a slug is no longer really unique, finding by one makes even less sense. You could have already had entries with duplicate slugs (if the dates were different) so it was already a little weird. We don't use this method anywhere.Also deprecated
Term::findBySlug()
for method consistency. We don't use it anywhere either.Todo
slug
should actually be uniqueness of the uri.unique
validation rule toslug
fields to keep existing sites working the same way.AddUniqueSlugValidation::shouldUpdate
, if necessary.