En el desarrollo de sistemas de contenido, implica el proceso de separar contenido y forma, es decir, el proceso de personalizar plantillas de página según los usuarios y luego reemplazarlas con contenido relevante. Esto es fundamentalmente diferente de muchos sistemas externos de gestión de contenido para sitios completos. Hay muchos gestores de contenidos que lucen iguales por mucha gente que los use, porque las páginas no se pueden personalizar y los usuarios que no saben programación no pueden modificarlas. No creo que una web así, que sólo rellena unos parámetros y sale, tenga mucho futuro. Porque todos lucen iguales y todos saben cómo completar esos parámetros.
Por ejemplo, si miras los siguientes sitios, ¿pensarías que son un conjunto de programas?
www.blueidea.com
http://pages.blueidea.com
http://digi.blueidea.com
http://dsp.blueidea.com
http://www.dcshooter.com
Si le digo que todos son un programa y que los webmasters relevantes solo diseñan diferentes plantillas para mostrar la página, encontrará la excelencia de este sistema.
Por supuesto, debido a la naturaleza de alta gama de este sistema, actualmente no está disponible para usuarios comunes, por lo que desarrollé mi propio sistema de administración de contenido, el sistema de administración de contenido kiss.
Para proporcionar a los usuarios un sistema de plantillas, en primer lugar, debe haber un sistema de marcado simple y fácil de entender. Eche un vistazo al siguiente código para ver si es fácil de entender:
<tag:loop channelid=1 pagesize=10 />channelid es el ID de una columna en la base de datos
El tamaño de página es cuántos documentos enumerar.
título es la longitud del título
El tipo es un tipo de columna de lista, y NUEVO aquí se establece en el documento más reciente.
columna es cuántas columnas mostrar
La introducción anterior es para popularizarla entre las personas que no saben programación o no comprenden el sistema de contenido, y para publicitar mi sistema de administración de contenido, y lo que quiero decir es, el módulo de plantilla del sistema de administración de contenido utilizado por Blue Sitio ideal, Mucho más fuerte que el mío.
Ahora es el turno del programador, los demás no necesitan mirar hacia abajo.
Entonces, ¿cómo leer sus valores?
La siguiente función es la última y se utiliza para analizar el contenido de todas las plantillas.
Copie el código de la siguiente manera:'[Función] Etiqueta de plantilla personalizada
Función ProcessCustomTags(ByVal sContent)
Dim objRegEx, Match, Matches
'Crear expresión regular
Set objRegEx = New RegExp
'Buscar contenido
objRegEx.Pattern = <tag:.*/>
' Ignorar case
objRegEx.IgnoreCase = True
'Búsqueda global
objRegEx.Global = True
'Ejecutar la búsqueda contra el cadena de contenido que nos han pasado
Set Matches = objRegEx.Execute(sContent)
'Recorre las coincidencias encontradas
para cada coincidencia en Matches
'Reemplaza cada coincidencia con el HTML apropiado de nuestra función ParseTag
sContent = Reemplazar(sContent, Match.Value, ParseTag (Match.Value))
Siguiente
'Destruir el
conjunto de objetos Coincidencias = nada
establecido objRegEx = nada
'Valor de retorno
ProcessCustomTags = sContent
End La función
utiliza expresiones regulares en el código anterior. Si no sabe mucho al respecto, consulte la información relevante. No entraré en detalles aquí.
Entonces, cómo obtener el valor del parámetro, también es una función:
copie el código en el cuadro de copia de código de la siguiente manera:'[Función] Obtener el nombre del parámetro de la etiqueta de plantilla
', como por ejemplo: <tag:loop channelid=1 pagesize= 10 />función GetAttribute(ByVal strAttribute, ByVal strTag)
Dim objRegEx, Matches
'Crear una expresión regular
Set objRegEx = New RegExp
'Buscar contenido (el nombre del atributo seguido de comillas dobles, etc.)
objRegEx.Pattern = lCase(strAttribute) & =[0-9a-zA-Z]*
'Ignorar caso
objRegEx.IgnoreCase = True
'Búsqueda global
objRegEx.Global = True
'Ejecutar búsqueda
Set Matches = objRegEx.Execute(strTag)
'Si hay una coincidencia Luego devuelve un valor; de lo contrario, devuelve un valor nulo
si Matches.Count > 0 entonces
GetAttribute = Split(Matches(0).Value,)(1)
else
GetAttribute =
end if
'Destruye el
conjunto de objetos Matches = nada
set objRegEx = nada
fin de la función
OK, entonces, ¿cómo analizar el contenido como <tagloop:> arriba?
La siguiente es una función:
copie el código de la siguiente manera:'[Función] Analiza y reemplaza la
función de contenido de etiqueta de plantilla correspondiente ParseTag(ByVal strTag)
dim arrResult, ClassName, arrAttributes, sTemp, i, objClass
'Si la etiqueta está vacía, salga la función
si len(strTag) = 0 entonces sale de la función
'Dividir la coincidencia en el carácter de dos puntos (:)
arrResult = Split(strTag, :)
'Dividir el segundo elemento de la matriz resultante en el carácter de espacio, para
'recuperar el nombre de la clase
ClassName = Split(arrResult(1), )(0)
'Utilice una instrucción select case para determinar con qué clase estamos tratando
'y por lo tanto qué propiedades completar, etc.
seleccione case uCase(ClassName)
'Es una clase de bucle, así que cree una instancia y obtenga sus propiedades
case LOOP
set objClass = new LOOP_Class
LOOP.Chanelid= GetAttribute(channelid, strTag)
LOOP.Pagesize= GetAttribute(pagesize, strTag)
LOOP.title = GetAttribute(title, strTag)
LOOP.type = GetAttribute(Type, strTag)
ParseTag = LOOP.column (GetAttribute(columna, strTag), verdadero )
'Destruye nuestro
conjunto de objetos de clase objClass = nada
fin seleccionar
fin
El bucle encima
de la función
es una clase, por lo que no entraré en detalles aquí.Porque hace mucho que no hablo y no estoy acostumbrado, jaja.
En conclusión, a través de la función anterior, puede escribir rápidamente programas de plantilla relacionados. Espero que ayude.