Recently on our site, we moved a bunch of terms to a different place in the hierarchy using the Taxonomy Manager. Subsequently to this, we discovered that none of our taxonomy/term/% pages were working.

After looking around to see if there were any modules that were doing a hook_menu_alter() on that path, I discovered that Taxonomy Manager was, and then I saw the function called taxonomy_manager_term_page(), which has an else condition that returns drupal_not_found() when there is no proper tid operation.

When I looked at the $str_tids variable that is being passed in as the first parameter of this function, I saw that it was not the tid, as I thought it should be, but rather "taxonomy_term_feed". I am not certain why this is.

However, when I disabled the Taxonomy Manager's hook_menu_alter implementation, the 403 error went away.

Comments

EvanDonovan’s picture

Title: taxonomy_manager_term_page page callback is causing drupal_not_found (403) error » RDF module conflicts with overridden taxonomy_term_page() implementations
Project: Taxonomy Manager » Resource Description Framework (RDF)
Version: 6.x-1.1 » 6.x-1.0-alpha7

I have determined that the "taxonomy_term_feed" which is being adding as the first parameter is coming from the RDF module. This problem affects any module that overrides the taxonomy_term_page() callback, such as Taxonomy Manager or i18ntaxonomy.

Currently, I am hacking around the problem by adding an extra parameter to the callbacks in 18ntaxonomy & Taxonomy Manager. However, this is not a very sustainable solution. It would be better to fix the problem in the RDF module so that the first parameter being received by the callbacks is not taxonomy_term_page. I suspect that the problem is in the rdf_feed_callback handler, where it is returning to the Drupal menu handler. For some reason, this works OK with the default taxonomy_term_page() callback, but with the other ones, it has "taxonomy_term_feed" as the first parameter and the term id as the second.

EvanDonovan’s picture

Actually, after looking in the {menu_router} table, I believe that the issue is with line 117 of the rdf.module: $items[$path]['page arguments'] = $arguments;. It is adding the "taxonomy_term_feed" as an argument but the alternative taxonomy_term_feed() implementations don't have a parameter to accommodate that.

EDIT (7/8): should have said "the alternative taxonomy_term_page() implementations"

EvanDonovan’s picture

This issue, I've determined, also means that I can't use the RDF module (or anything that depends upon it) with Panels 3, since the Delegator won't override taxonomy/term/% as long as rdf_feed_callback() says it's handling it.

I am not sure where to go with this issue at this point, since it seems like this is a broader issue than just with RDF module. Overall, there should be a way for menu_callbacks to partially override the default implementation, so that they don't conflict with each other but I have no idea how to accomplish that.

locomo’s picture

subscribe

locomo’s picture

Having the same issues as in #3 - can't use RDF and related modules while using Panels 3

Can the Page Manager module deal with this conflict and provide the "partial override"

smustgrave’s picture

Issue summary: View changes
Status: Active » Closed (outdated)