Moodle 3.3 ha traido un nuevo elemento de vista general de curso, muy aplaudido por la comunidad, pero con un pequeño contratiempo, y es que los cursos por páginas están definidos por una constante y no es algo que pueda configurarse.

Si necesitamos modificarlo, tendremos que entrar en el código y modificar la constante COURSES_PER_PAGE de la clase courses_view que está en el archivo courses_view.php que está en la ruta blocks/myoverview/classes/output/courses_view.php

A veces nos ha ocurrido que aunque la plataforma Magento (versión 1.9) funciona perfectamente y las URLs van bien, cuando hemos querido instalar desde el Downlader una extensión con la URL del Marketplace de Magento, nos ha dado el error:

Leer más

Cuando la función on_sent_ok os de el error de ajuste obsoleto (o is Deprecated), habrá que cambiar la función que tenemos por código JavaScript.

En nuestro caso, el cliente tenía una redirección a una URL, con lo que cambiamos el código a
[crayon-5a63776e06584282896179/]
 

 

En este caso, tenemos un cliente que quiere que sólo los atributos con valor a “Sí” (o TRUE, o “Verdadero”, como queráis). ¿Cómo lo conseguimos?
Nos iremos al archivo attribute.phtml del paquete del tema que estamos utilizando, cuya ruta es:

/app/design/frontend/nuestro_tema/paquete_usado/template/catalog/product/view/attribute.phtml

Y buscamos este código:
[crayon-5a63776e066fe372215948/]
Y lo reemplazamos por este otro:
[crayon-5a63776e06706744467729/]
Obviamente, en el punto del código donde pone ‘No’, podemos poner
[crayon-5a63776e0670a302669402/]

Si no nos interesan los logs, borraremos todos los registros de las tablas
log_customer
log_visitor
log_visitor_info
log_url log_url_info
log_quote
report_viewed_product_index
report_compared_product_index
report_event
catalog_compare_item

Se puede meter en cron para que salte la limpieza 1 vez al mes, por ejemplo:
php -f shell/log.php clean

También puede hacerse en la interfaz del administrador: Sistema->Configuración->Avanzado->Sistema->Log
Habilitamos la limpieza de logs y definimos la frecuencia de borrado. Guardamos y ya está todo.

Si nos interesan (por temas de estadísticas de visitas), dejaremos los del último mes o los 2 últimos meses.

Hace unos días estuve en las instalaciones que SiteGround España nos brinda al grupo de Meetup de WordPress Madrid explicando cómo mostrar los contenidos de los campos personalizados que habíamos creado con ACF, sin escribir código. Como vimos que era un truco muy útil, lo explico a continuación:

Para este ejercicio necesitaremos:

Bien, lo primero que hacemos es crear con el plugin ACF Post Types un contenedor para los campos personalizados que crearemos a continuación:

 

 

 

Creamos un tipo llamado Libro:

 

Y lo vemos en el menú lateral del backend de WordPress:

A continuación, creamos los campos asociados al tipo Libro:

Bien, ya tenemos una ficha rudimentaria de un libro en backend. Ahora vamos a darle contenido a esta ficha. Para ello creamos 3 libros:

 

 

 

 

 

 

 

 

 

 

 

Y ahora viene el momento de volcarlos al front. Para ello utilizaremos el plugin Custom Content Shortcode, que nos permitirá hacer por ejemplo un bucle y sacar un listado de los libros en una página estática. Si queréis consultar los shortcodes de este plugin, los teneis aquí:

 

 

 

 

 

 

 

 

Entraremos en los ajustes de Custom Content Shortcodes para activar los shortcodes para ACF como veis en la figura que teneis a continuación:

 

 

 

Bien, creamos una página en la que tendremos el listado de las obras que hemos insertado y ponemos los siguientes shortcodes:

 

 

 

 

 

 

 

Podéis observar que para mostrar la fecha he definido un formato de salida. Ahora publicamos la página y vemos el resultado:

Cuando contratamos un servidor en Linode o Digital Ocean u otra empresa similar, según qué plataformas se instalan en estos servidores y las visitas que reciban, pueden quedarse cortos de memoria swap. En estos casos, podemos ampliar la swap de la siguiente forma, creando un archivo para ello, que lo trataremos como un HDD:
[crayon-5a63776e068c9421626204/]
Con la primera instrucción, creamos en la carpeta root un archivo ‘swapcreadapornosotros’ con un tamaño definido y lo montamos como un dispositivo más. A continuación, hacemos un chmod 600 de esa carpeta,y un mkswap de ese archivo, de forma que indicamos al sistema que a partir de ahora, ese archivo es parte de nuestra swap. Y después, con swapon y el archivo, activamos la swap en el mismo.

Por último, para hacer que después de un reinicio la swap siga ampliándose en el archivo, editamos el archivo fstab e insertamos
[crayon-5a63776e068d3336994242/]
Y listo!

[crayon-5a63776e06a7a254751196/]
Cuando en un Moodle tengamos foros y aparentemente no salgan sus correos a los usuarios, podemos chequear su funcionamiento abriendo una conexión por terminal y ejecutando el siguiente comando:
[crayon-5a63776e06a83511955715/]
Al ejecutarlo, si está todo correcto y no hay nada en cola, saldrá algo así:
[crayon-5a63776e06a88938163558/]
Y si por el contrario, hay alguna petición en cola, saldrá así:
[crayon-5a63776e06a8c421979904/]
Si hay algún problema, el mensaje sería el siguiente:
[crayon-5a63776e06a91806351903/]
Según el error devuelto, tendremos que arreglar permisos, o corregir la ruta de PHP etc.

Cuando en Magento estamos trabajando con listados de productos en categorías y activamos el atributo “isAnchor” en la categoría para que salga el buscador por atributos, el list.phtml que muestra el listado no es el que tiene la plantilla en
plantilla-que-estamos-usando/template/catalog/product/list.phtml,
sino el que se encuentra en la carpeta
base/template/catalin_seo/catalog/list.phtml.

Entonces, para personalizar esta plantilla, copiaremos el contenido de catalin_seo a la carpeta de nuestra plantilla, y modificaremos ese archivo.

En este artículo veremos qué componentes tiene Docker.

  • El motor de Docker, compuesto por el cliente y el servidor Docker.
  • Las imágenes de Docker
  • Los registros
  • Los contenedores

El motor de Docker

Básicamente, Docker es una aplicación cliente-servidor, y pueden trabajar ambos en la misma máquina, o en distintos servidores. Además, también existe una API REST para comunicarse con la parte servidor de Docker, aparte de la aplicación cliente, con lo que no tendremos problema alguno para trabajar con Docker.

Imágenes

Las imágenes de Docker es el código fuente de nuestros contenedores, es una colección ordenada de comandos y parámetros para ejecutarlos en el momento de arrancar el contenedor, para, por ejemplo, abrir con puerto, o ejecutar un comando.

Registros

Las imágenes que se crean, se guardan en registros, y existen dos tipos: públicos y privados, como podeis ver en la misma web de Docker.

Contenedores

Es el proceso o conjunto de procesos que se lanzan desde una imagen. Un contenedor puede ser creado, inicializado, parado, vuelto a ejecutar y destruido, a diferencia del resto de componentes de Docker.

containersLos contenedores reciben este nombre porque recuerdan a los contenedores que se utilizan en el transporte (todos hemos visto los contenedores de transporte marítimo, ¿verdad?). Así, podemos hacer un contenedor con una base de datos, una web, o cualquier otro servicio que pensemos, y podemos llevarlo de un sitio (servidor) a otro, sin problemas. De esta manera, el desarrollador enviará su imagen al departamento de testeo, o de puesta en producción desde su máquina local, sin que se pierda nada por el camino, a la par que todos los actores implicados en un desarrollo se aseguran de tener el mismo entorno en cada momento.