-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
Tags: Fixing routing #5105
Tags: Fixing routing #5105
Conversation
@@ -131,32 +131,23 @@ protected static function _findItem($needles = null) | |||
{ | |||
if (isset($item->query) && isset($item->query['view'])) | |||
{ | |||
$lang = ($item->language != '' ? $item->language : '*'); | |||
if (!isset(self::lookup[$lang])) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Hackwar can you add a clear line bevor the if statement
Moving this to Needs Review. Thanks |
Although I have not tested this, careful with this one. Until now we have advised users to not assign languages to Tags but rather make sure they are filtered by setting com_tags Options "Language Filter" to "current". |
I just tested, site gets broken with this error. Parse error: syntax error, unexpected '[', expecting '(' in *********/com_tags/helpers/route.php on line 136. Joomla 3.3.6 multilanguage - My tags are assosiated with languages. |
… com_tags_routing Conflicts: components/com_tags/helpers/route.php
Sorry, that was a stupid bug. Fixed it. |
No worries. 👍 Tested and it's working properly. The file is up and running live. We have some SEO issues with tags (like before).
I have also changed the title of the tag for signle tag view from H2 to H1. |
Regarding 1): That is the same behavior as before. The thing is, that this fixes a bunch of simple programming mistakes... This still needs a code review. 😄 |
Yes, tags if used properly, they have a big impact to SEO. Tags should be fixed. |
@ManuxGR As you already tested this, can you please detail your testing methodology? Also, it seems that you have an success test, but in http://issues.joomla.org/tracker/joomla-cms/5105 it is still logged as a failure... |
@smanzi the failure was before the fix. Is there a way to change it? And this doesn't fix nothing. It's just the same code updated - modernized. |
@ManuxGR Yes, to fix your "vote" just go to http://issues.joomla.org/tracker/joomla-cms/5105 login with GitHub and change your vote. |
alter your test as "Not tested" and after this as "tested successfully" |
While this fixes the TagsHelperRoute class up, the router is fixed in #5347. So please have a look there, too. Apply both PRs and it should make a world of difference. 😉 |
Thanks Hannes for your hard work on this important Joomla routing problem..Merry Christmas to you! |
@@ -88,14 +88,10 @@ public static function getTagRoute($id) | |||
} | |||
else | |||
{ | |||
if (!empty($needles) && $item = self::_findItem($needles)) | |||
$link = 'index.php?option=com_tags&view=tag&id=' . $id; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cause I'm an arse can we add a new line after above the if() statement please?
Maintainer Review: As there is no b/c being broken here and it's cleaning up the code hugely I'm happy with this in theory (note haven't tested). Please can we have some detailed test instructions tho :) |
Fixed your codestyle remark. As I wrote in my initial comment: I found this during a code review and don't have any idea which bugs I'm fixing with this... I just know that it is wrong... |
@@ -131,32 +128,23 @@ protected static function _findItem($needles = null) | |||
{ | |||
if (isset($item->query) && isset($item->query['view'])) | |||
{ | |||
$lang = ($item->language != '' ? $item->language : '*'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we have a new line in between this line and the if statement please for code style
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For you, I'd even add 2. 😉
@test couldn't find any issues with the patch when applied. Tried navigating around various tag views some attached to menu items some not. Merging. This comment was created with the J!Tracker Application at issues.joomla.org/joomla-cms/5105. |
I seriously don't know how this ever could have worked correctly...
We'll start by seeing that all tags that are associated with a language can not be reached, because they are stored in $lookup[$language][$view], but lookup later is only done on $lookup[$view]. So we are correcting this in a way that all tags are first of all associated with a language and then with a view. (See $lookup[$lang][$view])
Then we see that whatever we do, we override the caching of the lookup in line 151 anyway, so we can shorten that code tremendously.
Further we see that in line 159 the $language of the needles is overwritten with the $language from one random menu entry. This is done exactly once and not used thereafter, except that further cache lookups are stored as that $language. Since all this has no use anyway, we can simply remove this. (For reference, that parameter should somehow filter by language, but that is not the task of this class. That filtering has to be done earlier in the model.)
Last but not least, we are doing the lookup by both the view and the language.
This whole PR does not adress the fact that it does not support menu items with more than one tag, that there is only one view that it is checked against, that there is no fallback to the tags view, that _findItem() is only used in one method and thus completely unnecessary and could simply be merged into getTagRoute() and that it is doing A LOT of additional work that simply is not necessary. But at least this way it is a lot more correct and its behavior is more deterministically than before.
No testing instructions from me so far, since I found this during a code review. Asking a maintainer to review this.