Definición de extensión
La definición de la extensión es un archivo JSON que declara la información, las configuraciones, los enlaces y los permisos de usuario de un plugin. El archivo debe residir en el directorio raíz de la extensión y el nombre del archivo debe tener el siguiente formato:
extension_code.plugin
Nota importante: un simple error de sintaxis en el archivo JSON hará inservible la extensión para Navigate CMS.
La estructura global del archivo es:
{
"title": "Demo",
"version": "1.0",
"author": "Naviwebs <info@naviwebs.com>",
"website": "http://www.naviwebs.com",
"description": "descripción de la extensión",
"type": "tipo_de_la_extensión",
"run": false,
"languages": {},
"options": [],
"bindings": [],
"permissions":[]
}
El campo "tipo" sólo se utiliza para la clasificación cuando se navega por las extensiones instaladas en Navigate CMS. Esto determina la función principal de la extensión, que puede ser (a partir de Navigate CMS 1.7):
≈ website - generalmente llamado al visualizar una página web
≈ admin - llamado al utilizar las funciones de Navigate CMS
≈ translate - servicio de traducción (debe implementar algunas funciones internas)
El campo "run" declara si la extensión es ejecutable como una función de Navigate CMS (aplicación IFrame).
Idiomas
Si la extensión genera el código HTML de una página web puede que te interese mostrar textos en otros idiomas. Las traducciones también se pueden utilizar durante la edición de las opciones de configuración de la extensión en Navigate CMS.
Los códigos de idioma se definen en la configuración del sitio web. Te recomendamos utilizar el identificador de 2 letras para un idioma (ISO 639-1).
"languages":
{
"language_code": "ruta al diccionario json desde la RAÍZ del TEMA",
"en": "i18n/en.json"
}
Los textos (descripciones, títulos y valores...) se pueden traducir con el diccionario de la extensión. Por ejemplo, una extensión que tenga la opción de elegir un esquema de color, el valor "ec_blue" será reemplazado por una cadena que coincida con el código en el idioma actual ("Electric Blue" en inglés, "Azul eléctrico" en español) y mostrarla en la aplicación en lugar de "ec_blue", de lo contrario se usa el idioma por defecto.
También puedes agregar un símbolo "@" antes del código de cadena para ayudar a identificar lo que se comprueba con el diccionario (el símbolo no se utiliza para nada, será eliminado antes de comprobar el diccionario).
El diccionario es un archivo JSON como éste:
{
"codigo_texto": "Traducción del texto",
"color_scheme": "Esquema de color",
"dark": "Oscuro",
"light": "Claro",
"soft": "Suave",
"default": "Por defecto"
}
Opciones
Una extensión puede tener opciones de configuración, por ejemplo: esquema de color, clave de la API, etc...
"options":
[
{
"id": "clave_api_servicio",
"name": "Clave API del servicio",
"type": "value"
},
{
"id": "color_scheme",
"name": "@color_scheme",
"type": "option",
"options":
{
"default": "@default",
"dark": "@dark",
"light": "@light",
"soft": "@soft"
},
"dvalue": "dark"
]
Aquí puedes ver el uso del carácter @ para identificar cadenas ubicadas en el diccionario de la extensión. En tu código obtendrás cada valor introducido por el usuario llamando a Navigate CMS por el nombre de la extensión y el "id" de la opción a recuperar. Echa un vistazo a los ejemplos de cada tipo de extensión.
Comprueba la sección Temas> Configuración y opciones para obtener una lista completa de los tipos de opciones y sus propiedades personalizadas.
Vinculaciones
La sección de vínculos es útil cuando la extensión necesita ejecutar una acción cuando ocurren ciertos eventos. Por ejemplo, cada vez que un nuevo comentario se inserta tu extensión puede comprobar si se trata de spam, auto eliminar los enlaces...
Para cada caso es necesario definir el "module" (función en Navigate CMS), "event" y "function" (la función de retorno de llamada que deseas que se ejecute).
"bindings":
[
{
"module": "comments",
"event": "after_insert",
"function": "nvweb_your_extension_analyze_comment"
},
{
"module": "comments",
"event": "edit",
"function": "nvweb_your_extension_tab"
}
]
Puedes encontrar la lista completa de eventos y parámetros disponibles aquí.
Permisos
Cada extensión puede añadir su propio conjunto de permisos, por lo que el administrador del sitio web puede permitir o restringir ciertas funciones a los usuarios de Navigate CMS. Por ejemplo, si la extensión agrega una pestaña a una función, el administrador puede decidir ser el único que pueda verla.
"permissions":
[
{
"name": "nombre del permiso usando una categorización por puntos",
"scope": "tipo del permiso, actualmente sólo 'extensions'",
"function": "nombre de la función asociada al permiso",
"description": "texto describiendo el permiso",
"type": "tipo de campo del permiso - boolean, integer, string",
"dvalue": "valor por defecto"
},
{
"name": "extensions.akismet_antispam.display_tab",
"scope": "extensions",
"function": "akismet_antispam",
"description": "Mostrar la pestaña de Akismet en el formulario de comentarios",
"type": "boolean",
"dvalue": "true"
}
]
Las extensiones en Navigate CMS es una característica siempre en expansión, así que trata de mantenerte al día de cada novedad y cambio.
0 Comentarios