2008-07-23

URL, como tratar? - II

Em resposta a uma pergunta feita no CF-brasil, retorno ao assunto.

Uma das opções é demonstrada no post Flexible Friendly URLs for Farcry with Mod rewrite (Updated), que possui a seguinte url .../index.cfm/[ano]/[mes]/[dia]/[titulo], que provavelmente não utiliza o rewrite. DEVE utilizar um recurso como o seguinte:

<cffunction name="configureEscopoUrl">
<cfset uVars=ListToArray(ListFirst(trim(cgi.path_info), '?'),"/")>
<cfif Arraylen(uVars)>
<cfswitch expression="#Arraylen(uVars)#">
<cfcase value="0"></cfcase>
<cfcase value="1">
<cfif IsNumeric(uVars[1])>
<cfset url.Year = CreateDate(uVars[1],1,1)>
</cfif>
</cfcase>
<cfcase value="2">
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2])>
<cfset url.Month = CreateDate(uVars[1],uVars[2],1)>
</cfif>
</cfcase>
<cfcase value="3">
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2]) and IsNumeric(uVars[3])>
<cfset url.Day = CreateDate(uVars[1],uVars[2],uVars[3])>
</cfif>
</cfcase>
<cfcase value="4">
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2]) and IsNumeric(uVars[3])>
<cfset url.Day = CreateDate(uVars[1],uVars[2],uVars[3])>
</cfif>
<cfif Len(Trim(uVars[4]))>
<cfset url.nameid = uVars[4]>
</cfif>
</cfcase>
<cfdefaultcase>
<cfif IsNumeric(uVars[1]) and IsNumeric(uVars[2]) and IsNumeric(uVars[3])>
<cfset url.Day = CreateDate(uVars[1],uVars[2],uVars[3])>
</cfif>
<cfif Len(Trim(uVars[4]))>
<cfset url.nameid = uVars[4]>
</cfif>
<cfloop from="5" to="#ArrayLen(uVars)#" index="i" step="2">
<cfset url[uVars[i]] = "" >
<cfif ArrayLen(uVars) GTE (i+1)>
<cfset url[uVars[i]] = uVars[i+1] >
</cfif>
</cfloop>
</cfdefaultcase>
</cfswitch>
</cfif>
</cffunction>


Este código segue o padrão index.cfm/[ano]/[mes]/[dia]/[titulo]/var1/valor1/varn/valorn.


Enjoy!

Nenhum comentário: