configuraciones https://drupaladicto.com/ es Versión de Drupal con Drush | y otros datos https://drupaladicto.com/snippet/version-de-drupal-con-drush-y-otros-datos <span class="field field--name-title field--type-string field--label-hidden">Versión de Drupal con Drush | y otros datos</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>¿Sabes que puedes averigurar la versión instalada de Drupal, además de otros datos, utilizando un comando de Drush?</p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 09/10/2023 - 21:34</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><p>Para conocer la versión instalada de Drupal y otros datos relacionados, sigue los siguientes pasos:</p> <ol><li>Abre la consola y colócate en la carpeta raiz o en la que te permita ejecutar Drush.</li> <li>Ejecuta el comando:</li> </ol></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><pre> drush status</pre> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/default_images/snippet-pager.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/drush" hreflang="es">drush</a></div> <div class="field__item"><a href="/categoria/console" hreflang="es">console</a></div> <div class="field__item"><a href="/categoria/consola" hreflang="es">consola</a></div> <div class="field__item"><a href="/categoria/status" hreflang="es">status</a></div> <div class="field__item"><a href="/categoria/estado" hreflang="es">estado</a></div> <div class="field__item"><a href="/categoria/configuracion" hreflang="es">configuración</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img src="/sites/default/files/styles/max_325x325/public/imagenes/portada-snippet-grande.png?itok=JZyTAbRq" width="325" height="176" alt="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid image-style-max-325x325" /> </div> </div> </article> </div> </div> Mon, 09 Oct 2023 19:34:43 +0000 webmaster 471 at https://drupaladicto.com Nginx para Drupal | Archivo de configuración para el dominio. https://drupaladicto.com/snippet/nginx-para-drupal-archivo-de-configuracion-para-el-dominio <span class="field field--name-title field--type-string field--label-hidden">Nginx para Drupal | Archivo de configuración para el dominio.</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>Si estás instalando Drupal, en un servidor VPS con Nginx, este es el archivo completo que deberías utilizar, para Drupal 10</p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 11/09/2023 - 13:14</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><ul><li>Una vez configurado tu servidor Nginx, deberás generar el archivo dentro de /etc/nginx/sites-available/MIDOMINIO.COM</li> <li>También los archivos access.log y error.log en la ubicación correspondiente.</li> <li>Este archivo está sacado desde la <a href="https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/">Página Oficial de Nginx</a>  y modificado, para que esté actualizado con Drupal 10.</li> </ul></div> </div> <div class="clearfix text-formatted field field--name-field-codigo field--type-text-long field--label-hidden field__item"><pre> server {     server_name  lnd4all.com  www.lnd4all.com;     root /var/www/lnd4all/web; ## &lt;-- Your only path $     access_log /srv/www/lnd4all.com/logs/access.log;     error_log /srv/www/lnd4all.com/logs/error.log;     location = /favicon.ico {         log_not_found off;         access_log off;     }     location = /robots.txt {         allow all;         log_not_found off;         access_log off;     }     # Very rarely should these ever be accessed outside of your lan     location ~* \.(txt|log)$ {         allow 192.168.0.0/16;         deny all;     }     location ~ \..*/.*\.php$ {         return 403;     }     location ~ ^/sites/.*/private/ {         return 403;     }     # Block access to "hidden" files and directories whose names begin with a     # period. This includes directories used by version control systems such     # as Subversion or Git to store control files.     location ~ (^|/)\. {         return 403;     }     location / {         # try_files $uri @rewrite; # For Drupal &lt;= 6         try_files $uri /index.php?$query_string; # For Drupal &gt;= 7     }     location @rewrite {         rewrite ^/(.*)$ /index.php?q=$1;     }     # In Drupal 8, we must also match new paths where the '.php' appears in the middle,     # such as update.php/selection. The rule we use is strict, and only allows this pattern     # with the update.php front controller.  This allows legacy path aliases in the form of     # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have     # any paths like that, then you might prefer to use a laxer rule, such as:     #   location ~ \.php(/|$) {     # The laxer rule will continue to work if Drupal uses this new URL pattern with front     # controllers other than update.php in a future release.     location ~ '\.php$|^/update.php' {         fastcgi_split_path_info ^(.+?\.php)(|/.*)$;         #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini         include fastcgi_params;         include snippets/fastcgi-php.conf;         fastcgi_param SCRIPT_FILENAME $request_filename;         fastcgi_intercept_errors on;         fastcgi_pass unix:/run/php/php8.1-fpm.sock;     } #SI TE FALLAN LOS ESTILOS AL PASAR DRUPAL A PRODUCCIÓN BORRA LAS LINEAS QUE ESTÁN ENTRE ESTA Y     # Fighting with Styles? This little gem is amazing.     # location ~ ^/sites/.*/files/imagecache/ { # For Drupal &lt;= 6     location ~ ^/sites/.*/files/styles/ { # For Drpal &gt;= 7         try_files $uri @rewrite;     }     location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {         expires max;         log_not_found off;    } #HASTA ESTA LINEA, VIGILA NO CARGARTE LA LLAVE DE CIERRE QUE ESTA DEBAJO. }</pre> </div> <div class="clearfix text-formatted field field--name-field-notas field--type-text-long field--label-above"> <div class="field__label">Notas</div> <div class="field__item"><p>Aunque en Local funcionó sin nigún fallo, cuando lo desplegué a Producción y actualicé a la versión más reciente de Drupal 10 y Drush 12, las líneas se rompieron todos los estilos, hasta que, investigando, encontré que el error era producido por las líneas que he comentado.</p> <p>El archivo completo funcionaba sin problemas, antes de la última actualización de Drupal 10 y Drush.</p> </div> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/default_images/snippet-pager.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/server" hreflang="es">server</a></div> <div class="field__item"><a href="/categoria/dominio" hreflang="es">dominio</a></div> <div class="field__item"><a href="/categoria/configuracion" hreflang="es">configuración</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/entorno" hreflang="es">entorno</a></div> <div class="field__item"><a href="/categoria/entornos" hreflang="es">entornos</a></div> <div class="field__item"><a href="/categoria/nginx" hreflang="es">nginx</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img src="/sites/default/files/styles/max_325x325/public/imagenes/portada-snippet-grande.png?itok=JZyTAbRq" width="325" height="176" alt="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid image-style-max-325x325" /> </div> </div> </article> </div> </div> Mon, 11 Sep 2023 11:14:51 +0000 webmaster 457 at https://drupaladicto.com RuntimeException: Adding non-existent permissions to a role is not allowed. The incorrect permissions are... https://drupaladicto.com/snippet/runtimeexception-adding-non-existent-permissions-role-not-allowed-incorrect-permissions-are <span class="field field--name-title field--type-string field--label-hidden">RuntimeException: Adding non-existent permissions to a role is not allowed. The incorrect permissions are...</span> <div class="clearfix text-formatted field field--name-field-snippet-descripcion field--type-text-long field--label-above"> <div class="field__label">Descripción</div> <div class="field__item"><p>Si has estado trabajando con módulos personalizados, o borrado algún campo relacionado con tus contenidos, dentro de Drupal 9 o 10, es muy probable que te hayas encontrado con este error.</p> <p> </p> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Jue, 03/08/2023 - 20:33</span> <div class="clearfix text-formatted field field--name-field-instrucciones field--type-text-long field--label-above"> <div class="field__label">Instrucciones</div> <div class="field__item"><p>Para solucionarlo, sigue los siguientes pasos:</p> <ol><li>En tu archivo de configuración, (El que se genera cuando ejecutas el comando drush cex), busca el permiso relacionado con el mensaje que te muestra en pantalla. Ej.:<br /><pre> <em>RuntimeException</em>: Adding non-existent permissions to a role is not allowed. The incorrect permissions are "<strong>view paragraph content footer_column</strong>". in <em>Drupal\user\Entity\Role-&gt;calculateDependencies()</em> (line <em>207</em> of <em>/var/www/lnd4all/web/core/modules/user/src/Entity/Role.php</em>). </pre> </li> <li>A continuación borra todos los archivos relacionados con dicho permisos, puede que tengas update, view, delete.<br />  </li> <li>Finalmente, ejecuta el comando "drush cim", para actualizar la configuración dentro de tu proyecto, y a continuación, borra caché y ejecuta drush updb.</li> </ol><p>     <strong>Con esto debería desaparecer el error. Yo acabo de probarlo y me funcionó.</strong></p> <p>     Si quieres leer un poco más sobre el tema: <a href="https://www.drupal.org/node/3193348">https://www.drupal.org/node/3193348</a></p> </div> </div> <div class="field field--name-field-snippet-paginador field--type-image field--label-above"> <div class="field__label">Paginador</div> <div class="field__item"> <img src="/sites/default/files/default_images/snippet-pager.png" width="100" height="100" alt="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultores especializados en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid" /> </div> </div> <div class="field field--name-field-categoria-snippet field--type-entity-reference field--label-above"> <div class="field__label">Categoría</div> <div class="field__items"> <div class="field__item"><a href="/categoria/drush" hreflang="es">drush</a></div> <div class="field__item"><a href="/categoria/configuracion" hreflang="es">configuración</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/cmi" hreflang="es">cmi</a></div> <div class="field__item"><a href="/categoria/error" hreflang="es">error</a></div> <div class="field__item"><a href="/categoria/errores" hreflang="es">errores</a></div> <div class="field__item"><a href="/categoria/exportacion" hreflang="es">exportación</a></div> <div class="field__item"><a href="/categoria/permisos" hreflang="es">permisos</a></div> <div class="field__item"><a href="/categoria/permission" hreflang="es">permission</a></div> <div class="field__item"><a href="/categoria/roles" hreflang="es">roles</a></div> <div class="field__item"><a href="/categoria/rol" hreflang="es">rol</a></div> </div> </div> <div class="field field--name-field-portada-snippet field--type-entity-reference field--label-above"> <div class="field__label">Portada</div> <div class="field__item"><article class="media media--type-imagen media--view-mode-default"> <div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Imagen</div> <div class="field__item"> <img src="/sites/default/files/styles/max_325x325/public/imagenes/portada-snippet-grande.png?itok=JZyTAbRq" width="325" height="176" alt="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" title="Snippet | www.drupaladicto.com - Consultor especializado en Drupal y Symfony" loading="lazy" typeof="foaf:Image" class="img-fluid image-style-max-325x325" /> </div> </div> </article> </div> </div> Thu, 03 Aug 2023 18:33:51 +0000 webmaster 449 at https://drupaladicto.com Contenidos de Prueba | Generados con el módulo Devel https://drupaladicto.com/curso/programacion-drupal/contenidos-de-prueba-generados-con-el-modulo-devel <span class="field field--name-title field--type-string field--label-hidden">Contenidos de Prueba | Generados con el módulo Devel</span> <div class="field field--name-field-contenidos-cap-gratis field--type-entity-reference-revisions field--label-hidden field__items"> <div class="field__item"> <style>#video-only-870 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-870 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-870 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-870"> <section id="video-only-870" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-gratuito-grande_2.jpg?itok=8dBQYXT7" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-590-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-590-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-590-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/eGXutQIDMIw&amp;max_width=0&amp;max_height=0&amp;hash=xkWV5NsCeCudS1gHm_0C5rpeAX6WhQh7VbpwqGyLRG0" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-590-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1185" style="background-color: ;border: solid px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>      Cuando estamos empezando con el desarrollo o implementación de cualquier proyecto, en la mayoría de los casos nos resultará necesario la creación de contenidos con los que podamos realizar pruebas de todo tipo.</p> <p>     Para realizar esta tarea, en Drupal contamos con el módulo <strong>Devel Generate</strong>, integrado dentro de las dependencias del módulo <a href="https://www.drupal.org/project/devel" target="_blank">Devel</a>. Por lo que, una vez instalado y activado en nuestro Drupal, sólo tendremos que dirigirnos a la url "/admin/config/development/generate/content", y allí veremos el listado de todos los tipos de contenidos que tengamos creados en nuestro proyecto.</p> <h3>CÓMO INSTALAR Y CONFIGURAR EL MÓDULO:</h3> <p><strong>Paso 1 Descargar el módulo:</strong></p> <p>     Lo primero que tendrás que hacer es descargarlo, para ello, a partir de Drupal 8 se recomienda que utilices el gestor de paquetes <a data-extlink="" href="https://getcomposer.org/" rel="noreferrer" target="_blank">Composer</a>, ya que te facilitará tanto la instalación como futuras actualizaciones del tus proyectos. No obstante también podrías descargarlo desde la <a data-extlink="" href="https://www.drupal.org/project/devel" rel="noreferrer">Página oficial del módulo</a> y una vez descargado, tendrás que colocarlo en la carpeta "modules" o "modules/contrib", dependiendo de tu instalación y asegurarte de descargar todas sus dependencias o el módulo no funcionará, esta es una de las ventajas con las que cuentas al hacer la instalación usando Composer.</p> <p><strong>Paso 2 Activación del módulo</strong> :</p> <p>     Para activar el módulo Devel, al igual que todos los demás módulos contribuidos de Drupal, tendrás la posibilidad de hacerlo, mediante el uso de la herramienta Drush, con el comando <strong>"drush en devel -y"</strong>, que sirve para activar cualquier módulos y todas sus dependencias, o desde la interfaz de Drupal.    </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 25.08%;" data-ratio="25.08" data-b-token="b-bf562569176" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="bbffe9dd-d7d5-4f17-9b0a-52076bde5c34" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/modulo_devel.png?itok=DyCTE5F_" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="163" typeof="foaf:Image" /></div></div> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 81.38%;" data-ratio="81.38" data-b-token="b-07e736f3d56" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e63f7359-7862-4490-b2de-6abe96112e6c" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/generar_contenido.jpg?itok=dQhk5U7r" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="529" typeof="foaf:Image" /></div></div> <p>     Además de poder generar automáticamente nuestros contenidos, podremos configurar algunas opciones adicionales como, especificar su fecha de publicación, comentarios relacionados, títulos para los contenidos con un límite de caracteres específico, el idioma o incluso los usuarios que los crearon, esta última opción nos facilitará el testeo de los permisos de usuario.</p> <p>     Para generar nuestro contenidos, sólo tendremos que marcar las opciones con las que deseamos trabajar, es recomendable intentarlo la primera vez como poco contenido para estar seguros de obtener lo que pensábamos o si hará falta modificar algún campo.</p> <p>     Si no estás conforme con el contenido generado o simplemente quieres volver a generar contenidos otra vez, puedes seleccionar la opción de eliminar todos los contenidos previamente creados antes de ejecutarlo.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 74%;" data-ratio="74" data-b-token="b-4b2c2db1ff0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="f0925341-0457-435c-b020-899f5a76c3ec" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/como_generar_contenidos.jpg?itok=P7foOYOI" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="481" typeof="foaf:Image" /></div></div> <p>     Una vez que hayamos revisado todos los campos que nos interesan, haremos clic en el botón que aparece en la parte inferior de la pantalla y comenzará el proceso inmediatamente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 62.62%;" data-ratio="62.62" data-b-token="b-529a6e0212d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="b59a89a7-77d6-44a7-b385-3b59d1edc906" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/idioma_y_usuarios.jpg?itok=faRslW2Z" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="407" typeof="foaf:Image" /></div></div> <p>     Cuando se haya realizado el proceso de generación de nuestros contenidos, veremos un mensaje de confirmación en la parte superior de la pantalla, con la cantidad y el tipo de contenido que decidimos utilizar.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.91%;" data-ratio="49.91" data-b-token="b-6a5876e61c1" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="dac200ad-bc83-4875-81f5-e8f373ae57f9" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/generados.png?itok=lhYaSXTY" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="533" height="266" typeof="foaf:Image" /></div></div> <p>     Para comprobarlo, sólo tendremos que dirigirnos al listado de contenidos en la url "/admin/content" y veremos el listado de contenidos generados por el módulo con las configuraciones adicionales, si es que hemos seleccionado alguna.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 49.38%;" data-ratio="49.38" data-b-token="b-4e4a8d061ee" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="182f2e84-9c0d-473e-93c7-26d287a6072f" loading="lazy" alt="Devel Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/listado_generados.jpg?itok=Jtk5KaGC" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="321" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Dom, 19/03/2023 - 09:10</span> Sun, 19 Mar 2023 08:10:21 +0000 webmaster 409 at https://drupaladicto.com Admin Toolbar https://drupaladicto.com/curso/admin-toolbar <span class="field field--name-title field--type-string field--label-hidden">Admin Toolbar</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 23:21</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1039 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1039 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1039 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1039"> <section id="video-only-1039" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/portada-post.jpg?itok=kSR2Q5ei" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-737-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-737-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-737-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/ZEuBblFboOk&amp;max_width=0&amp;max_height=0&amp;hash=_VQw-fYdj0g_Hjlv3Ge8pExGIvTB-EzIOa7aS6teNKc" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-737-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1040" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p><span id="cke_bm_91S" style="display: none;"> </span></p> <p>Es muy importante, que al momento de comenzar un proyecto con Drupal, contemos con los módulos que nos facilitarán las tareas de desarrollo, agilizando el proceso de creación, configuración y ejecución de cambios.</p> <p>Uno de estos módulos es <a href="https://www.drupal.org/project/admin_toolbar" target="_blank">Admin Toolbar</a>, que nos aportará, entre otras cosas, la posibilidad de acceder más rápidamente a cualquiera de las opciones y páginas de nuestro proyecto, ya que amplía  notablemente la funcionalidad del menú administrador que trae Drupal por defecto. </p> <p></p> <p> </p> <p>     Aunque este módulo sustituye el menú administrador con el que nos viene toda instalación de Drupal, mantiene sus funcionalidades originales, como los enlaces directos, además de heredar la capacidad responsiva, lo que significa que podremos administrar nuestra web desde cualquier dispositivo móvil o Tablet con mayor facilidad que en versiones anteriores.</p> <h3>SUB-MÓDULOS DE ADMIN TOOLBAR</h3> <p>     Cuando descargues el módulo Admin Toolbar, te recomiendo activar todos sus sub-modulos, ya que al hacerlo tendrás otras opciones bastante interesantes.. </p> <p></p> <p><em><strong>Admin Toolbar Extra Tools<br />      </strong></em>Con este sub-modulo se añaden enlaces directos a varias funcionalidades muy necesarias en nuestro desarrollo, como el borrado de caché, ejecución del cron de Drupal o las actualizaciones, así como todas las relacionadas con otro módulo muy recomendable durante cualquier desarrollo de Drupal, como es el  <a href="https://www.drupal.org/project/devel">Módulo Devel</a>.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 137.47%;" data-ratio="137.47" data-b-token="b-2ebbbc06fb5" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4656326c-1b7f-4e0a-b4c8-1d6e17ebb8ba" loading="lazy" alt="Admin Toolbar Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/admin_toolbar_extras.jpg?itok=HRwt3TK6" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="419" height="576" typeof="foaf:Image" /></div></div> <h3><strong><em>ADMIN TOOLBAR SEARCH</em></strong></h3> <p>Este interesante sub-modulo activa un potente buscador, para encontrar las diferentes formas de acceder a cualquiera de los contenidos o módulos de tus proyectos, tienes esta funcionalidad en el <a href="https://www.drupal.org/project/coffee" target="_blank">Módulo Coffe</a></p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 73.08%;" data-ratio="73.08" data-b-token="b-dbe4cc43f35" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="c54a522d-b67d-4b4a-a028-7c1f55407fec" loading="lazy" alt="Admin Toolbar Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/buscador_admin_toolbar.jpg?itok=AiRfZmk7" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="587" height="429" typeof="foaf:Image" /></div></div> <h3>ADMIN LINKS ACCESS FILTER</h3> <p>El módulo Admin links Access filter corrige la visualización de enlaces a los que el usuario no debería tener acceso (ver # 296693: Restringir el acceso a páginas de administración de nivel superior vacías) se incluyó como el submódulo de filtro de acceso a enlaces de la barra de herramientas de administrador.<br /> A partir de 8.x-1.21, el módulo de la barra de herramientas de administración se ha vuelto compatible con la Sección 508 de la Ley de rehabilitación, sobre todo al hacer que el teclado del módulo sea accesible y compatible con los contrastes de color para el enfoque. Para obtener más información sobre esta visita</p> <p> </p> <h3>DESCARGA Y ACTIVACIÓN:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong></p> <p>          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/admin_toolbar</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/admin_toolbar" target="_blank">Módulo Admin Toolbar</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.<br />  </p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en admin_toolbar -y</pre> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p></p> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/database" hreflang="es">database</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/entidades" hreflang="es">entidades</a></div> <div class="field__item"><a href="/categoria/entities" hreflang="es">entities</a></div> <div class="field__item"><a href="/categoria/interfaz-module" hreflang="es">interfaz module</a></div> <div class="field__item"><a href="/categoria/modulos" hreflang="es">módulos</a></div> <div class="field__item"><a href="/categoria/navegacion" hreflang="es">navegacion</a></div> <div class="field__item"><a href="/categoria/navigation" hreflang="es">navigation</a></div> <div class="field__item"><a href="/categoria/procedimientos" hreflang="es">procedimientos</a></div> <div class="field__item"><a href="/categoria/rol" hreflang="es">rol</a></div> <div class="field__item"><a href="/categoria/user" hreflang="es">user</a></div> <div class="field__item"><a href="/categoria/usuarios" hreflang="es">usuarios</a></div> </div> </div> Mon, 06 Mar 2023 22:21:42 +0000 webmaster 213 at https://drupaladicto.com Backup and Migrate https://drupaladicto.com/curso/backup-and-migrate <span class="field field--name-title field--type-string field--label-hidden">Backup and Migrate</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 23:18</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1041 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1041 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1041 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1041"> <section id="video-only-1041" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-738-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-738-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-738-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/95fsIISibu4&amp;max_width=0&amp;max_height=0&amp;hash=4F1D-zZuNDOyswsj0-hFzjJrK__QoEupCFLsS_Y453c" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-738-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1042" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>  Imagina que estás trabajando en un nuevo proyecto con Drupal 8 o 9 en tu ordenador, estás modificando contenidos, estructuras, taxonomías y de pronto ocurre un error que te deja sin acceso a la última versión estable de tu proyecto.</p> <p>Por esta razón es muy recomendable que el segundo módulo que instales en cualquier Drupal sea <strong>Backup and Migrate, </strong>por que podrás realizar copias de seguridad antes de instalar otros módulos o aplicar cambios importantes. Además tendrás la opción de descargar el archivo comprimido, si quieres hacer un traspaso de tu instalación hacia otro entorno para aplicar dichos cambios inmediatamente o podrás programarlas para que se hagan automáticamente en tu servidor de producción.</p> <h3>Cómo instalar y configurar el módulo:</h3> <p><strong>Paso 1 Descargar el módulo:</strong></p> <p>     Lo primero que tendrás que hacer es descargarlo, para ello, a partir de Drupal 8 se recomienda que utilices el gestor de paquetes <a href="https://getcomposer.org/" target="_blank">Composer</a>, ya que te facilitará tanto la instalación como futuras actualizaciones del tus proyectos. No obstante también podrías descargarlo desde la <a href="https://www.drupal.org/project/backup_migrate" target="_blank">Página oficial del módulo</a> y una vez descargado, tendrás que colocarlo en la carpeta "modules" o "modules/contrib", dependiendo de tu instalación.</p> <p><strong>Paso 2 Configuración del settings:</strong></p> <p>     Configuración de los archivos privados dentro de "Settings.php", este paso es muy importante, porque el módulo Backup and Migrate utiliza por defecto, los archivos privados de Drupal, ya que las copias de seguridad no deberían estar disponibles para nadie más que los administradores del sitio. </p> <p>     Si abres tu archivo "settings.php" con tu editor de texto o IDE favorito y buscas la palabra "private", encontrarás varias líneas de código que te explican cómo funciona, además de la línea específica, que deberás descomentar, borrando la almohadilla "#" para luego añadir la ubicación que tendrá tu archivo private.</p> <p>     Puedes utilizar por ejemplo: "<strong>$settings['file_private_path'] = '../private</strong>'; esto significa que tu carpeta "private" estará colocada a nivel de tu directorio Raiz y que dentro el módulo Backup and Migrate creará dentro su propia carpeta con los accesos y permisos requeridos para que funcione correctamente.</p> <p>     </p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 43.23%;" data-ratio="43.23" data-b-token="b-0ec778868c0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="70584fcb-1a11-422d-bd86-11ae7bea51d9" alt="Backup and Migrate Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/private_settings.png?itok=Xw5DOuqY" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="281" typeof="foaf:Image" /></div></div> <p><strong>Paso 3 Activación del módulo</strong> :</p> <p>     Para activar el módulo Backup and migrate, al igual que todos los demás módulos contribuidos de Drupal, tendrás la posibilidad de hacerlo, mediante el uso de la herramienta Drush, con el comando "drush en backup_migrate -y", que sirve para activar cualquier módulos y todas sus dependencias, o desde la interfaz de drupal.   </p> <p> </p> <p><strong>Paso 4 Comprobación:</strong></p> <p>     Ahora que ya tenemos activado el módulo y que hemos configurado correctamente el archivo "settings.php" y la carpeta para los archivos privados y las copias del módulo, nos toca asegurarnos de que todo funciona según el plan.</p> <p>     Para ello puedes acceder a la pantalla de configuraciones del módulo, desde el menú superior y luego crear tu primera copia de seguridad, asegurándote de que la copia se guardará en los archivos privados y después haciendo clic en el botón de "hacer copia de seguridad ahora", una vez realizada la copia:</p> <pre>  <strong>https://miproyecto_drupal/admin/config/development/backup_migrate</strong></pre> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 52.96%;" data-ratio="52.96" data-b-token="b-6f43dce3f03" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="82eea3b2-1f7b-432e-8448-a856e568a806" alt="Backup and Migrate Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/accer_al_bk_migrate.jpg?itok=d50lV-3M" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1097" height="581" typeof="foaf:Image" /></div></div> <p> </p> <p>     Si todo está correcto verás un mensaje de confirmación y luego podrás buscar la copia guardada, en la pestaña "copias de seguridad guardadas", o si lo prefieres, también podrás descargar el archivo comprimido, por si quieres trasladar tu proyecto a otro entorno.</p> <p> </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 96.72%;" data-ratio="96.72" data-b-token="b-f5267692d68" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4d946552-4218-4dfd-a1e2-38eb436dedaa" alt="Backup and Migrate Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/copia_completada.png?itok=f6i_cSjr" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="549" height="531" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/backup" hreflang="es">backup</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/copia-seguridad" hreflang="es">copia seguridad</a></div> <div class="field__item"><a href="/categoria/drupal-7" hreflang="es">drupal 7</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/migracion" hreflang="es">migración</a></div> <div class="field__item"><a href="/categoria/modulo" hreflang="es">modulo</a></div> <div class="field__item"><a href="/categoria/module" hreflang="es">module</a></div> <div class="field__item"><a href="/categoria/mysql" hreflang="es">mysql</a></div> </div> </div> Mon, 06 Mar 2023 22:18:07 +0000 webmaster 212 at https://drupaladicto.com Field Group https://drupaladicto.com/curso/field-group <span class="field field--name-title field--type-string field--label-hidden">Field Group</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 22:58</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1068 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1068 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1068 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1068"> <section id="video-only-1068" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-752-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-752-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-752-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/TtyN0bFQqVQ&amp;max_width=0&amp;max_height=0&amp;hash=SZmXlikuXdH02sJBXkz3r1HKBtSdcRaoOuwzIpP_V4w" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-752-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1111" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>      En varias ocasiones, nos encontraremos, con la necesidad de añadir un aspecto más funcional y amigable, para nuestros formularios y/o contenidos; si por ejemplo, nuestro formulario de creación, de un contenido específico, cuenta con un gran número de campos u opciones para su configuración, poder incluirlas dentro de pestañas, acordiones o tabs, suele aportar un cambio crucial, en la mayoría de los casos.</p> <p>     El módulo Fied Group, de Drupal, no permitirá realizar muy fácilmente, estos cambios, utilizando la interfaz de usuario, con un mínimo de esfuerzo para lograr el objetivo esperado.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 71.51%;" data-ratio="71.51" data-b-token="b-849b1207258" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="05e08067-631a-45cb-b1e8-228bcf90dbfe" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/fieldgroup_drupal.png?itok=Z3Mn_IZq" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="1095" height="783" typeof="foaf:Image" /></div></div> <h3> Descarga y Activación:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong><br /><br />           1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/field_group</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/field_group">Módulo Field Group</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.</p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en field_group -y</pre> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 109.74%;" data-ratio="109.74" data-b-token="b-473235ed5d4" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0ea30562-15ef-4b5f-b244-af74cc669328" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/fieldgroup_interfaz.png?itok=YJgJ1fId" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="462" height="507" typeof="foaf:Image" /></div></div> <h2>     Cómo agrupar elementos utilizando el módulo Field Group</h2> <p>          Es importante entender que este módulo, en realidad crea un "contenedor" o grupo, al que añade la etiqueta html correspondiente, por ejemplo Vertical Tabs o Pestañas verticales, y a continuación, si queremos dividir los elementos en varias pestañas, tendremos que añadir un segundo "contenedor", equivalente a la cantidad de pestañas que esperamos utilizar.</p> <p>          Para poder comenzar a definir nuestras estructuras de campos, con este módulo, una vez lo hayamos instalado, nos iremos al menú estructura/tipo de contenido y nos cololaremos en la pestaña del contenido que vamos a modificar. Por ejemplo, si lo que queremos añadir son pestañas dentro del formulario de creación de un contenido, entonces, nos colocaremos dentro de la pestaña que permite modificar el formulario.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 70.56%;" data-ratio="70.56" data-b-token="b-c2205facadb" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="636a7027-5c90-4d68-900f-af2c50cc83ca" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/fieldgroup_formulario.png?itok=w_EDnexW" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="445" height="314" typeof="foaf:Image" /></div></div> <p>      Por el contrario, si queremos que los cambios se apliquen, al visualizar nuestro tipo de contenido, tendremos que colocarnos en la pestaña que permite modificar su presentación.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 64.94%;" data-ratio="64.94" data-b-token="b-d14f14ee4d5" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4711e041-23aa-4e1a-9d05-3ea144168db7" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/fielgroup_presentacion.png?itok=qiZzXzeQ" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="445" height="289" typeof="foaf:Image" /></div></div> <p>     Una vez tengamos claros los campos que esperamos agrupar, procedremos a elegir la opción que se adapte mejor a nuestras necesidades. En el siguiente ejercicio vamos a dividir en diferentes zonas el formulario de creación del tipo de contenido Artículo, que nos viene por defecto al instalar Drupal.</p> <ul><li><strong>Paso 1</strong> : Hacer clic en el botón Add Field Group, para que nos permita seleccionar la opción que vamos a utilizar en el Elemento Padre o Contenedor principal.<br />  </li> <li><strong>Paso 2</strong> : Selecionamos el tipo de grupo que vamos a utilizar.<br />  </li> <li><strong>Paso 3</strong> : Definimos el efecto de animación para cuando hagamos clic sobre el elemento, también podremos agregar un ID o clases para aplicar usando css.<br />  </li> <li><strong>Paso 4</strong> : Hacer clic en el botón Crear grupo. </li> </ul><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 167.57%;" data-ratio="167.57" data-b-token="b-bc453aed0e0" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="11028703-0c5e-4d49-ae91-52fed06508e5" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/creacion_fielgroup_padre.png?itok=_Ci3fmTc" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="801" typeof="foaf:Image" /></div></div> <p>     Por defecto, una vez creado el elemento con Field Group, aparecerá en la parte inferior, con los desactivados, para que podamos pasar al siguiente elemento o activarlo cuando estemos preparados.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 53.21%;" data-ratio="53.21" data-b-token="b-7e0e88c40ce" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="db24f101-5f18-4e9e-89ae-de3a1b3b14c9" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/acordion_desactivado.png?itok=iis6Q__w" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="280" height="149" typeof="foaf:Image" /></div></div> <p>     En el caso de la creación de los elementos "Hijos" del contenedor principal, el proceso es casi el mismo, con la diferencia de que seleccionaremos otro tipo de grupo, que puede variar según la opción elegida para el elemento padre. Por ejemplo, si el "Padre" es del tipo<strong> Accordion</strong>, los "hijos" deberán ser del tipo <strong>Accordion item</strong></p> <p> </p> <ul><li><strong>Paso 1</strong> : Hacer clic en el botón Add Field Group, para que nos permita seleccionar la opción que vamos a utilizar en el Elemento Hijo o Contenedor secundario.<br />  </li> <li><strong>Paso 2</strong> : Selecionamos el tipo de grupo que vamos a utilizar, dependerá del elemento que se haya seleccionado como padre.<br />  </li> <li><strong>Paso 3</strong> : Definimos si el elemento aparecerá cerrado o abierto por defecto, también podremos agregar un ID o clases para aplicar usando css.<br />  </li> <li><strong>Paso 4</strong> : Hacer clic en el botón Crear grupo. </li> </ul><p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 167.57%;" data-ratio="167.57" data-b-token="b-dfe986777de" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="b14ff1ef-1391-48ef-8333-de6baf3e048a" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/fieldgroup_hijos.png?itok=jeMmhtlE" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="801" typeof="foaf:Image" /></div></div> <p>     Para finalizar, arrastraremos los elementos en la posición correspondiente, para que se muestre cada uno dentro del otro, si queremos varias pestañas dentro de un elemento padre, bastará con añadir tantos Items del tipo hijo, como pestañas necesarias.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 98.65%;" data-ratio="98.65" data-b-token="b-06cfdaab046" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="dd97aa99-1aef-4fa1-b3fb-01db51e0fde4" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/elementos_fieldgroup.png?itok=geWcS-38" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="297" height="293" typeof="foaf:Image" /></div></div> <p>     Si abrimos el formulario de creación del contenido, deberíamos ver algo parecido a la siguiente imagen.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 109.94%;" data-ratio="109.94" data-b-token="b-a2cdd4a7f6b" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="d1604329-e35e-4f49-85e7-c43ff33cd620" alt="Field Group Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" loading="lazy" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/desplegar_fieldgroup.png?itok=TkzoBLSu" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="473" height="520" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/campos" hreflang="es">campos</a></div> <div class="field__item"><a href="/categoria/campos-referenciados" hreflang="es">campos referenciados</a></div> <div class="field__item"><a href="/categoria/forms" hreflang="es">forms</a></div> <div class="field__item"><a href="/categoria/formularios" hreflang="es">formularios</a></div> <div class="field__item"><a href="/categoria/interfaz" hreflang="es">interfaz</a></div> <div class="field__item"><a href="/categoria/drupal-7" hreflang="es">drupal 7</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/fields" hreflang="es">fields</a></div> <div class="field__item"><a href="/categoria/sitebuilder" hreflang="es">sitebuilder</a></div> </div> </div> Mon, 06 Mar 2023 21:58:49 +0000 webmaster 207 at https://drupaladicto.com Importar contenidos y usuarios desde CSV en Drupal 8/9 https://drupaladicto.com/curso/importar-contenidos-y-usuarios-desde-csv-en-drupal-89 <span class="field field--name-title field--type-string field--label-hidden">Importar contenidos y usuarios desde CSV en Drupal 8/9</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 22:46</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1066 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1066 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1066 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1066"> <section id="video-only-1066" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-751-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-751-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-751-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/D-MX8gCR9vA&amp;max_width=0&amp;max_height=0&amp;hash=rbE08TJD1are8r3TWP6SqcN5kMiJzESa9fRxY_IWOVc" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-751-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1115" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>    Muchas veces, al trabajar con proyectos web, nos encontrarmos con varias actividades relacionadas al traspaso de datos y/o migraciones, entre plataformas diferentes o versiones distintas de la misma. Según el caso, para realizar dicho procedimiento, contamos con varios métodos como el consumo de información a través de los servicios web o la importación desde archivos con diferentes formatos, que podrían ser xml, uml, json, csv, entre otros.</p> <p>     Debido a que Drupal, al igual que otros CMS O gestores de contenido, utiliza bases de datos y tablas, como parte de su estructura, para guardar o gestionar todo aquello a lo que tenemos acceso, tanto si somos administradores, gestores o incluso usuarios finales, una vez instalado; es posible importar sus contenidos y usuarios desde un archivo en formato csv, ya que nos permitirá importar varias tablas y contenidos de una manera simple y visualmente gestionables, si nos apoyamos en programas para hojas de cálculo como Libre Office o Microsoft Excel.</p> <h3> DESCARGA Y ACTIVACIÓN:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong></p> <p>          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/csv_importer</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/csv_importer" target="_blank">Módulo CSV Importer</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.</p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en csv_importer -y</pre> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 51.79%;" data-ratio="51.79" data-b-token="b-542cad4475d" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="74afb1eb-75d1-479e-840c-1e4ec99e6417" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/csv_importer_drush.png?itok=XZSG2tqK" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="390" height="202" typeof="foaf:Image" /></div></div> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 74.1%;" data-ratio="74.1" data-b-token="b-c162b463724" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="94882a4d-d943-4036-8526-c290a61ae312" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/importer_por_interfaz.png?itok=HKmj3lst" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="390" height="289" typeof="foaf:Image" /></div></div> <h2>    PÁGINA DE CONFIGURACIÓN DE CSV IMPORTER</h2> <p>        Una vez activado el módulo, podremos dirigirnos a su página de configuración, en la url "<strong>/admin/config/development/csv-importer"</strong>, donde veremos un selector, que nos mostrará las diferentes opciones de importación y cambiará de acuerdo con lo que hayamos elegido. </p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-ddb2e69a542" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="cd0fb8d6-8b57-4b4b-ba6f-f0d6df1c55a1" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/csvimporter.png?itok=6LCspb7y" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <h2>     CÓMO IMPORTAR CONTENIDOS CON CSV IMPORTER</h2> <p>          Para importar contenidos, tendremos que seleccionar la opción tipo de contenido y a continuación, veremos el listado de los tipos de contenidos que hayamos configurado en nuestro drupal.</p> <p>          <strong>Select entity type</strong>: Permite seleccionar el tipo de entidad con el que vamos a trabajar en la importación. Por defecto, en una instalación nueva de Drupal, tendremos las siguientes entidades disponibles: Usustio, Enlace de menú personalizado, Contenido, Comentario y Término de taxonomía.</p> <p>          <strong>Select entity bundle</strong>: Permite seleccionar el tipo de contenido que deseamos importar, dependiendo de los tipos que tengamos en el drupal instalados, este listado podría variar. Por defecto, en una instalación nueva de Drupal, tendremos Artículo y Página básica.</p> <p>         <em> ¿Qué es un Bundle?</em>; según la página oficial de Drupal "En Drupal 8, los paquetes son un tipo de contenedor de información que contiene el campo o las definiciones de configuración. A veces se les llama "subtipos". Los paquetes son opcionales y en la jerarquía de tipos de contenedores de información se ajustan debajo de los tipos de entidad."</p> <p>         <strong>Select delimiter</strong>: Permite seleccionar el separador que utilizaremos en el archivo de importación. Lo más frecuente es utilizar comas ( , ) o punto y como ( ; ), para separar los contendios dentro del archivo para importar.</p> <p>         <strong>Select CSV file:</strong> Permite cargar el archivo con el que finalmente, importaremos los contenidos, usuarios, términos, etc.</p> <h2>     CÓMO PREPARAR EL ARCHIVO DE IMPORTACIÓN USANDO OPEN OFFICE</h2> <p>          Ya mencioné al principio, que podremos crear archivos de importación en formato CSV utilizando programas gratuitos como Open Office o Microsoft Excel. El objetivo principal es que podamos controlar visualmente los contenidos que vayamos a utilizar, ya que el formato original del csv es un conjunto de datos y comas. Algo parecido al siguiente ejemplo:</p> <pre> <code>title,body,body,body CSV importer 1,body 1,body 2,body 3 CSV importer 2,body 4,body 5,body 6</code></pre> <p>     Para que podamos configurar un archivo de importación, lo importante es tener claro que la primera línea del archivo es la que define las cabeceras de las columnas y en las siguientes, los contenidos que se colocarán dentro de cada columna respectivamente. </p> <h3>     <strong>PASO 1- CREAR ARCHIVO </strong></h3> <p>        Abrir el programa Open Office y crear una hoja de cálculo nueva.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-d5d7d61f63e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="c7e72f26-532c-4482-a0c5-1fc130e181f7" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/abir_openoffice.png?itok=eRZTViTI" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <h3>     PASO 2 - ELIMINAR HOJAS SOBRANTES ANTES DE IMPOTAR</h3> <p>        Es muy importante que antes de comenzar a rellenar el archivo con nuestros datos, eleminemos las hojas adicionales que generan por defecto al crear una hoja de cálculo, o de lo contrario, no se realizará la importación.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-4284e8a1f39" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="7f709e34-82d7-4bb8-8fcf-c792e594b0e6" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/eliminar_hojas_sobrantes.png?itok=io3BO1AF" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <h3>     PASO 3 - GUARDAR EL ARCHIVO EN FORMATO CSV</h3> <p>        Una vez hayamos rellenado el documento con todos los datos que vamos a importar, asegurándonos de que cada columna corresponda con el contenido o usuario esperado, procederemos a guardar nuestro archivo en el formato csv. </p> <p>       Para ello, iremos al menú <strong>Archivo/Guardar como</strong></p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 57.95%;" data-ratio="57.95" data-b-token="b-989d187e396" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0d5f97c3-389e-4f9a-8847-0a46613efb4e" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/guardar_como_csv.png?itok=Z6MDaP5D" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="478" height="277" typeof="foaf:Image" /></div></div> <p>     A continuación, seleccionaremos el formato <strong>CSV</strong> y el programa nos preguntará, si deseamos mantener el mismo formato para continuar editando, seleccionaremos que sí, y de esta forma, aunque exportemos el archivo, también podremos realizar más cambios o correcciones usando el programa Open Office más adelante.</p> <p>     <strong>Muy importante para los contenidos en español Formato Unicode UTF-8</strong>, en el caso de los contenidos en español, en la siguiente ventana que se abrirá deberíamos asegurarnos del formato correcto, para evitar errores con los signos de puntuación específicos de nuestro idioma como el uso de Ñ, acentos, etc.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 154.03%;" data-ratio="154.03" data-b-token="b-29af18d013a" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="cb0f9210-7eee-41f7-9d89-ae908a54d156" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/guardar_csv_2.png?itok=vwiYBcph" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="422" height="650" typeof="foaf:Image" /></div></div> <h3>     PASO 4 - IMPORTANDO LOS CONTENIDOS DESDE EL CSV CREADO</h3> <p>        Cuando hayamos terminado de configurar y guardar nuestro archivo csv, volveremos a la página de configuración del módulo CSV Importer, en la url "<strong>/admin/config/development/csv-importer" </strong>y procedermos a cargar nuestro archivo para comenzar con la importación.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 192.31%;" data-ratio="192.31" data-b-token="b-eb0664b8aa5" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="9a919970-4bc1-474a-a4e3-323b7b14fe13" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/importacion_realizada.png?itok=Qx4E6uZI" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="338" height="650" typeof="foaf:Image" /></div></div> <h2>     PROBLEMAS CON LA IMPORTACIÓN</h2> <p>          Es posible, que al hacer clic en el botón de importar, veas en la pantalla un error muy frecuente relacionado conel campo título, esto ocurre porque, si haz utilizado un programa de hojas de cáculo como Open Office o Microsoft Excel, al guardar el archivo, se ha añadido un espacio entre los campos título y el siguiente campo, que por defecto es el body. El campo título es el identificador por defecto en Drupal, por lo tanto, no debería existir ningún espacio relacionado con él.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 97.31%;" data-ratio="97.31" data-b-token="b-18e619c7730" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0b1db784-4905-4974-91f8-d42369cb733b" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/error_importacion.png?itok=v6jMvY7k" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="521" height="507" typeof="foaf:Image" /></div></div> <p>     Para solucionarlo, abre el archivo csv utilizando el block de notas de windows o cualquier otro programa que te permita ver el contenido original, una vez abierto, borra el espacio que existe y una vez guardado el cambio, intenta realizar la importación nuevamente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 64.56%;" data-ratio="64.56" data-b-token="b-1638397fcc2" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="e9e3eada-14dd-4869-be3c-66e67e508225" loading="lazy" alt="Csv Importer Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/espacio_titulo.png?itok=WNK48Wsv" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="412" height="266" typeof="foaf:Image" /></div></div> <h2>     EJEMPLOS DE IMPORTACIÓN CON CSV IMPORTER</h2> <p>          Si quieres conocer más sobre las estructuras de los archivos para importar, puedes visitar su <a href="https://www.drupal.org/docs/8/modules/csv-importer/examples" target="_blank">Página de Ejemplos de Importación con CSV Importer</a></p> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/bases-de-datos" hreflang="es">bases de datos</a></div> <div class="field__item"><a href="/categoria/database" hreflang="es">database</a></div> <div class="field__item"><a href="/categoria/code" hreflang="es">code</a></div> <div class="field__item"><a href="/categoria/codigo" hreflang="es">código</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/consola" hreflang="es">consola</a></div> <div class="field__item"><a href="/categoria/console" hreflang="es">console</a></div> <div class="field__item"><a href="/categoria/contenidos" hreflang="es">contenidos</a></div> <div class="field__item"><a href="/categoria/csv" hreflang="es">csv</a></div> <div class="field__item"><a href="/categoria/desarrollo" hreflang="es">desarrollo</a></div> <div class="field__item"><a href="/categoria/development" hreflang="es">development</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/importacion" hreflang="es">importación</a></div> <div class="field__item"><a href="/categoria/instalacion" hreflang="es">instalacion</a></div> <div class="field__item"><a href="/categoria/interfaz" hreflang="es">interfaz</a></div> <div class="field__item"><a href="/categoria/modulos" hreflang="es">módulos</a></div> <div class="field__item"><a href="/categoria/module" hreflang="es">module</a></div> <div class="field__item"><a href="/categoria/procedimientos" hreflang="es">procedimientos</a></div> <div class="field__item"><a href="/categoria/script" hreflang="es">script</a></div> <div class="field__item"><a href="/categoria/sitebuilder" hreflang="es">sitebuilder</a></div> <div class="field__item"><a href="/categoria/tipos-de-contenido" hreflang="es">tipos de contenido</a></div> </div> </div> Mon, 06 Mar 2023 21:46:00 +0000 webmaster 204 at https://drupaladicto.com Pathauto https://drupaladicto.com/curso/pathauto <span class="field field--name-title field--type-string field--label-hidden">Pathauto</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 22:37</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1048 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1048 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1048 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1048"> <section id="video-only-1048" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-742-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-742-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-742-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/7EYhvkQmfv4&amp;max_width=0&amp;max_height=0&amp;hash=GP6oyQmCX1lp1uHnTPRAEHfzMYZVptW1OohqA2L2t8k" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-742-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1118" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p>Una de las características más importantes de cualquier web hoy en día, es la estructura de sus urls, para que "sean amigables" y más fáciles de encontrar o colocar en los buscadores, mejorando el posicionamiento exponencialmente.</p> <p>Por si todavía no lo sabes, las urls amigables son aquellas que en lugar de tener una apariencia compleja como "https://miweb?var=producto?var=detalle$.php", se muestran con una estructura fácil de entender como por ejemplo "https://miweb/productos/jarron/detalle".</p> <p>En Drupal para ayudarte a gestionar la configuración de las urls relacionadas con tus contenidos, ya sean páginas, productos o noticias, cuentas con el módulo "path", que viene incorporado en cualquier instalación a partir de la versión 8.</p> <p>Si abres, en modo edición, cualquier contenido en una instalación de Drupal, verás a la derecha el campo correspondiente a este módulo, que te permitirá añadir o editar la url con la que se identificará tu contenido. añadiéndola con un slash "/" al principio para que funcione correctamente, ej: "/servicios".</p> <p>El problema, es que este módulo, por defecto, no te permite automatizar o añadir patrones, que se generen durante el proceso de creación de tus contenidos, por ejemplo si tuvieras que añadir manualmente cada url, pensando en su estructura y acordándote de que no te falte ningún elemento para que todas funcionen igualmente.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 30.31%;" data-ratio="30.31" data-b-token="b-1dcd0aa181a" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="7e1ef602-5078-4e7f-b127-98bcc69092dd" loading="lazy" alt="Pathauto Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/url_contenidos.png?itok=NsQffD-U" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="197" typeof="foaf:Image" /></div></div> <p>Por suerte, como siempre, Drupal nos ofrece diferentes módulos, que podremos descargar, activar y utilizar según las necesidades de nuestro proyecto y, en este caso contaremos con uno de ellos llamado "<a href="https://www.drupal.org/project/pathauto" target="_blank">Pathauto</a>"</p> <h3>DESCARGA Y ACTIVACIÓN:</h3> <p>Para descargar y activar cualquier módulo de Drupal tienes varias opciones:</p> <p><strong>     Descarga:</strong></p> <p>          1.- La forma recomendada a partir de Drupal 8, es utilizando el gestor de paquetes Composer, ejecutando en tu consola el comando:</p> <pre> composer require drupal/pathauto</pre> <p>          2.- Descargándolo manualmente el módulo desde la página oficial del <a href="https://www.drupal.org/project/pathauto" target="_blank">Módulo Pathauto</a> y una vez descargado y colocado en carpeta "modules/contrib", si haz descargado todos tus módulos manualmente, deberías crear la carpeta "contrib", para que puedas diferenciar entre tus módulos personalizados y los que están disponibles directamente en la Página oficial de Drupal.<br />  </p> <p>     <strong>Activación:</strong></p> <p>          1.- Utilizando la herramienta de consola Drush, la opción "-y" activará todos los sub-modulos automáticamente</p> <pre> drush en pathauto -y</pre> <p>          2.- Desde la interfaz de usuario de Drupal, en la url "/admin/modules", y luego marcando el check junto al nombre de tu módulo y haciendo clic en el botón guardar que aparecer al final de la página.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 121.66%;" data-ratio="121.66" data-b-token="b-3b82c3149e6" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="41cdfe29-4031-406a-9dc0-f2af62c533f3" loading="lazy" alt="Pathauto Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/pathauto.png?itok=TMQ2CIeW" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="494" height="601" typeof="foaf:Image" /></div></div> <h2>CÓMO CREAR PATRONES DE URLS CON PATHAUTO</h2> <p>Después de haber descargado y activado el módulo <a href="https://www.drupal.org/project/pathauto">pathauto</a>, nos tocará decidir qué tipo de url deseamos para nuestros contenidos, podemos crear un patrón que añada automáticamente el tipo de contenido, para que la estructura de la url se ej: "http://localhost/vivienda/apartamento/listo-para-vivir".</p> <p>Por defecto, cuando no tenemos el pathauto configurado, o ningún patrón para un tipo de contenido específico, Drupal crear una url como "http://localhost/node/1"</p> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/administracion" hreflang="es">administración</a></div> <div class="field__item"><a href="/categoria/alias" hreflang="es">alias</a></div> <div class="field__item"><a href="/categoria/automatizacion" hreflang="es">automatización</a></div> <div class="field__item"><a href="/categoria/url" hreflang="es">url</a></div> <div class="field__item"><a href="/categoria/patrones-url" hreflang="es">patrones url</a></div> <div class="field__item"><a href="/categoria/url-amigables" hreflang="es">url amigables</a></div> <div class="field__item"><a href="/categoria/backend" hreflang="es">backend</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/seo" hreflang="es">seo</a></div> <div class="field__item"><a href="/categoria/posicionamiento" hreflang="es">posicionamiento</a></div> <div class="field__item"><a href="/categoria/database" hreflang="es">database</a></div> <div class="field__item"><a href="/categoria/development" hreflang="es">development</a></div> <div class="field__item"><a href="/categoria/drupal-8" hreflang="es">drupal 8</a></div> <div class="field__item"><a href="/categoria/drupal-9" hreflang="es">drupal 9</a></div> <div class="field__item"><a href="/categoria/entidades" hreflang="es">entidades</a></div> <div class="field__item"><a href="/categoria/entities" hreflang="es">entities</a></div> <div class="field__item"><a href="/categoria/interfaz" hreflang="es">interfaz</a></div> <div class="field__item"><a href="/categoria/navegacion" hreflang="es">navegacion</a></div> <div class="field__item"><a href="/categoria/navigation" hreflang="es">navigation</a></div> <div class="field__item"><a href="/categoria/path" hreflang="es">path</a></div> </div> </div> Mon, 06 Mar 2023 21:37:07 +0000 webmaster 201 at https://drupaladicto.com Private y Tmp Files | Configurar archivos Privados y Temporales en Drupal https://drupaladicto.com/curso/private-y-tmp-files-configurar-archivos-privados-y-temporales-en-drupal <span class="field field--name-title field--type-string field--label-hidden">Private y Tmp Files | Configurar archivos Privados y Temporales en Drupal</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" about="/luis-alberto-mejia" typeof="schema:Person" property="schema:name" datatype="">webmaster</span></span> <span class="field field--name-created field--type-created field--label-hidden">Lun, 06/03/2023 - 22:34</span> <div class="field field--name-field-contenidos-post field--type-entity-reference-revisions field--label-visually_hidden"> <div class="field__label visually-hidden">Contenidos</div> <div class="field__items"> <div class="field__item"> <style>#video-only-1050 .play-btn:hover::after { border-left: 15px solid #1fd7d9; transform: scale(20); border-left: 15px solid #fff; } #video-only-1050 .play-btn::before { border: 5px solid #1fd7d9; } #video-only-1050 .play-btn { background: radial-gradient(#1fd7d9 50%, rgba(66, 109, 202, 0.4) 52%); }</style> <div class="paragraph paragraph--type--video-only paragraph--view-mode--default" id="vol-1050"> <section id="video-only-1050" class="about area-padding video-block-wrapper"> <div class="col video-box"> <div class="portada"> <img src="/sites/default/files/styles/diapositiva_1200x650/public/2023-07/custom-module.jpg?itok=5PSIHo9t" class="img-fluid" alt=""> <div class="field field--name-vo-youtube-video field--type-entity-reference field--label-visually_hidden"> <div class="field__label visually-hidden">Video de Youtube</div> <div class="field__item"><article class="media media--type-remote-video media--view-mode-diapositiva-1200x650"> <div class="field field--name-field-media-oembed-video field--type-string field--label-visually_hidden"> <div class="field__label visually-hidden">URL de Video remoto</div> <div class="field__item"><div class="modal micromodal-slide" id="modal-media-743-0-field-media-oembed-video" aria-hidden="true"> <div class="modal__overlay" tabindex="-1" data-micromodal-close> <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-media-743-0-field-media-oembed-video-content"> <a class="modal__btn" data-micromodal-close aria-label="Close this dialog window">X</a> <main class="modal__content" id="modal-media-743-0-field-media-oembed-video-content"> <div class="videoWrapper"><iframe src="/media/oembed?url=https%3A//youtu.be/HKYvfBYUF_Q&amp;max_width=0&amp;max_height=0&amp;hash=mle9WXo6K48l-7-3FVx924hi4XlostvJOsYz2ufHrTc" frameborder="0" allowtransparency="" class="media-oembed-content" title="Time Value of Money"></iframe></div> </main> </div> </div> </div> <div><a class="myButton" data-micromodal-trigger="modal-media-743-0-field-media-oembed-video"><span class="btn play-btn">.</span></a></div> </div> </div> </article> </div> </div> </div> </div> </section> </div> </div> <div class="field__item"> <div class="paragraph paragraph--type--text-only paragraph--view-mode--default" id="txonly-1112" style="background-color: ;border: solid 2px;border-color: #096ba0;border-radius: 5px;padding: 10px;"> <div class="clearfix text-formatted field field--name-to-text field--type-text-long field--label-visually_hidden"> <div class="field__label visually-hidden">Texto</div> <div class="field__item"><p><span id="cke_bm_111S" style="display: none;"> </span></p> <p>    Al realizar cualquier instalación de Drupal, durante el proceso se debería crear, de forma automática, la carpeta pública, para todos los archivos que serán accesibles desde el navegador, esta carpeta se llamará <em><strong>files</strong></em>, y podremos encontrarla dentro de la carpeta "web/sites/default/<em><strong>files</strong></em>", si haz realizado la instalación mediante Composer,</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 24.77%;" data-ratio="24.77" data-b-token="b-d83b062c454" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="8223101b-1923-4476-917b-598bd6953f25" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/files_en_drupal.jpg?itok=ctGfnGGH" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="161" typeof="foaf:Image" /></div></div> <p>     Si quieres aprender a instalar Drupal 9 utilizando Composer, <a href="https://www.drupaladicto.com/curso/instalacion-de-drupal-9-usando-composer">HAZ CLIC AQUÍ</a></p> <p>o dentro de "sites/default/<em><strong>files</strong></em>", en caso de que estés trabajando con una instalación de Drupal, siguiendo el procedimiento tradicional (Ya obsoleto), es decir, que haya sido instalado al descargar el archivo .zip desde <a href="https://www.drupal.org/download">www.drupal.org</a>.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 20.77%;" data-ratio="20.77" data-b-token="b-d4b52b66163" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="8fbe2d15-49c5-4bef-b91c-d13e8da91ddd" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/drupal_zip.jpg?itok=Ta1TtSs6" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="135" typeof="foaf:Image" /></div></div> <p>     Si quieres aprende a instalar Drupal 9 descargando el archivo .zip (No recomendado), <a href="https://www.drupaladicto.com/curso/instalacion-utilizando-el-archivo-drupal-900zip">HAZ CLIC AQUÍ</a>.</p> <p>     Pero hoy nos vamos a centrar en otras dos carpetas con igual importancia dentro del sistema de archivos de Drupal, se trata de la ubicación para los archivos con acceso restringido, conocida como Private y la encargada de guardar los archivos temporales, normalmente conocida como tmp.</p> <p>     Ambas carpetas no se instalan automáticamente, por lo que, una vez finalizada la instalación de nuestro proyecto Drupal, tendremos que añadir la configuración correspondiente a estas dos y crearlas de forma manual, en caso de ser necesario.</p> <h2>     COMPROBANDO LA CONFIGURACIÓN DE LOS ARCHIVOS DE DRUPAL</h2> <p>     Lo primero que haremos antes de comenzar a modificar las configuraciones de los archivos privados y los temporales, es verificar la configuración del sistema de archivos de Drupal, para ello, accedermos a la url "/admin/config/media/file-system", o si tienes el módulo <a href="https://www.drupaladicto.com/curso/admin-toolbar">Admin Toolbar</a> instalado, podrás acceder de la siguiente forma:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 48.31%;" data-ratio="48.31" data-b-token="b-83d5d0ccc49" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="4f1ea19a-5152-472e-a6cf-616cdfbdbc4b" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/sistema_archivos.jpg?itok=CmR3RTM0" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="314" typeof="foaf:Image" /></div></div> <p>     Si quieres aprender a instalar el módulo Admin Toolbar, <a href="https://www.drupaladicto.com/curso/admin-toolbar">HAZ CLIC AQUÍ</a></p> <p>     En el momento en que accedas a la pantalla de configuración del sistema de archivos de Drupal, podrás comprobar de manera sencilla, cada una de las carpetas destinadas a alojamiento de tus documentos y archivos. Su aspecto será parecido al de la siguiente imagen:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 59.54%;" data-ratio="59.54" data-b-token="b-a8dd8cba597" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0ebb1926-2752-45cc-9745-39bf19510e6c" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/pantalla_sistema_archivos.jpg?itok=kkDsi3lw" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="387" typeof="foaf:Image" /></div></div> <p>     Si nos fijamos más de cerca, comprobaremos que la carpeta que debería guardar los archivos privados todavía no existe, y que se ha añadido por defecto, una carpeta llamada tmp, para nuestros archivos terporales, pero si nos fijamos en el comentario que hay debajo de cada una de ellas, nos daremos cuenta que habrá que cambiar ambas configuraciones, ya que la recomendación es: <em><strong>"Drupal debe tener permisos de escritura sobre él y no debe ser accesible a través de la web. Este valor se debe cambiar en settings.php"</strong></em></p> <p>     Por lo tanto, para evitar posibles fallos al traspasar nuestro proyecto Drupal, desde el entorno local hacia el entorno de producción, modificaremos los parámetros en el archivo <em><strong>settings.php</strong></em></p> <h2><em><strong>   </strong></em>CONFIGURANDO LAS CARPETAS PRIVATE Y TMP EN SETTINGS.PHP</h2> <p>     El primer paso, antes de añadir cualquier cambio en el archivo Settings.php, es que tendremos que agregar ambas carpetas en una ubicación, <em><strong>NO ACCESIBLE A TRAVÉS DE LA WEB, PERO SÍ DENTRO DE DRUPAL</strong></em>.</p> <p>     En este caso, como hemos seguido la recomendación de instalar Drupal, por medio del gestor de paquetes Composer, nuestras carpetas Private y Tmp, deberían colocarse directamente en la carpeta root o principal, es decir, al mismo nivel que están las carpetas <strong>vendor</strong> y <strong>web</strong>, como muestra la siguiente imagen:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 20.31%;" data-ratio="20.31" data-b-token="b-2025448f61f" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="dc8fc4b0-3c92-4cf1-87c9-0d1237a30abe" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/carpetas_private_temp_root.jpg?itok=hApXqOhj" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="132" typeof="foaf:Image" /></div></div> <p>     Ahora que ya tenemos creadas las dos carpetas, podremos añadir las nuevas configuraciones en el archivo Settings.php, que encontraremos dentro de "web/sites/default/<em><strong>settings.php</strong></em>", si estás trabajando en un entorno local, podrás añadirlos directamente a tu archivo "web/sites/default/<em><strong>settings.local.php</strong></em>",</p> <h3>   CONFIGURACIÓN PARA LA CARPETA <em>PRIVATE</em></h3> <p>     Si abrimos el archivo <em><strong>settings.php</strong></em> y hacemos una búsqueda rápida de la palabra private, encontraremos una línea que nos servirá como refencia o modelo, para la configuración que tendremos que añadir.</p> <p>    Aunque podríamos hacer la modificación directamente en la línea, descomentándola y añadiendo el valor, lo recomendable es copiarla y colocarla al mismo nivel que el resto de configuraciones que escribe drupal una vez instalado.</p> <p>     Así que copiaremos la línea, y la pegaremos al final del archivo, junto con el resto de detalles de la conexión a la base de datos y la carpeta de sincronización. Luego quitaremos la almohadilla "#", para que deje de ser un comentario y agregraremos la ubicación de la carpeta <strong>private</strong> que hemos creado hace un momento.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 32.62%;" data-ratio="32.62" data-b-token="b-765b5266af9" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="d56ff5f3-c3c0-4ea3-ac24-a2f67c2c19ee" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/settings_modelo.jpg?itok=KE2DBU1r" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="212" typeof="foaf:Image" /></div></div> <pre> $settings['file_private_path'] = '../private';</pre> <p>O también podríamos añadir esta otra opción, ambas funcionarán igualmente.</p> <pre> $settings['file_private_path'] = __DIR__ . '/private';</pre> <h3>   CONFIGURACIÓN PARA LA CARPETA <em>TMP</em></h3> <p>   Como mencionamos al principio de este artículo, cuando accedimos a la pantalla de configuración de archivos, descubrimos que se había configurado la carpeta tmp para los archivos privados, pero se recomienda modificar esta configuración, sobretodo para evitar errores al cambiar de entornos nuestro proyecto.</p> <p>     Es posible, que si estás trabajando en un entorno local con soluciones del tipo Xampp, Wamp o Mamp, tengas que configurar tu la carpeta temporal con algo paredido a "C:/xampp/drupal/tmp".</p> <p>    Al igual que hicimos con la configuración de la carpeta private, buscaremos en el archivo <strong>settings.php</strong>, la línea que nos servirá como referencia para nuestra configuración.</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 18.15%;" data-ratio="18.15" data-b-token="b-49dfe57fc8e" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="b2bda2c8-4e10-49e3-a2ac-544a38c06a36" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/settings_tmp.jpg?itok=5vr3MFd-" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="118" typeof="foaf:Image" /></div></div> <p>     A continuación, repetiremos el mismo proceso, es decir, copiaremos la línea y la pegaremos al final del archivo settings.php o settings.local.php, junto con el resto de configuraciones y pondremos lo siguiente:</p> <pre> $settings['file_temp_path'] = '../tmp';</pre> <p>O también podríamos añadir esta otra opción, ambas funcionarán igualmente.</p> <pre> $settings['file_temp_path'] = __DIR__ . '/tmp';</pre> <p>     Una vez guardados los cambios, <strong>borraremos la cache de Drupal</strong>, el aspecto de nuestro archivo settings.php debería ser algo parecido a la siguiente imagen:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 25.23%;" data-ratio="25.23" data-b-token="b-2d8a3f867e9" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="0ca3c849-1d11-4e02-887b-ef0dda514f75" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/nuevo_settings.jpg?itok=giWcp-8j" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="164" typeof="foaf:Image" /></div></div> <p>     Y si volvemos a la interfaz de Drupal, en la pantalla de configuración del Sistema de archivos, deberíamos ver las siguientes modificaciones:</p> <p></p><div class="media-wrapper media-wrapper--blazy media-wrapper--image"> <div style="padding-bottom: 20.31%;" data-ratio="20.31" data-b-token="b-686809b7487" class="media media--blazy media--image media--ratio media--ratio--fluid is-b-loading"><img data-entity-uuid="7b9b3e5b-5a83-4592-b954-0a16442fa46e" loading="lazy" alt="Private Tmp Files Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony" decoding="async" class="media__element b-lazy b-filter img-fluid" data-src="/sites/default/files/styles/max_1300x1300/public/inline-images/nueva_sitema_archivos.jpg?itok=zaVZIYia" src="data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%201%201'%2F%3E" width="650" height="132" typeof="foaf:Image" /></div></div> </div> </div> </div> </div> </div> </div> <div class="field field--name-field-categoria-top field--type-entity-reference field--label-above"> <div class="field__label">Categoria</div> <div class="field__items"> <div class="field__item"><a href="/categoria/files" hreflang="es">files</a></div> <div class="field__item"><a href="/categoria/archivos" hreflang="es">archivos</a></div> <div class="field__item"><a href="/categoria/configuracion" hreflang="es">configuración</a></div> <div class="field__item"><a href="/categoria/configuraciones" hreflang="es">configuraciones</a></div> <div class="field__item"><a href="/categoria/desarrollo" hreflang="es">desarrollo</a></div> <div class="field__item"><a href="/categoria/development" hreflang="es">development</a></div> </div> </div> Mon, 06 Mar 2023 21:34:33 +0000 webmaster 200 at https://drupaladicto.com