En este tutorial veremos cómo extender la administración de ProcessWire usando módulos personalizados. Con tres módulos de ejemplo, le daré una pequeña muestra de la potencia que tienen los módulos ProcessWire para agregar nuevas funciones al administrador.
Crear páginas para su sitio web en ProcessWire (PW) no podría ser más fácil, pero ¿qué hay de hacer páginas personalizadas en el CMS? Digamos que quieres hacer una página de configuración personalizada, preguntas frecuentes o página de video?
Sigue leyendo, tenemos tu espalda.
El módulo ProcessSimpleAdminPage muestra simplemente para crear un módulo que amplíe la clase de Proceso para agregar un nuevo Proceso de administración, y luego crear una página para el nuevo Proceso. Proceso es la clase base para el administrador de PW, por lo que al usarla podemos crear una página que muestre nuestro contenido.
Propina: Su nuevo módulo de ampliación de procesos también puede mostrar formularios y otras funciones, así como devolver contenido.
Vamos a crear un nuevo Proceso que devuelve algo de contenido, luego crearemos una nueva página en la navegación de administración para alcanzar ese contenido (en este ejemplo, he llamado a la página "Preguntas frecuentes de CMS"). Para construir nuestro módulo, comenzamos por crear un archivo llamado "ProcessSimpleAdminPage.module" y guardar en él los detalles de nuestro módulo..
la clase ProcessSimpleAdminPage extiende el proceso la función pública estática getModuleInfo () return array ('title' => 'Process Simple Admin Page', 'summary' => 'Simple Process Module que agrega una nueva página de administrador con', 'version' => 001 ,); public function execute () return 'Edita el texto aquí en el módulo.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam mattis eros vitae metus sodales eget suscipit purus rhoncus. Proin ultrices gravida dolor, no portador enim interdum vitae. Feugiat entero lacinia tincidunt. Nulla laoreet tristique tristique. Sed elementum justo a nisl elementum sit amet accumsan nisi tempor. Nulla quis eros et massa dignissim imperdiet a vitae purus.
';
En este punto, si instalamos nuestro módulo tendríamos todo lo necesario para crear nuestro nuevo Proceso. ProcessSimpleAdminPage y devolver el contenido. Sin embargo, actualmente no hay página para ejecutar nuestro código. Tenemos varias opciones para hacer esto:
página
atribuir a los módulos getModuleInfo ()
formación. Si el módulo extiende el Proceso (lo que hace el nuestro), entonces agregue un página
matriz de atributos con al menos una nombre y padre en la instalación creará automáticamente una nueva página de administración entu especificado padre Con el módulo como su Proceso. Aquí hay un ejemplo del módulo de saludo..instalar()
y desinstalar ()
Funciones y añadir la nueva página. Esto se detalla a continuación para mostrarle cómo puede agregar una página:función pública install () // crear nueva página para agregar a CMS $ page = new Page (); // agregar atributos de página, he llamado a esta página Preguntas frecuentes de CMS '$ page-> template = "admin"; $ page-> name = "cms-faq"; $ page-> title = "Preguntas frecuentes de CMS"; $ página-> guardar (); // configura este módulo como el proceso de la página, esto nos permite mostrar el anterior $ page-> process = 'ProcessSimpleAdminPage'; // obtener la página de administración y establecerla como página principal $ admin = $ this-> pages-> get ("id = 2"); $ page-> parent = $ admin; // guardar página $ página-> guardar (); función pública uninstall () // eliminar la página creada $ page = $ this-> pages-> get ("name = cms-faq"); if (count ($ page)) $ this-> pages-> delete ($ page, true);
Ve y crea páginas de administración para tu sitio web.!
Mediante el uso de Textformatters puede manipular la entrada de campos de texto con el administrador de PW. Por ejemplo, supongamos que desea crear fragmentos de código que se agreguen en lugar de que alguien escriba sus propios fragmentos de código, es perfectamente posible (de manera similar al complemento de código de hana para Wordpress).
Esta vez he creado un módulo que amplía otra clase de base Textformatter para crear nuestro nuevo módulo TextformatterFindReplace y creó un archivo de configuración separado:
la clase TextformatterFindReplace amplía las implementaciones de Textformatter Module public static function getModuleInfo () return array ('title' => 'TextformatterFindReplace', 'version' => 0.1, 'summary' => "Busca y reemplaza cualquier instancia de la entrada de configuración al resultado de configuración ", 'singular' => true,); / ** * Buscar y reemplazar la cadena de entrada * * @param string $ str El bloque de texto a analizar * * La cadena entrante se reemplaza con la versión formateada de sí mismo. ** / public function format (& $ str) $ find = $ this-> findStr; $ str = preg_replace_callback ($ find, array ($ this, "replace"), $ str); // agregar tres guiones bajos a una función permite que otros módulos enganchen la función pública ___ replace ($ match) return $ this-> replaceStr;
La clase TextformatterFindReplaceConfig extiende ModuleConfig public function getDefaults () return array ('findStr' => '----', 'replaceStr' => 'Texto reemplazado',); / * * getInputfields () * return: $ inputfields * / // cree un formulario dentro de PW admin para habilitar la configuración de la función pública del módulo getInputfields () // get module getInputfields configure la clase de configuración $ inputfields = parent :: getInputfields (); // obtener el módulo InputfieldText $ f = $ this-> modules-> get ('InputfieldText'); $ f-> attr ('nombre', 'buscarStr'); $ f-> label = 'Buscar en el texto'; $ f-> description = 'Agregue una palabra o patrón para buscar y reemplazar dentro de su texto.'; // agregar la entrada del rol de usuario para formar config $ inputfields-> add ($ f); // obtener nuevo módulo InputfieldText $ f = $ this-> modules-> get ('InputfieldText'); $ f-> attr ('nombre', 'replaceStr'); $ f-> label = 'Reemplazar texto'; $ f-> description = 'texto para mostrar en la parte delantera.'; // agregar la entrada de redirección de página para formar config $ inputfields-> add ($ f); // devolver las entradas de configuración del módulo devolver $ inputfields;
Ahora en la configuración del módulo puedo especificar una cadena para que coincida, y una cadena para reemplazarla (en nuestro ejemplo anterior, el valor predeterminado es encontrar: ----
y reemplazar con Texto reemplazado
).
Todo lo que necesito hacer es agregar nuestro nuevo TextFormatter a un campo de texto dentro de la pestaña de detalles del campo. Ahora cada vez que escribo ----
Obtendré la cadena de texto reemplazada.
Como el administrador de PW se crea a sí mismo utilizando la biblioteca de tipo API de PW, los módulos de PW tienen bastante acceso para engancharse en cualquier lugar que necesite.
Para mi último ejemplo sobre la extensión del administrador de PW, he creado un módulo que agrega botones a la página de edición y al área de la página, crea dos nuevos campos y los agrega globalmente a cada página. Requiere otro módulo, LazyCron, para operar..
El módulo PageDeferredPublish, al hacer clic en uno de los Publicar despues Los botones, configuran a LazyCron para que compruebe la cuenta regresiva de esa página cada minuto y la publica cuando la cuenta regresiva llega a 0. Esto significa que puedo publicar una página con aproximadamente 24 horas de anticipación (obviamente, el intervalo de verificación y el tiempo de demora se pueden cambiar según sus requisitos).
Hice esto por:
instalar()
función: un campo de casilla de verificación que se establece en verdadero cuando se marca un botón para indicar que la página debe realizar una cuenta regresiva, y un campo de cuenta regresiva para almacenar la cuenta en segundos para esa página específica.El resultado es un módulo que tiene configuraciones (el intervalo de tiempo para verificar y publicar más adelante), se enlaza con el administrador mediante botones y campos, y nos permite usar otros módulos instalados en PW (es decir, LazyCron).
A menudo, un módulo que necesita ya se ha creado y se puede descargar desde la página de módulos de PW. Sin embargo, si se siente en necesidad, es bueno saber que es relativamente fácil saltar, ampliar una clase principal y crear una nueva funcionalidad que resuelva su problema o altere la solución predeterminada de PW..
Espero que haya encontrado útil esta pequeña prueba del poder de extender PW, y consulte los otros tutoriales de ProcessWire en Envato Tuts + para obtener más consejos y trucos..