Okay, I'm back and this is NOT SHORT... Wanted to give this post some appropriate consideration. A lot has been stated in the last few posts, and if I may address some of it. I would like to state up front that personally I like this mod and that it appears to fit the very public structure of the organization that uses it, but professionally, I have nothing against any of the other uri rewriters (albeit any/all be supported by at least someone, and preferably appropriately upgraded relatively close to the release date of new versions).
So, regarding updates and anyone just starting to read this thread: > delia:
I will not edit the files and upload a new version. I don't want to be responsible for this train wreck.
This is a completely personal decision. We all (everyone that offers assistance) does so as they see fit, as they desire, as they can, etc... Free support... Free time... Just because delia (and others) may have made modifications to get the plugin to work on ZC 1.5.4, does not mean that they/us need to share with everyone/anyone, not to mention that by providing the file(s) one does feel a sense of responsibility for all that follows.
If I may summarize some of what followed the above message excerpt... A workaround was suggested about how to continue to operate under ZC 1.5.4 effectively without taking action to incorporate the changes needed for full functionality of the plugin, equivalent to halfway installing the plugin effectively disabling the ability to extend its operability. (This to an extent led to discussion about how best to provide plugins/code/code changes.) Yet again, the discussion of this or any uri rewriter impacting "SEO" is yet to be proven. Just because the acronym appears in a programs title doesn't make it so.
Somewhat surprisingly the actual code inserted into ZC is relatively simple/small, but calls ever more complex code in the background. Anyways, any module could be "dead" at any next revision, if no one does anything to address it. Certainly, if JSWeb has taken to a financial perspective only, either they will transition from providing any support at all for this free module and only offer for pay versions moving this particular functionality availability away from the masses. I would be surprised to see if the requested rates are truly reaping the supposed value. Anyways, the use of a uri rewriter (any) can have its downside. Here we are talking about how to transition from one to another, meanwhile the question tends to be, why have one in the first place. About three years ago now, our organization was trying to figure out how best we could get people to remember us and quickly find us as a service organization. It came to light that one of the easiest ways was to have a uri that was memorable and not to just funnel all traffic to one page (main page), but to deliver into the area(s) applicable to the activity considered.. So, yes there were some choices to be made and difficulties initially. The instructions and the individual version files made things easier/better. Reading through the installation as well as potential removal and interaction with other URI mapping programs, it was obvious that once a store starts to use something like this, it appears to be somewhat a commitment to using it into the future.. That is unless/until action is taken to "undo" the rewrites. Now I'm not out to either force this code to remain in place, nor am I out to tear it down. It accomplishes what is desired, and can be used with newer versions when the necessary changes are considered. Yes, it is more involved than a simple copy and paste, and the overall complexity of it is simplified by these files being provided, but perhaps the transition is one to where the plugin is installed by only those that understand how to apply the code differences, rather than by the "masses". At the same time I have also recently seen an installer that supposedly will self integrate with existing code. I haven't tested this out yet, but it if it works as described, then it is a step in the right direction.
So, as I said, I'm not out to tear down this (or any) plugin/code modification/whatever you want to call it. I can say that there is an application that can assist with several of the aspects of interest of this code. Want to create uris from products existing or newly added to the database? It can support it/it is available. Want to convert uri's, well the github available version has a feature that could help in either direction (coming from another uri rewriter to this one or going from this one to another), using an admin control. Yes, generating an .htaccess file to rewrite a rewrite for the purpose of another rewriter to rewrite the result is a bit ridiculous, but I believe the code discussed in this paragraph could handle that generation in a few clicks and again in either direction. Incorporating a method to continue the rewriting of existing uris to support a mix of the old and new is nearly equivalent to operating with two or more uri rewriters at once, but I'm sure that there is a way to make that sort of transition occur...
In regards to some of the specific statements:
delia:
One client specifically has over a 1000 products. I don't know if he has actually edited any of those urls and there's really no way to find that out.
Not sure I understand what is considered to have been "edited", but if the client has used this module as designed (and not manually modified the database table), then such modifications are still held in the database and are potentially still doing their function of redirecting customers to the currently active product uri. I'm afraid that if that central functionality is not understood that there is a flavor of not understanding the module that is also a bit disconcerting in light of the strong message to abandon it.. (again there are those that advocate never using any such thing to begin with.)
DivaVocals:
lat9 has a module that may help bridge the gap. Read more here: http://www.zen-cart.com/showthread.php?215605-ZC1-5-4-backward-Compatibility-Plugins-with-admin-level-core-file-overwrites. In this post I ask for clarification about how the script she wrote works and it is NOW available in the free downloads.. I do believe that this module will bridge the gap between the currently available version of this module and Zen Cart v1.5.4.
lat9's adaptation of the new code in ZC 1.5.4 to be applied to code that would/could be used in previous versions of ZC, is certainly valuable to any module that is broadly applicable to any/most ZC versions. It is far more necessary for a module that doesn't contain unique application/design for the applicable ZC version... So, in the case of this module, if the next modification is "entered" to support ZC 1.5.4, there would be no need for lat9's plugin, because a folder for ZC version 1.5.4 will be created to be applied against that version of ZC which already has the necessary files to process the PCI commands. Further, because the ZC 1.5.3 folder applies to ZC 1.5.3 and ZC 1.5.3 and below do not use the PCI commands, then the plugin also does not apply. If, however, the code were written as a "one-size" fits all, then lat9's file(s) would be needed. For example EasyPopulate v4 is a single set of files that functions in ZC 1.3.9 all the way up to ZC 1.5.4 (not including ZC 1.5.2 on purpose), because of that lat9's plugin is relatively crucial, because the code could attempt to log a PCI event; however, none will be logged because the underlying functionality doesn't exist in the earlier versions.
As for rewriting the rewrites, one aspect about it has to do with sequencing... I don't know how everyone is at algebra or simple substitution:
All cats have fur
All fur is long hair
All long hair is on a mammal
All mammals breath air, then one would/could say reading left-to-right and downward that all cats breath air...
But in reverse order the following is not true, and substitution would not occur:
All air breathers are mammals
All mammals have long hair.
All long hair is fur,
All fur is on cats...
The first set has logical statements that are true leading to a result, the second set also has logical statements (even if they are not true statements) that lead to central location for the answer. Thing is I would say that the first one is one where more substitution is performed than desired (each step downward) as compared to a single substitution step of resultradcon is working to the DR to verify that the work has been complete.
So, like described in the article referenced (though not verified to be correct), the category rewrites should follow (come after) the product rewrites to ensure the right product is being rewritten with the right name.