En este Tutoriales En Linea les traemos la manera de personalizar la nube de etiquetas de tu sitio web de DataLife Engine (DLE) - CMS. Decidí tratar de hacer lindos los enlaces en la nube de etiquetas y encontré varios problemas con la configuración de la plantilla.
En particular, estamos hablando de la completa falta de oportunidad para personalizar su plantilla. Además, estas "comas" obligatorias también están fuera de lugar, y para cambiar o eliminar algo, solo necesita realizar cambios en los archivos php. Esa es la solución a estos problemas, y lo haremos. Y como bonificación, les daré el código y los estilos de las etiquetas como en la imagen. (esta personalizacion de la nube de etiquetas esta comprobado en la versión de DLE 17.1)
Instalación
Abra el archivo: engine/modules/show.full.php
Encuentre la línea:
$tpl->set( '{tags}', implode( $config['tags_separator'], $tags ) );
$tpl->set( '{tags}', implode( " ", $tags ) );
Después de eso, pega:
if(preg_match("#{tags=['"]([^'"]*)['"]}#i",$tpl->copy_template,$sep)) $tpl->set($sep[0],implode($sep[1],$tags));
tags=['"]([^'"]*)['"] = Dentro de '" va una Barra inversa antes de las dobles comillas.
OJO ESTO SE REPITE PATA TODOS LOS CASOS
Ahora la página de nube de etiquetas en sí:
Abra el archivo engine/modules/tagscloud.php
Encuentre la línea:
else $sql_select = "SELECT tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag";
Después de eso, pega:
$tagsort = 'tag';
if(preg_match("#[list([^]]*)](.+?)[/list]#is",$tpl->copy_template,$tpl_list)){
$limit = false;
$sep = '';
if(preg_match("#limit=['"](d+)['"]#i",$tpl_list[1],$lm)){
$lm = intval($lm[1]);
if($lm>0){
$limit = true;
$sql_select = "SELECT tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag ORDER BY count DESC LIMIT 0,$lm";
}
}
if(preg_match("#sep=['"]([^'"]*)['"]#i",$tpl_list[1],$sp)) $sep = $sp[1];
if(preg_match("#sort=['"](count|tag)['"]#i",$tpl_list[1],$tgsr)) $tagsort = $tgsr[1];
}
if(!$limit) $sql_select = "SELECT tag, COUNT(*) AS count FROM " . PREFIX . "_tags GROUP BY tag ORDER BY count DESC";
Luego vuelve a buscar la línea:
usort ($list, "compare_tags");
Antes de eso pegar (2):
if($tagsort=='tag')
Encuentre la línea:
if ($config['allow_alt_url'] )
$tags[] = "<span class="{$value['size']}"><a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."/" title="".$lang['tags_count']." ".$value['count']."">".$value['tag']."</a></span>";
else
$tags[] = "<span class="{$value['size']}"><a href="$PHP_SELF?do=tags&tag=".urlencode($value['tag'])."" title="".$lang['tags_count']." ".$value['count']."">".$value['tag']."</a></span>";
O algo así parecido varia dependiendo de la versión que utilices, y tener cuidado con el cierre: } en el 3.
Reemplace con:
if($tpl_list[2]){
if ($config['allow_alt_url'] ) $link = $config['http_home_url']."tags/".urlencode($value['tag'])."/";
else $link = $PHP_SELF."?do=tags&tag=".urlencode($value['tag']);
$temp = $tpl_list[2];
$temp = str_ireplace("{link}",$link,$temp);
$temp = str_ireplace("{tag}",$value['tag'],$temp);
$temp = str_ireplace("{count}",$value['count'],$temp);
$tags[] = $temp;
}else{
if ($config['allow_alt_url'] )
$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."/" class="{$value['size']}" title="".$lang['tags_count']." ".$value['count']."">".$value['tag']."</a>";
else
$tags[] = "<a href="$PHP_SELF?do=tags&tag=".urlencode($value['tag'])."" class="{$value['size']}" title="".$lang['tags_count']." ".$value['count']."">".$value['tag']."</a>";
}
Encuentra la cadena:
$tags = implode(", ", $tags);
o
$tags = implode($tags);
varia dependiendo de la versión que utilices.
Ante de eso pegar:
if($tpl_list[0]) $tpl->copy_template = str_replace($tpl_list[0],implode($sep,$tags),$tpl->copy_template);
Ahora, en la plantilla tagscloud.tpl , puede usar la estructura en lugar de solo la etiqueta {tags}:
[list limit="100" sep="" sort="count"]<a href="{link}"><span class="tagname">{tag}</span><span class="tagcount">{count}</span></a>
Donde:
limit: el número de etiquetas.
sep: entre comillas se especifica el delimitador entre las etiquetas, no se puede especificar la etiqueta.
sort: etiqueta o conteo, respectivamente clasificación por nombre de etiqueta o por número.
Todos los parámetros anteriores son opcionales. Puedes escribir simplemente:
[list]<a href="{link}">{tag} ({count})</a>
{link}: la dirección de la página de etiquetas.
{tag}: el nombre de la etiqueta.
{count}: la cantidad de noticias con la etiqueta.
Bonificación:
En la plantilla tagscloud.tpl, use el siguiente código:
<div class="numbertag">
[list limit="100" sort="count"]<a href="{link}"><span class="tagname">{tag}</span><span class="tagcount">{count}</span></a>
</div>
En la plantilla fullstory.tpl, (o donde tengas ubicado los tag), el código es:
<div class="finetags">{tags=''}</div>
CSS
.numbertag a,
.finetags a{
box-sizing: border-box;
display: inline-block;
height: 27px;
border: 1px solid #d4d4d4;
border-bottom-color: #c7c7c7;
border-radius: 3px 0 0 3px;
box-shadow: 0 1px 3px rgba(0,0,0,.3);
background: #f8f9fa url(https://tutorialesenlinea.es/templates/Tutoriales_En_Linea_es/images/tag_5Tutoriales_En_Linea.webp) repeat-x 0 0;
color: #222;
font: bold 12px/25px 'Trebuchet MS',Tahoma,sans-serif;
text-decoration: none;
padding: 0;
position: relative;
margin:0 15px 11px 0;
}
.finetags a{
padding: 0 15px;
}
.numbertag a:hover,
.finetags a:hover{
background-image: url(https://tutorialesenlinea.es/templates/Tutoriales_En_Linea_es/images/tag_1Tutoriales_En_Linea.webp);
}
.numbertag a>span{
display: inline-block;
position: relative;
}
.numbertag .tagname{
padding: 0 15px;
}
.numbertag .tagcount{
padding: 0 8px;
font: bold 11px/27px Tahoma;
color: #fff;
background: #0095e9 url(https://tutorialesenlinea.es/templates/Tutoriales_En_Linea_es/images/tag_2Tutoriales_En_Linea.webp) repeat-x 0 0;
}
.tagcount:after,
.tagcount:before,
.finetags a:after,
.finetags a:before{
content: "";
display: block;
left: 100%;
top: 0;
position: absolute;
width: 5px;
height: 27px;
}
.finetags a:after{
margin-left: -4px;
}
.finetags a:before{
margin-left: 1px;
}
.tagcount:before{
left: -5px;
}
.tagcount:before,
.finetags a:after{
background: url(https://tutorialesenlinea.es/templates/Tutoriales_En_Linea_es/images/tag_3Tutoriales_En_Linea.webp) no-repeat;
}
.tagcount:after,
.finetags a:before{
width: 3px;
background: url(https://tutorialesenlinea.es/templates/Tutoriales_En_Linea_es/images/tag_4Tutoriales_En_Linea.webp) no-repeat;
}
Un ejemplo del trabajo se puede encontrar en: www.tutorialesenlinea.es/tags/
Opcional
Ahora en la plantilla fullstory.tpl, puede mostrar etiquetas con una etiqueta:
{tags=""}
Donde entre comillas se especifica un símbolo o separador de texto entre las etiquetas. A continuación, le mostramos cómo puede repetir el resultado de la etiqueta estándar:
{tags}
{tags=", "}
Comentarios