Como personalizar la nube de etiquetas

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 13.0)

Instalación


Abra el archivo: engine/modules/show.full.php

Encuentre la línea:

$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));
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:

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&amp;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: }
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&amp;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&amp;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



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=", "}


<a onclick=Tutoriales En Linea" class='avatar avatar-64 photo' height='64' width='64'>
  • Autor:
  • Editor:
      Tutoriales En Linea
  • Fecha:2018-08-11
  • Categorias: DataLife Engine Modulo DLE SoftNews Media Group Hack Noticias Tutorial



Información
Usuarios que no esten registrados no pueden dejar comentarios, te invitamos a que te registre!