Comentar enlaces a páginas en el footer de eSyndicat

NOTA ACTUALIZADA: Ahora el directorio está en https://indaga.net  y bajo WordPress

Referencia interna, para que no se me olvide…
Comentar enlaces a páginas en el footer de eSyndicat
Para comentar los enlaces del footer del directorio de Indaga.net (eSyndicat), simplemente hay que añadir la etiqueta de comentarios HTML. Más adelante añadiré los propios.  Este es el código html:

<br />

<!– <a href=”#”>About Us</a> |:<br /> –>
<!– <a href=”#”>Privacy Policy</a> |:<br /> –>
<!– <a href=”#”>Terms of Use</a> |:<br /> –>
<!– <a href=”#”>Help</a> |:<br /> –>
<!– <a href=”#”>Advertise Us</a>:<br />:<br /> –>

Ruta: /indaga2020/templates/cleancss/footer.tpl

NOTA: Por cierto, aquí dejo un interesante y sencillo artículo sobre los comentarios en HTL, CSS, etc.:  ¿Cómo se hacen los comentarios en HTML?

Añadir más búsquedas en la página view-listing.tpl (eSyndicat)

Referencia interna, para que no se me olvide…

Añadido más enlaces de búsqueda en la página del enlace de eSyndicat (view-listing.tpl) del directorio de INDAGA.net. Aquí va el código (que ya he ido modificando para añadir otros motores de búsqueda (DuckDuckGo y Google España), es decir, otras URIs de búsqueda, como la de Ecosia:

EN ESTA PARTE:

{esynHooker name=”viewListingAfterMainFieldsDisplay”}
<!– AÑADO BUSQUEDAS –>
            <tr><small>Buscar el título de este enlace en:</small> <a href=”https://duckduckgo.com/?q={$listing.title|escape:”html”}” target=”_blank” rel=”nofollow”><small>DuckDuckGo</small></a>    <strong>  |  </strong>    <a href=”https://www.google.es/search?q={$listing.title|escape:”html”}” target=”_blank” rel=”nofollow”><small>Google España</small></a> </a><br /><br />
</tr>
<!– AÑADO BUSQUEDAS –>

RUTA DEL ARCHIVO:
/indaga2020/templates/common/view-listing.tpl

Script de Política de Cookies en el directorio de Indaga (eSyndicat)

NOTA ACTUALIZADA: Ahora el directorio está en https://indaga.net  y bajo WordPress

Referencia interna, para que no se me olvide…

Script de Política de Cookies en el directorio de Indaga (eSyndicat)
Voy a utilizar el tag (interno): “referencia interna esyndicat” en el blog de Indaga para poder encontrar todos los cambios que voy haciendo en las plantillas y páginas de la nueva versión del directorio de INDAGA.net, con el script creador de directorios de enlace eSyndicat, en su versión gratuita 1.8 (bastante obsoleta, de ahí los cambios que voy a ir haciendo…).

Aquí va una de la smodificaciones que he hecho para poder añadir el Aviso de Cookies (Política de Cookies) y el Aviso Legal y Política de Uso y Privacidad, aunque estos últimos realmente no los necesite, al ser un directorio personal que no admite la publicación de enlaces de terceros ni hay un seguimiento de usuarios, ni tampoco formulario de contacto. Aquí va una de las primeras modificaciones que he hecho:

El script del la Política de Cookies (ubicado en /indaga2020/templates/common/index.tpl) es el siguiente:

<br /><br />

<!– AÑADO AVISO COOKIES –>
{literal}
<link rel=”stylesheet” type=”text/css” href=”https://cdn.jsdelivr.net/npm/cookieconsent@3/build/cookieconsent.min.css” />
<script src=”https://cdn.jsdelivr.net/npm/cookieconsent@3/build/cookieconsent.min.js” data-cfasync=”false”></script>
<script>
window.cookieconsent.initialise({
  “palette”: {
    “popup”: {
      “background”: “#252e39”
    },
    “button”: {
      “background”: “transparent”,
      “text”: “#14a7d0”,
      “border”: “#14a7d0”
    }
  },
  “position”: “top”,
  “static”: true,
  “type”: “opt-in”,
  “content”: {
    “message”: “Este sitio web utiliza cookies <strong><a href=’http://directorio.indaga.net/cookies.php’ target=’_blank’>(ver las cookies de este sitio)</strong></a> para que tengas la mejor experiencia de usuario. Si continúas navegando, estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra Política de Cookies. En caso contrario, pulsa en el botón ‘Decline’, situado a la izquierda del botón ‘Permitir Cookies’. Muchas gracias por tu interés. Ver <a href=’http://directorio.indaga.net/aviso-legal-privacidad.php’ target=’_blank’><strong>Aviso Legal y Política de Uso y Privacidad</strong></a>.”,
    “dismiss”: “Acepto!”,
    “allow”: “Permitir Cookies”,
    “link”: “<strong>Ver la Política de Cookies de este sitio</strong>”,
    “href”: “http://directorio.indaga.net/politicaCookies.php”
  }
});
</script>
{/literal}
<!– AÑADO AVISO COOKIES –>

Tutoriales sobre los DIVS o capas

El otro día un amigo me preguntó cómo cambiar el estilo de un formulario de contacto para que aparecieran varios elementos en columnas. Era un formulario del plugin de contacto de WordPress Contact Form 7, el cual ya tiene su propia hoja de estilo. 

El caso es que, para no tener que modificar el estilo del plugin, y no perder así los cambios realizados en el archivo style.css del plugin (Editor de plugins – Contact Form 7 – style.css, si no recuerdo mal), puedes ‘maquetar’ el formulario que hayas creado, utilizando estilos dentro de cada uno de los elementos, sin necesidad de crear una clase (es mucho mejor crear la hoja de estilo y asociar la clase al elemento, desde luego, pero lo siguiente sirve), de esta forma:

<div style=”float: left; padding-right:3px; padding-left: 3px; width:45%”;>
<p>Un párrafo en un div flotante a la izquierda 
(es mucho mejor crear la hoja de estilo y asociar la clase al elemento, desde luego, pero lo anterior sirve)</p></div>
<div style=”float:right; padding-right:3px; padding-left:3px; width:45%”;><p>Y otro párrafo en un div flotante a la derecha (es mucho mejor crear la hoja de estilo y asociar la clase al elemento, desde luego, pero lo anterior sirve)</p></div>

<div style=”clear:both;”></div> 

Un párrafo en un div flotante a la izquierda (es mucho mejor crear la hoja de estilo y asociar la clase al elemento, desde luego, pero lo anterior sirve)
Y otro párrafo en un div flotante a la derecha (es mucho mejor crear la hoja de estilo y asociar la clase al elemento, desde luego, pero lo anterior sirve)
La próxima vez lo haré de forma mucho más limpia y elegante…

Dejo de paso una captura de pantalla sobre el editor de plugins de WordPress (no recomiendo cambiar nada ahí, a no ser que sepas muy bien lo que estás haciendo y luego bloquees la actualización del plugin):

Me las ví y deseé para acordarme del tema de la alineación (float). Más o menos me acordé, pero para que no me vuelva a pasar, además de refrescar la memoria estudiando de nuevo un poquito sobre CSS o Cascading Style Sheets, dejo algunos tutoriales interesantes sobre los divs (o capas). Aquí van:

TUTORIALES DIV

El primero (en inglés):

FLOATS
Nº 7. of HTML & CSS Is Hard
An old-timey web dev tutorial (and a friendly intro to CSS layouts)

https://internetingishard.com/html-and-css/floats/

The div tag – HTML tutorial

https://www.html-5-tutorial.com/div-tag.htm

Creando La Estructura HTML De Tu Página (Uso De DIVs)

http://www.psdahtmlpasoapaso.com/blog/creando-la-estructura-html-de-tu-pagina-uso-de-divs/

Estructura con CSS

http://es.learnlayout.com/

Hojas de estilo en documentos

http://html.conclase.net/w3c/html401-es/present/styles.html

La etiqueta div

http://www.ite.educacion.es/formacion/materiales/182/cd/seis/la_etiqueta_div.html

Diferencia entre div y span

https://disenowebakus.net/div-span-html.php

CC Search, buscador de imágenes libres de Creative Commons

Search for free content in the public domain and under Creative Commons licenses.

Learn more about CC licenses here.

CC Search es un nuevo buscador de imágenes libres de derechos de autor, gratuitas, de la mano de Creative Commons:
CC Search es una herramienta que permite que las obras con licencia abierta y de dominio público sean descubiertas y utilizadas por todos. Creative Commons, la organización sin ánimo de lucro que está detrás de CC Search, es la creadora de las licencias CC, utilizadas más de 1.400 millones de veces para ayudar a los creadores a compartir conocimientos y creatividad en línea.

CC Search busca en más de 300 millones de imágenes de API abiertas y del conjunto de datos Common Crawl. Va más allá de la simple búsqueda para agregar resultados a través de múltiples repositorios públicos en un solo catálogo, y facilita la reutilización a través de características como las etiquetas generadas por la máquina y la atribución con un solo clic.

 Cadena de búsqueda: https://search.creativecommons.org/search?q=

CC Search, buscador de imágenes libres de Creative Commons

Recuperando un viejo portátil: HP Omnibook Xe3

Oldies but Goldies…

Hace algún tiempo álguien me regaló un portátil en desuso, una ‘vieja gloria?. Se trataba de un portátil HP Omnibook Xe3 (la foto que véis no es mía, pero haré), con 10 Gigas de disco duro, 64 Megas de RAM y un procesador Pentium III a 667 Mhz, con combo CD-DVD, disquetera, etc., etc. (ver características)  ¿No mucho para hoy en día, verdad? Pero en su día fue ‘la caña’…
Lo curioso es que este HP (Hewlett-Packard), al cual habían instalado Windows Millemium (!!??), si no recuerdo mal, una vez instalado un Windows XP, funcionaba bastante decentemente, siempre y cuando no lo conectaras a Internet, claro; los navegadores web de hoy en día demandan muchos, muchos recursos, y con un portátil de las prestaciones que he descrito, no hay nada que hacer al respecto. 
Pero es un portátil robusto, que en su día era una buena compra, una buena elección. Además, que este Omnibook siga funcionando correctamente tras tanto tiempo, debe significar algo, ¿no? ¿Y si lo utilizo para otros menesteres, tales como un pequeño estudio MIDI? Dicho y hecho: lo he probado y los programas antiguos que utilizaba en su día, bajo Windows XP, funcionan correctamente, incluyendo un teclado MIDI.

El problema es la RAM, pero acabo de pedir a Offtek una ampliación, un módulo de 256 Megas (por casi 26 euros!). Creo que valdrá la pena probar si el rendimiento, para las ‘pequeñas’ tareas que quiero desempeñar con este Hp Omnibook Xe3. También es bueno tener una máquina no conectada a la Red, un instrumento para realizar una tarea concreta, sin distracciones… Subiré fotos y mis conclusiones al respecto. Hasta pronto!

NOTA. Ojalá conociera algún club o asociación aquí, en Valencia, sobre ‘retro ordenadores’, para consultas, intercambios, etc.

Redirigir páginas de idiomas en Prestashop con .htaccess

Redirigir páginas de idiomas en Prestashop con .htaccess

 Un post recuperado de KnowHow

Para redirigir una URL de Prestashop de un idioma a otro podemos lograrlo de forma muy sencilla y rápida con el archivo .htaccess, el archivo de configuración del servidor Apache


Aunque hay formas más complicadas y completas de hacerlo, el código que os muestro funcionará correctamente; menos es más… Para ello, accedemos a nuestro hosting, bien vía FTP con algún programa cliente como Filezilla, o por la gestión de archivos de nuestro hosting y añadimos la siguiente línea de código:

#Redirigimos la página del idioma inglés (/en) de nuestra tienda online a la página española (/es)
Redirect 301 /en http://www.midominio.com/es

Si queremos hacerlo con más idiomas que tengamos instalados en nuestra tienda online con PrestaShop, añadiremos una línea de código similar por página de idioma:

Redirect 301 /en http://www.midominio.com/es

Redirect 301 /fr http://www.midominio.com/es

OJO! Recordemos siempres hacer una copia del archivo .htacces original. 
La página que queremos redirigir no debe escribirse con la dirección completa, es decir http://www.midominio.com/en se escribiría solo /en. A la dirección que queremos redirigirla si que tiene que escribirse con la URI completa: http://www.midominio.com/es

Y con eso, ya lo tenemos. Dejo un ejemplo de archivo .htaccess de PrestaShop con la redirección 301 del idioma inglés y francés a la página en castellano:

EJEMPLO REDIRECCIÓN IDIOMAS EN PRESTASHOP CON HTACCESS

# ~~start~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
# .htaccess automaticaly generated by PrestaShop e-commerce open-source solution
# http://www.prestashop.com – http://www.prestashop.com/forums
# GBP REDIRIJO IDIOMAS A LA VERSIÓN ESPAÑOLA
Redirect 301 /en http://www.midominio.com/es
Redirect 301 /fr http://www.midominio.com/es



SetEnv HTTP_MOD_REWRITE On

RewriteEngine on

#Domain: midominio.com
RewriteRule . – [E=REWRITEBASE:/]
RewriteRule ^api$ api/ [L]
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Images
RewriteRule ^([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
RewriteRule ^c/([0-9]+)(-[.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader for IE and fancybox
RewriteRule ^images_ie/?([^/]+).(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ – [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]

AddType application/vnd.ms-fontobject .eot
AddType font/ttf .ttf
AddType font/otf .otf
AddType application/x-font-woff .woff


Header add Access-Control-Allow-Origin “*”

#If rewrite mod isn’t enabled
ErrorDocument 404 /index.php?controller=404
# ~~end~~ Do not remove this comment, Prestashop will keep automatically the code outside this comment when .htaccess will be generated again
AddHandler x-mapp-php5.5  .php

Redirigir http a https con .htaccess

Redirigir http a https con .htaccess
Valencia, 17/04/2019
Si quieres redirigir tu web del protocolo http al protocolo seguro https, puedes hacerlo modificando el archivo de configuración del servidor Apache, el .htaccess. recuerda siempre hacer una copia de seguridad primero. Puedes ver más información al respecto en este enlace de imaginanet.com.
Este es el código:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://TUDOMINIO.COM/$1 [R=301,L]
Nota importante
Si tu gestor de contenidos o CMS es WordPress, no cambies http por https en tu Escritorio o Dashboard (Ajustes -Generales). En vez de eso, instala un plugin tipo Really Simple SSL. Lo encontrarás en el repositorio de WordPress, es decir, desde tu Escritorio de WordPress ->Plugins ->Añadir nuevo.

Redirigir páginas de Error 404 en PrestaShop a la Home

Artículo del blog de Hector Nevado (www.hnevado.es/blog) para redirigir las páginas de Error 404 en PrestaShop a la página de inicio o Home. Funciona perfectamente. Mil gracias desde aquí!

https://www.hnevado.es/blog/redireccionar-errores-404-a-la-home-en-prestashop/ 

<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA 
* @copyright 2007-2015 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/


class PageNotFoundControllerCore extends FrontController
{
public $php_self = 'pagenotfound';
public $page_name = 'pagenotfound';
public $ssl = true;

/**
* Assign template vars related to page content
* @see FrontController::initContent()
*/
public function initContent()
/** AÑADO TEMA REDIRECCION ERRORES
*/
{
Tools::redirect();
header('HTTP/1.1 404 Not Found');
header('Status: 404 Not Found');

if (preg_match('/.(gif|jpe?g|png|ico)$/i', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH))) {
$this->context->cookie->disallowWriting();
if (!isset($_SERVER['REDIRECT_URL'])) {
$_SERVER['REDIRECT_URL'] = '';
if (preg_match('@^'.__PS_BASE_URI__.'([0-9]+)-([_a-zA-Z0-9-]+)(/[_a-zA-Z0-9-]+)?.jpg$@', $_SERVER['REQUEST_URI'], $matches)) {
$_SERVER['REDIRECT_URL'] = __PS_BASE_URI__.'p/'.Image::getImgFolderStatic($matches[0]).'/'.$matches[0].'-'.$matches[1].'.jpg';
}

}
if (preg_match('#/p[0-9/]*/([0-9]+)-([_a-zA-Z]*).(png|jpe?g|gif)$#', $_SERVER['REDIRECT_URL'], $matches)) {
// Backward compatibility since we suffixed the template image with _default
if (Tools::strtolower(substr($matches[2], -8)) != '_default') {
header('Location: '.$this->context->link->getImageLink('', $matches[1], $matches[2]), true, 302);
exit;
} else {
$image_type = ImageType::getByNameNType($matches[2], 'products');
if ($image_type && count($image_type)) {
$root = _PS_PROD_IMG_DIR_;
$folder = Image::getImgFolderStatic($matches[1]);
$file = $matches[1];
$ext = '.'.$matches[3];

if (file_exists($root.$folder.$file.$ext)) {
if (ImageManager::resize($root.$folder.$file.$ext, $root.$folder.$file.'-'.$matches[2].$ext, (int)$image_type['width'], (int)$image_type['height'])) {
header('HTTP/1.1 200 Found');
header('Status: 200 Found');
header('Content-Type: image/jpg');
readfile($root.$folder.$file.'-'.$matches[2].$ext);
exit;
}
}
}
}
} elseif (preg_match('#/c/([0-9]+)-([_a-zA-Z]*).(png|jpe?g|gif)$#', $_SERVER['REDIRECT_URL'], $matches)) {
$image_type = ImageType::getByNameNType($matches[2], 'categories');
if ($image_type && count($image_type)) {
$root = _PS_CAT_IMG_DIR_;
$file = $matches[1];
$ext = '.'.$matches[3];

if (file_exists($root.$file.$ext)) {
if (ImageManager::resize($root.$file.$ext, $root.$file.'-'.$matches[2].$ext, (int)$image_type['width'],
(int)$image_type['height'])) {
header('HTTP/1.1 200 Found');
header('Status: 200 Found');
header('Content-Type: image/jpg');
readfile($root.$file.'-'.$matches[2].$ext);
exit;
}
}
}
}

header('Content-Type: image/gif');
readfile(_PS_IMG_DIR_.'404.gif');
exit;
} elseif (in_array(Tools::strtolower(substr($_SERVER['REQUEST_URI'], -3)), array('.js', 'css'))) {
$this->context->cookie->disallowWriting();
exit;
}

parent::initContent();

$this->setTemplate(_PS_THEME_DIR_.'404.tpl');

}

protected function canonicalRedirection($canonical_url = '')
{
// 404 - no need to redirect to the canonical url
}

protected function sslRedirection()
{
// 404 - no need to redirect
}
}

Lanzada nueva versión de ReactOS, el sistema operativo libre compatible con Windows

Lanzada nueva versión de ReactOS, el sistema operativo libre compatible con Windows


Post recuperado de KnowHow…

El equipo de ReactOS ha lanzado hoy una nueva versión de su sistema operativo gratuito y de código abierto que es compatible con las aplicaciones y controladores diseñados para Windows. Yo nunca lo he probado, pero ya me he descargado la versión Live para probarlo desde un USB. 

ReactOS 0.4.11 ya está disponible para su descarga y llega cuatro meses después de la versión 0.4.10 para traer muchas más novedades, y mejor soporte para tus aplicaciones de Windows favoritas. Respecto a eso, este lanzamiento añade mejor soporte para aplicaciones .NET 2.0 y agrega soporte para Blender 2.57b, Quicktime Player 7.7.9, Evernote 5.8.3, Bumptop y muchas otras aplicaciones“, según puedes leer en el artículo de Linuxadictos.