<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[PHPost | Soporte, Descargas y Tutoriales de Risus Nova - Complementos Terminados]]></title>
		<link>https://phpost.es/</link>
		<description><![CDATA[PHPost | Soporte, Descargas y Tutoriales de Risus Nova - https://phpost.es]]></description>
		<pubDate>Wed, 24 Jun 2026 18:20:54 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Mostrar titulo de los posts Anterior y Siguiente v2]]></title>
			<link>https://phpost.es/tema-Complementos-Terminados-Mostrar-titulo-de-los-posts-Anterior-y-Siguiente-v2</link>
			<pubDate>Sat, 04 Jun 2022 23:38:15 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Terminados-Mostrar-titulo-de-los-posts-Anterior-y-Siguiente-v2</guid>
			<description><![CDATA[Bueno como dice el titulo "Mostrar titulo de los posts Anterior y Siguiente <span style="font-weight: bold;" class="mycode_b">v2</span>", ya que este es una actualización mejorada!<br />
 <br />
Topic de la v1<br />
<a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url">Mostrar titulo de los posts anterior y siguiente</a><br />
<br />
Básicamente se puede realizar tranquilamente desde cero:<br />
1 - Buscan en <span style="font-weight: bold;" class="mycode_b">inc/class/<span style="color: #27ae60;" class="mycode_color">c.posts.php</span></span> y van hasta la última llave <span style="font-weight: bold;" class="mycode_b">}</span><br />
﻿<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/*<br /> &nbsp; &nbsp; &nbsp;OBTENER&nbsp;LOS&nbsp;TITULOS&nbsp;DE&nbsp;LOS&nbsp;POSTS&nbsp;ANTERIOR/SIGUIENTE<br /> &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">getTitles</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;from</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; global&nbsp;&#36;tsCore</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;pid&nbsp;</span><span style="color: #007700">=&nbsp;(int)</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_id"</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;﻿pid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;from&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #0000BB">&#36;pid&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">&#36;pid&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;opt&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;from&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #DD0000">"&lt;"&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">"&gt;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;pid&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;Post<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;sql&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SELECT&nbsp;post_id,&nbsp;post_title,&nbsp;c_seo&nbsp;FROM&nbsp;p_posts&nbsp;LEFT&nbsp;JOIN&nbsp;p_categorias&nbsp;ON&nbsp;post_category&nbsp;=&nbsp;cid&nbsp;WHERE&nbsp;post_id&nbsp;=&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;pid</span><span style="color: #007700">}</span><span style="color: #DD0000">"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;Existe?<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'num_rows'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;sql</span><span style="color: #007700">)&nbsp;===&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp;   &nbsp; &#36;sql&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SELECT&nbsp;post_id&nbsp;FROM&nbsp;p_posts&nbsp;WHERE&nbsp;post_id&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;opt</span><span style="color: #007700">}</span><span style="color: #DD0000">&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;pid</span><span style="color: #007700">}</span><span style="color: #DD0000">&nbsp;ORDER&nbsp;BY&nbsp;post_id&nbsp;DESC&nbsp;LIMIT&nbsp;1"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'fetch_assoc'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;sql</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp;   &nbsp; &#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_title"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSEO</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_title"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp;   &nbsp; &#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_url"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"url"</span><span style="color: #007700">]}</span><span style="color: #DD0000">/posts/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"c_seo"</span><span style="color: #007700">]}</span><span style="color: #DD0000">/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_id"</span><span style="color: #007700">]}</span><span style="color: #DD0000">/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_title"</span><span style="color: #007700">]}</span><span style="color: #DD0000">.html"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; return&nbsp;</span><span style="color: #007700">!empty(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">)&nbsp;?&nbsp;</span><span style="color: #0000BB">&#36;data&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
 ﻿2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="color: #27ae60;" class="mycode_color">posts.php</span></span> buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;tsPages</span><span style="color: #007700">[</span><span style="color: #DD0000">'autor'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsPost</span><span style="color: #007700">[</span><span style="color: #DD0000">'post_user'</span><span style="color: #007700">];&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsAnterior"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsPosts</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTitles</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsSiguente"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsPosts</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTitles</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">));&nbsp;<br /></span></code></div></div></div><br />
3 - Luego buscan en <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/<span style="color: #27ae60;" class="mycode_color">m.posts_content.tpl</span></span> y buscan<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsPost.user_firma &amp;&amp; &#36;tsConfig.c_allow_firma}</code></div></div><br />
y arriba agregan <span style="font-style: italic;" class="mycode_i">(o donde deseen)</span>, obviamente ustedes lo tendrían que adaptar a su theme... Pero si usan bootstrap no tiene que hacer tantos cambios.<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="post-antsig"&gt;<br />
    <br />
    &lt;div class="post-anterior"&gt;<br />
        &lt;a href="{&#36;tsAnterior.post_url}" class="d-flex justify-content-start align-items-center"&gt;<br />
            &lt;div class="icon ml-2"&gt;<br />
    ﻿            &lt;!-- Acá puede ir un icono o imagen, deciden ustedes --&gt;<br />
                &lt;i class="icon-angle-left"&gt;&lt;/i&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="titulo"&gt;<br />
                &lt;small class="text-uppercase"&gt;No te piedas&lt;/small&gt;<br />
                &lt;span&gt;{&#36;tsAnterior.post_title|truncate:34}&lt;/span&gt;<br />
            &lt;/div&gt;<br />
        &lt;/a&gt;<br />
    &lt;/div&gt;<br />
    &lt;div class="post-siguiente"&gt;<br />
        &lt;a href="{&#36;tsSiguente.post_url}" class="d-flex justify-content-end align-items-center t-end"&gt;<br />
            &lt;div class="titulo"&gt;<br />
                &lt;small class="text-uppercase"&gt;A continuación&lt;/small&gt;<br />
                &lt;span&gt;{&#36;tsSiguente.post_title|truncate:34}&lt;/span&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="icon mr-2"&gt;<br />
                &lt;!-- Acá puede ir un icono o imagen, deciden ustedes --&gt;<br />
                &lt;i class="icon-angle-right"&gt;&lt;/i&gt;<br />
            &lt;/div&gt;<br />
        &lt;/a&gt;<br />
    &lt;/div&gt;<br />
<br />
&lt;/div&gt;﻿</code></div></div><br />
Así quedaría terminado!<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]]]></description>
			<content:encoded><![CDATA[Bueno como dice el titulo "Mostrar titulo de los posts Anterior y Siguiente <span style="font-weight: bold;" class="mycode_b">v2</span>", ya que este es una actualización mejorada!<br />
 <br />
Topic de la v1<br />
<a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url">Mostrar titulo de los posts anterior y siguiente</a><br />
<br />
Básicamente se puede realizar tranquilamente desde cero:<br />
1 - Buscan en <span style="font-weight: bold;" class="mycode_b">inc/class/<span style="color: #27ae60;" class="mycode_color">c.posts.php</span></span> y van hasta la última llave <span style="font-weight: bold;" class="mycode_b">}</span><br />
﻿<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/*<br /> &nbsp; &nbsp; &nbsp;OBTENER&nbsp;LOS&nbsp;TITULOS&nbsp;DE&nbsp;LOS&nbsp;POSTS&nbsp;ANTERIOR/SIGUIENTE<br /> &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">getTitles</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;from</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; global&nbsp;&#36;tsCore</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;pid&nbsp;</span><span style="color: #007700">=&nbsp;(int)</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_id"</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;﻿pid&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;from&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #0000BB">&#36;pid&nbsp;</span><span style="color: #007700">-&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">&#36;pid&nbsp;</span><span style="color: #007700">+&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;opt&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;from&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #DD0000">"&lt;"&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">"&gt;"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;pid&nbsp;</span><span style="color: #007700">&lt;&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;Post<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;sql&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SELECT&nbsp;post_id,&nbsp;post_title,&nbsp;c_seo&nbsp;FROM&nbsp;p_posts&nbsp;LEFT&nbsp;JOIN&nbsp;p_categorias&nbsp;ON&nbsp;post_category&nbsp;=&nbsp;cid&nbsp;WHERE&nbsp;post_id&nbsp;=&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;pid</span><span style="color: #007700">}</span><span style="color: #DD0000">"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;Existe?<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'num_rows'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;sql</span><span style="color: #007700">)&nbsp;===&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp;   &nbsp; &#36;sql&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SELECT&nbsp;post_id&nbsp;FROM&nbsp;p_posts&nbsp;WHERE&nbsp;post_id&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;opt</span><span style="color: #007700">}</span><span style="color: #DD0000">&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;pid</span><span style="color: #007700">}</span><span style="color: #DD0000">&nbsp;ORDER&nbsp;BY&nbsp;post_id&nbsp;DESC&nbsp;LIMIT&nbsp;1"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; &#36;data&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'fetch_assoc'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;sql</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp;   &nbsp; &#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_title"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSEO</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_title"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp;   &nbsp; &#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_url"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"url"</span><span style="color: #007700">]}</span><span style="color: #DD0000">/posts/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"c_seo"</span><span style="color: #007700">]}</span><span style="color: #DD0000">/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_id"</span><span style="color: #007700">]}</span><span style="color: #DD0000">/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"post_title"</span><span style="color: #007700">]}</span><span style="color: #DD0000">.html"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; return&nbsp;</span><span style="color: #007700">!empty(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">)&nbsp;?&nbsp;</span><span style="color: #0000BB">&#36;data&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
 ﻿2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="color: #27ae60;" class="mycode_color">posts.php</span></span> buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;tsPages</span><span style="color: #007700">[</span><span style="color: #DD0000">'autor'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsPost</span><span style="color: #007700">[</span><span style="color: #DD0000">'post_user'</span><span style="color: #007700">];&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsAnterior"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsPosts</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTitles</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">));<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsSiguente"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsPosts</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTitles</span><span style="color: #007700">(</span><span style="color: #0000BB">false</span><span style="color: #007700">));&nbsp;<br /></span></code></div></div></div><br />
3 - Luego buscan en <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/<span style="color: #27ae60;" class="mycode_color">m.posts_content.tpl</span></span> y buscan<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsPost.user_firma &amp;&amp; &#36;tsConfig.c_allow_firma}</code></div></div><br />
y arriba agregan <span style="font-style: italic;" class="mycode_i">(o donde deseen)</span>, obviamente ustedes lo tendrían que adaptar a su theme... Pero si usan bootstrap no tiene que hacer tantos cambios.<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="post-antsig"&gt;<br />
    <br />
    &lt;div class="post-anterior"&gt;<br />
        &lt;a href="{&#36;tsAnterior.post_url}" class="d-flex justify-content-start align-items-center"&gt;<br />
            &lt;div class="icon ml-2"&gt;<br />
    ﻿            &lt;!-- Acá puede ir un icono o imagen, deciden ustedes --&gt;<br />
                &lt;i class="icon-angle-left"&gt;&lt;/i&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="titulo"&gt;<br />
                &lt;small class="text-uppercase"&gt;No te piedas&lt;/small&gt;<br />
                &lt;span&gt;{&#36;tsAnterior.post_title|truncate:34}&lt;/span&gt;<br />
            &lt;/div&gt;<br />
        &lt;/a&gt;<br />
    &lt;/div&gt;<br />
    &lt;div class="post-siguiente"&gt;<br />
        &lt;a href="{&#36;tsSiguente.post_url}" class="d-flex justify-content-end align-items-center t-end"&gt;<br />
            &lt;div class="titulo"&gt;<br />
                &lt;small class="text-uppercase"&gt;A continuación&lt;/small&gt;<br />
                &lt;span&gt;{&#36;tsSiguente.post_title|truncate:34}&lt;/span&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="icon mr-2"&gt;<br />
                &lt;!-- Acá puede ir un icono o imagen, deciden ustedes --&gt;<br />
                &lt;i class="icon-angle-right"&gt;&lt;/i&gt;<br />
            &lt;/div&gt;<br />
        &lt;/a&gt;<br />
    &lt;/div&gt;<br />
<br />
&lt;/div&gt;﻿</code></div></div><br />
Así quedaría terminado!<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Instalar theme automáticamente]]></title>
			<link>https://phpost.es/tema-Complementos-Terminados-Instalar-theme-autom%C3%A1ticamente</link>
			<pubDate>Sat, 14 May 2022 00:33:22 +0200</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Terminados-Instalar-theme-autom%C3%A1ticamente</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">Instalador automático de themes!</span></div>
<br />
Es completamente básico y no requiere de mucha instalación.<br />
<br />
1 - Abren <span style="font-weight: bold;" class="mycode_b">header.php</span> y al final agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">TS_ROOT&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"/inc/InstallAutomaticTheme.php"</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
2 - Descargan "<a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">InstallAutomaticTheme.php</span></a>" y lo agregan en inc/<br />
<br />
y listo todos los themes que agregues en "<span style="font-weight: bold;" class="mycode_b">themes</span>" y que contengan el archivo "<span style="font-weight: bold;" class="mycode_b">install.php</span>" los va a instalar, primero comprobará si lo tienen instalado en caso que si lo tengan, no lo va a agregar otra vez.]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: x-large;" class="mycode_size">Instalador automático de themes!</span></div>
<br />
Es completamente básico y no requiere de mucha instalación.<br />
<br />
1 - Abren <span style="font-weight: bold;" class="mycode_b">header.php</span> y al final agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">TS_ROOT&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"/inc/InstallAutomaticTheme.php"</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
2 - Descargan "<a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">InstallAutomaticTheme.php</span></a>" y lo agregan en inc/<br />
<br />
y listo todos los themes que agregues en "<span style="font-weight: bold;" class="mycode_b">themes</span>" y que contengan el archivo "<span style="font-weight: bold;" class="mycode_b">install.php</span>" los va a instalar, primero comprobará si lo tienen instalado en caso que si lo tengan, no lo va a agregar otra vez.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Crear copia de seguridad desde la administración]]></title>
			<link>https://phpost.es/tema-Complementos-Terminados-Crear-copia-de-seguridad-desde-la-administraci%C3%B3n</link>
			<pubDate>Fri, 25 Feb 2022 16:50:08 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Terminados-Crear-copia-de-seguridad-desde-la-administraci%C3%B3n</guid>
			<description><![CDATA[Bueno como ya había mencionado, ya esta la "<span style="font-weight: bold;" class="mycode_b">herramienta</span>" para crear copias de seguridad completa o parcial de la base de datos y podrás restaurar dicho copia, el problema será que no tengas acceso a la administración del sitio y allí necesitarás una herramienta externa pero que funcione dentro del sitio.<br />
<br />
Solo tengo que hacerle algunos cambios a la herramienta que ya tengo creada desde hace 1 año.<br />
<br />
Capturas:<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
Antes de comenzar, si tienes <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Ejecutar SQL desde la administración [Arreglado]</span></a> tendrás que quitarlo o eliminar archivos<br />
<br />
Bueno comencemos con la integración, los archivos para descargar están al final.<br />
<br />
1 - Este archivo "<span style="font-weight: bold;" class="mycode_b">c.database.php</span>" y lo agregan a <span style="font-weight: bold;" class="mycode_b">inc/class/</span><br />
<br />
2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/admin.php</span> buscamos<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">/**&nbsp;NOTICIAS&nbsp;**/<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'news'</span><span style="color: #007700">){&nbsp;<br /></span></code></div></div></div><br />
arriba agregarán<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'execute'&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'backup'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Incluimos&nbsp;el&nbsp;archivo&nbsp;necesario<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">"../class/c.database.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;tsDataBase&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsDataBase</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Todas&nbsp;las&nbsp;opciones&nbsp;de&nbsp;la&nbsp;copia&nbsp;de&nbsp;seguridad<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'backup'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(empty(</span><span style="color: #0000BB">&#36;act</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsListBackup'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">listBackup</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;el&nbsp;backup&nbsp;completo<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'new_backup'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"nombre_copia"</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createBackUp</span><span style="color: #007700">()[</span><span style="color: #0000BB">0</span><span style="color: #007700">])&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/backup?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createBackUp</span><span style="color: #007700">()[</span><span style="color: #0000BB">1</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;el&nbsp;backup&nbsp;seleccionando&nbsp;tablas<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'new_backup_select'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsTablas'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">show_tables</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"nombre_copia"</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">seletedTables</span><span style="color: #007700">()[</span><span style="color: #0000BB">0</span><span style="color: #007700">])&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/backup?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">seletedTables</span><span style="color: #007700">()[</span><span style="color: #0000BB">1</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Descargamos&nbsp;el&nbsp;fichero<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'download'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"code"</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsDownload'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">downloader</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - Ahora en <span style="font-weight: bold;" class="mycode_b">inc/php/ajax/ajax.php</span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-badwords-delete'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div>debajo agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-eliminar-sql'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-restaurar-sql'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-ejecutar-sql'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div>más abajo buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">"../class/c.admin.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &#36;tsAdmin&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsAdmin</span><span style="color: #007700">();&nbsp;<br /></span></code></div></div></div>y agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'admin-eliminar-sql'&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'admin-restaurar-sql'&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'admin-ejecutar-sql'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">"../class/c.database.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;dbase&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsDataBase</span><span style="color: #007700">();<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div>por último buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">default:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; die</span><span style="color: #007700">(</span><span style="color: #DD0000">'0:&nbsp;Este&nbsp;archivo&nbsp;no&nbsp;existe.'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;&nbsp;<br /></span></code></div></div></div>y arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'admin-eliminar-sql'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; echo&nbsp;&#36;dbase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">delete_file_sql</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'admin-restaurar-sql'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; echo&nbsp;&#36;dbase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">restore_file_sql</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'admin-ejecutar-sql'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; echo&nbsp;&#36;dbase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">executeSQL</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
4 - Ahora en <span style="font-weight: bold;" class="mycode_b">tema/templates/t.admin.tpl</span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{include file='admin_mods/m.admin_rangos.tpl'}</code></div></div>y debajo pegan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{elseif &#36;tsAction == 'execute' || &#36;tsAction == 'backup'}<br />
{include file='admin_mods/m.admin_database.tpl'}</code></div></div><br />
5 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/m.admin_sidemenu.tpl</span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;h4&gt;Configuraci&amp;oacute;n de PHPost&lt;/h4&gt;</code></div></div>y arriba agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;h4&gt;Seguridad&lt;/h4&gt;<br />
&lt;ul class="cat-list"&gt;<br />
    &lt;li id="a_configs"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/execute"&gt;Ejecutar consultas&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<br />
    &lt;li id="a_main"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/backup"&gt;Crear copia&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</code></div></div><br />
6 - Este archivo "<span style="font-weight: bold;" class="mycode_b">m.admin_database.tpl</span>" y lo agregan a <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/</span><br />
<br />
7 - Por último en <span style="font-weight: bold;" class="mycode_b">tema/ja/admin.js</span> al final del archivo agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>/** <br />
 * Database<br />
 * para ejecutar consultas y crear copias<br />
*/<br />
var database = new function() {<br />
    this.execute = () =&gt; {<br />
        var SQL = 'sql=' + &#36;("#sql").val();<br />
        &#36;.post(global_data.url + '/admin-ejecutar-sql.php', SQL, h =&gt; {<br />
            switch (h.charAt(0)) {<br />
                case '0':<br />
                    mydialog.alert('Error', h.substring(3), false)<br />
                break;<br />
                case '1':<br />
                    mydialog.alert('Bien', h.substring(3), true)<br />
                break;<br />
            }<br />
        })<br />
    },<br />
   this.delete = (id, file, gew) =&gt; {<br />
      if(!gew) {<br />
         mydialog.show()<br />
         mydialog.title('Eliminar')<br />
         mydialog.body(`Estas seguro que quieres eliminar este archivo: &#36;{file}`) <br />
         mydialog.buttons(true, true, 'Borrar SQL', `database.delete(&#36;{id}, '&#36;{file}', true)`, true, false, true, 'Cancelar', 'close', true, true);<br />
         /*mydialog.buttons([<br />
            {mostrar:true,texto:'Borrar SQL',accion:`database.delete(&#36;{id}, '&#36;{file}', true)`,activo:true},<br />
            {mostrar:true,texto:'Cancelar',accion:'cerrar',activo:true}<br />
         ]);<br />
*/         mydialog.center()<br />
      } else {<br />
         &#36;.post(global_data.url + '/admin-eliminar-sql.php', {id,file}, e =&gt; {<br />
            switch (e.charAt(0)) {<br />
               case '0':<br />
                  mydialog.alert('Error', e.substring(3));<br />
               break;<br />
               case '1':<br />
                  mydialog.close();<br />
                  &#36;("#sql" + id).remove();<br />
               break;<br />
            }<br />
         })<br />
      }<br />
   },<br />
   this.restore = (file, gew) =&gt; {<br />
      if(!gew) {<br />
         mydialog.show()<br />
         mydialog.title('Restaurar')<br />
         mydialog.body(`Estas seguro que quieres restaurar esta copia: &#36;{file}`) <br />
         mydialog.buttons(true, true, 'Restaurar SQL', `database.restore('&#36;{file}', true)`, true, false, true, 'Cancelar', 'close', true, true);<br />
         /*mydialog.buttons([<br />
            {mostrar:true,texto:'Restaurar SQL',accion:`database.restore('&#36;{file}', true)`,activo:true},<br />
            {mostrar:true,texto:'Cancelar',accion:'cerrar',activo:true}<br />
         ]);*/<br />
         mydialog.center()<br />
      } else {<br />
         mydialog.procesando_inicio('', "Espere");<br />
         mydialog.buttons(false);<br />
         mydialog.center()<br />
         &#36;.post(global_data.url + '/admin-restaurar-sql.php', {restore: file}, e =&gt; {<br />
            switch (e.charAt(0)) {<br />
               case '0':<br />
                  mydialog.procesando_fin();<br />
                  mydialog.alert('Error', e.substring(3), false);<br />
               break;<br />
               case '1':<br />
                  mydialog.procesando_fin();<br />
                  mydialog.alert('Bien', e.substring(3), false);<br />
               break;<br />
            }<br />
         })<br />
      }<br />
   }<br />
}</code></div></div><br />
Descargar los archivos "<span style="font-weight: bold;" class="mycode_b"><a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url">-#- Justo aquí -#-</a></span>"<br />
<br />
En caso que tengan problemas al querer crear las copias de seguridad, comprueben que se haya creado la carpeta "<span style="font-weight: bold;" class="mycode_b">database</span>" en <span style="font-weight: bold;" class="mycode_b">files/</span> y que tenga<span style="font-weight: bold;" class="mycode_b"> los permisos 0777 aplicados</span>, en caso contrario deberán crearlo y darle los permisos correspondientes]]></description>
			<content:encoded><![CDATA[Bueno como ya había mencionado, ya esta la "<span style="font-weight: bold;" class="mycode_b">herramienta</span>" para crear copias de seguridad completa o parcial de la base de datos y podrás restaurar dicho copia, el problema será que no tengas acceso a la administración del sitio y allí necesitarás una herramienta externa pero que funcione dentro del sitio.<br />
<br />
Solo tengo que hacerle algunos cambios a la herramienta que ya tengo creada desde hace 1 año.<br />
<br />
Capturas:<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
Antes de comenzar, si tienes <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Ejecutar SQL desde la administración [Arreglado]</span></a> tendrás que quitarlo o eliminar archivos<br />
<br />
Bueno comencemos con la integración, los archivos para descargar están al final.<br />
<br />
1 - Este archivo "<span style="font-weight: bold;" class="mycode_b">c.database.php</span>" y lo agregan a <span style="font-weight: bold;" class="mycode_b">inc/class/</span><br />
<br />
2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/admin.php</span> buscamos<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">/**&nbsp;NOTICIAS&nbsp;**/<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'news'</span><span style="color: #007700">){&nbsp;<br /></span></code></div></div></div><br />
arriba agregarán<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'execute'&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'backup'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Incluimos&nbsp;el&nbsp;archivo&nbsp;necesario<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">"../class/c.database.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;tsDataBase&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsDataBase</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Todas&nbsp;las&nbsp;opciones&nbsp;de&nbsp;la&nbsp;copia&nbsp;de&nbsp;seguridad<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'backup'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(empty(</span><span style="color: #0000BB">&#36;act</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsListBackup'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">listBackup</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;el&nbsp;backup&nbsp;completo<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'new_backup'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"nombre_copia"</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createBackUp</span><span style="color: #007700">()[</span><span style="color: #0000BB">0</span><span style="color: #007700">])&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/backup?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">createBackUp</span><span style="color: #007700">()[</span><span style="color: #0000BB">1</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;el&nbsp;backup&nbsp;seleccionando&nbsp;tablas<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'new_backup_select'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsTablas'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">show_tables</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"nombre_copia"</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">seletedTables</span><span style="color: #007700">()[</span><span style="color: #0000BB">0</span><span style="color: #007700">])&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/backup?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">seletedTables</span><span style="color: #007700">()[</span><span style="color: #0000BB">1</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Descargamos&nbsp;el&nbsp;fichero<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'download'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"code"</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsDownload'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsDataBase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">downloader</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - Ahora en <span style="font-weight: bold;" class="mycode_b">inc/php/ajax/ajax.php</span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-badwords-delete'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div>debajo agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-eliminar-sql'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-restaurar-sql'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'admin-ejecutar-sql'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div>más abajo buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">"../class/c.admin.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &#36;tsAdmin&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsAdmin</span><span style="color: #007700">();&nbsp;<br /></span></code></div></div></div>y agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'admin-eliminar-sql'&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'admin-restaurar-sql'&nbsp;</span><span style="color: #007700">OR&nbsp;</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'admin-ejecutar-sql'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp;   &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">"../class/c.database.php"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;dbase&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsDataBase</span><span style="color: #007700">();<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div>por último buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">default:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; die</span><span style="color: #007700">(</span><span style="color: #DD0000">'0:&nbsp;Este&nbsp;archivo&nbsp;no&nbsp;existe.'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;&nbsp;<br /></span></code></div></div></div>y arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'admin-eliminar-sql'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; echo&nbsp;&#36;dbase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">delete_file_sql</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'admin-restaurar-sql'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; echo&nbsp;&#36;dbase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">restore_file_sql</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'admin-ejecutar-sql'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; echo&nbsp;&#36;dbase</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">executeSQL</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
4 - Ahora en <span style="font-weight: bold;" class="mycode_b">tema/templates/t.admin.tpl</span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{include file='admin_mods/m.admin_rangos.tpl'}</code></div></div>y debajo pegan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{elseif &#36;tsAction == 'execute' || &#36;tsAction == 'backup'}<br />
{include file='admin_mods/m.admin_database.tpl'}</code></div></div><br />
5 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/m.admin_sidemenu.tpl</span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;h4&gt;Configuraci&amp;oacute;n de PHPost&lt;/h4&gt;</code></div></div>y arriba agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;h4&gt;Seguridad&lt;/h4&gt;<br />
&lt;ul class="cat-list"&gt;<br />
    &lt;li id="a_configs"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/execute"&gt;Ejecutar consultas&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<br />
    &lt;li id="a_main"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/backup"&gt;Crear copia&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;<br />
&lt;/ul&gt;</code></div></div><br />
6 - Este archivo "<span style="font-weight: bold;" class="mycode_b">m.admin_database.tpl</span>" y lo agregan a <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/</span><br />
<br />
7 - Por último en <span style="font-weight: bold;" class="mycode_b">tema/ja/admin.js</span> al final del archivo agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>/** <br />
 * Database<br />
 * para ejecutar consultas y crear copias<br />
*/<br />
var database = new function() {<br />
    this.execute = () =&gt; {<br />
        var SQL = 'sql=' + &#36;("#sql").val();<br />
        &#36;.post(global_data.url + '/admin-ejecutar-sql.php', SQL, h =&gt; {<br />
            switch (h.charAt(0)) {<br />
                case '0':<br />
                    mydialog.alert('Error', h.substring(3), false)<br />
                break;<br />
                case '1':<br />
                    mydialog.alert('Bien', h.substring(3), true)<br />
                break;<br />
            }<br />
        })<br />
    },<br />
   this.delete = (id, file, gew) =&gt; {<br />
      if(!gew) {<br />
         mydialog.show()<br />
         mydialog.title('Eliminar')<br />
         mydialog.body(`Estas seguro que quieres eliminar este archivo: &#36;{file}`) <br />
         mydialog.buttons(true, true, 'Borrar SQL', `database.delete(&#36;{id}, '&#36;{file}', true)`, true, false, true, 'Cancelar', 'close', true, true);<br />
         /*mydialog.buttons([<br />
            {mostrar:true,texto:'Borrar SQL',accion:`database.delete(&#36;{id}, '&#36;{file}', true)`,activo:true},<br />
            {mostrar:true,texto:'Cancelar',accion:'cerrar',activo:true}<br />
         ]);<br />
*/         mydialog.center()<br />
      } else {<br />
         &#36;.post(global_data.url + '/admin-eliminar-sql.php', {id,file}, e =&gt; {<br />
            switch (e.charAt(0)) {<br />
               case '0':<br />
                  mydialog.alert('Error', e.substring(3));<br />
               break;<br />
               case '1':<br />
                  mydialog.close();<br />
                  &#36;("#sql" + id).remove();<br />
               break;<br />
            }<br />
         })<br />
      }<br />
   },<br />
   this.restore = (file, gew) =&gt; {<br />
      if(!gew) {<br />
         mydialog.show()<br />
         mydialog.title('Restaurar')<br />
         mydialog.body(`Estas seguro que quieres restaurar esta copia: &#36;{file}`) <br />
         mydialog.buttons(true, true, 'Restaurar SQL', `database.restore('&#36;{file}', true)`, true, false, true, 'Cancelar', 'close', true, true);<br />
         /*mydialog.buttons([<br />
            {mostrar:true,texto:'Restaurar SQL',accion:`database.restore('&#36;{file}', true)`,activo:true},<br />
            {mostrar:true,texto:'Cancelar',accion:'cerrar',activo:true}<br />
         ]);*/<br />
         mydialog.center()<br />
      } else {<br />
         mydialog.procesando_inicio('', "Espere");<br />
         mydialog.buttons(false);<br />
         mydialog.center()<br />
         &#36;.post(global_data.url + '/admin-restaurar-sql.php', {restore: file}, e =&gt; {<br />
            switch (e.charAt(0)) {<br />
               case '0':<br />
                  mydialog.procesando_fin();<br />
                  mydialog.alert('Error', e.substring(3), false);<br />
               break;<br />
               case '1':<br />
                  mydialog.procesando_fin();<br />
                  mydialog.alert('Bien', e.substring(3), false);<br />
               break;<br />
            }<br />
         })<br />
      }<br />
   }<br />
}</code></div></div><br />
Descargar los archivos "<span style="font-weight: bold;" class="mycode_b"><a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url">-#- Justo aquí -#-</a></span>"<br />
<br />
En caso que tengan problemas al querer crear las copias de seguridad, comprueben que se haya creado la carpeta "<span style="font-weight: bold;" class="mycode_b">database</span>" en <span style="font-weight: bold;" class="mycode_b">files/</span> y que tenga<span style="font-weight: bold;" class="mycode_b"> los permisos 0777 aplicados</span>, en caso contrario deberán crearlo y darle los permisos correspondientes]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Control de imágenes [cat, med, ran] desde la administración v.1.0]]></title>
			<link>https://phpost.es/tema-Complementos-Control-de-im%C3%A1genes-cat-med-ran-desde-la-administraci%C3%B3n-v-1-0</link>
			<pubDate>Tue, 22 Feb 2022 17:58:34 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Control-de-im%C3%A1genes-cat-med-ran-desde-la-administraci%C3%B3n-v-1-0</guid>
			<description><![CDATA[Bueno lo que trate de hacer es simplificar un poco, quieres agregar una imagen a "<span style="font-weight: bold;" class="mycode_b">rangos</span>", "<span style="font-weight: bold;" class="mycode_b">categorías</span>" o "<span style="font-weight: bold;" class="mycode_b">medallas</span>" y no quieres entrar desde el <span style="font-weight: bold;" class="mycode_b">FTP </span>o <span style="font-weight: bold;" class="mycode_b">CPanel</span>, bueno con esta herramienta deberías poder realizar esta tarea desde la administración de tu sitio.<br />
<br />
Les mostraré algunas imágenes, pero no esta realizado con el default, si no que es una versión que estoy realizando.<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
Bueno comenzamos...<br />
1 - En <span style="font-weight: bold;" class="mycode_b">inc/class/c.admin.php</span> lo pueden agregar al final o donde quieran.<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;todas&nbsp;las&nbsp;imagenes&nbsp;de&nbsp;la&nbsp;carpeta<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">obtener_paquete</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;dir</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Aplicamos&nbsp;los&nbsp;permisos&nbsp;si&nbsp;no&nbsp;los&nbsp;tiene<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">foreach&nbsp;([</span><span style="color: #DD0000">"cat"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"med"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"ran"</span><span style="color: #007700">]&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;carpeta</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;carpeta</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0777</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;un&nbsp;arreglo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;data&nbsp;</span><span style="color: #007700">=&nbsp;[];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Buscamos&nbsp;en&nbsp;la&nbsp;carpeta...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;dir</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;imagenes&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Recorremos&nbsp;la&nbsp;carpeta<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">while&nbsp;(</span><span style="color: #0000BB">&#36;icono&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;imagenes</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;icono&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;icono&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;información&nbsp;del&nbsp;archivo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;inf&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;arr&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"hash"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">md5</span><span style="color: #007700">(</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">'.'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">)[</span><span style="color: #0000BB">0</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"icon"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">'.'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">)[</span><span style="color: #0000BB">0</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"url"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;dir&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"width"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"height"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"type"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #DD0000">"mime"</span><span style="color: #007700">]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"size"</span><span style="color: #007700">])&nbsp;or&nbsp;isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"size"</span><span style="color: #007700">])&nbsp;===&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;or&nbsp;</span><span style="color: #DD0000">'image/'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #DD0000">"mime"</span><span style="color: #007700">])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;arr</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;</span><span style="color: #0000BB">array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;arr</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">closedir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;imagenes&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Retornamos&nbsp;el&nbsp;arreglo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">eliminar_icono_paquete</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Buscamos&nbsp;en&nbsp;la&nbsp;carpeta...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Eliminamos&nbsp;si&nbsp;son&nbsp;la&nbsp;misma&nbsp;imagen&nbsp;con&nbsp;difente&nbsp;tamaño<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">foreach(</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obtener_paquete</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">])&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"hash"</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"hash"</span><span style="color: #007700">])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #DD0000">'med'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;sizes&nbsp;</span><span style="color: #007700">=&nbsp;[</span><span style="color: #0000BB">16</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">32</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">&#36;sizes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;nimg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"icon"</span><span style="color: #007700">]}</span><span style="color: #DD0000">_</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">}</span><span style="color: #DD0000">."&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">unlink</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;nimg</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;nimg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;carpeta</span><span style="color: #007700">}</span><span style="color: #DD0000">/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"icon"</span><span style="color: #007700">]}</span><span style="color: #DD0000">."&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(</span><span style="color: #0000BB">unlink</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;nimg</span><span style="color: #007700">))&nbsp;?&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">subir_icono</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Mover&nbsp;a...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;mover&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">DIRECTORY_SEPARATOR</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;((</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">"image/jpg"</span><span style="color: #007700">)&nbsp;||&nbsp;(</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">"image/png"</span><span style="color: #007700">)&nbsp;||&nbsp;(</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">"image/gif"</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Agregamos&nbsp;la&nbsp;imagen,&nbsp;si&nbsp;existe,&nbsp;esta&nbsp;será&nbsp;reemplazada&nbsp;por&nbsp;la&nbsp;nueva&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;(</span><span style="color: #0000BB">move_uploaded_file</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"tmp_name"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;mover&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">'file'</span><span style="color: #007700">][</span><span style="color: #DD0000">'name'</span><span style="color: #007700">]))&nbsp;?&nbsp;</span><span style="color: #DD0000">'1:&nbsp;Imagen&nbsp;agregada&nbsp;correctamente...'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'0:&nbsp;No&nbsp;se&nbsp;pudo&nbsp;subir&nbsp;la&nbsp;imagen!'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}&nbsp;<br /></span></code></div></div></div><br />
Este código es para Smarty 4, si no lo tienes actualizado, lo que debes hacer es lo siguiente, buscas esto<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;<br /></span></code></div></div></div><br />
y lo reemplazas por<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">TS_ROOT&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/themes/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">][</span><span style="color: #DD0000">'t_path'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/images/icons/'&nbsp;<br /></span></code></div></div></div><br />
y borrar el de las funciones, excepto el que lleva<span style="color: #16a085;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"> &#36;tsCore</span></span>, allí solo eliminas <span style="color: #c0392b;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">&#36;smarty</span></span><br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
<br />
2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/admin.php</span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'creditos'</span><span style="color: #007700">){&nbsp;<br /></span></code></div></div></div><br />
y arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">#&nbsp;PACKS&nbsp;<br /></span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'packs'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsDir'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'abrir'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsPack'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obtener_paquete</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]));<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - En <span style="font-weight: bold;" class="mycode_b">inc/php/ajax/ajax.admin.php</span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-badwords-delete'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
y debajo pegan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-eliminar-icono'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #DD0000">'admin-subir-icono'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
más abajo<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</span><span style="color: #DD0000">'0:&nbsp;Este&nbsp;archivo&nbsp;no&nbsp;existe.'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<br /></span></code></div></div></div><br />
arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'admin-eliminar-icono'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">eliminar_icono_paquete</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #DD0000">'admin-subir-icono'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">subir_icono</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<br /></span></code></div></div></div><br />
<br />
4 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/</span> crean un archivo llamado "<span style="font-weight: bold;" class="mycode_b">m.admin_packs.tpl</span>" y dentro agregan, les recuerdo que lo pueden adaptar a su theme<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="boxy-title"&gt;<br />
&nbsp;&nbsp; &lt;h3&gt;Control de paquetes de imagenes&lt;/h3&gt;<br />
&lt;/div&gt;<br />
&lt;div id="res" class="boxy-content"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;p class="alerts ok"&gt;Desde aqu&amp;iacute; podrás ver, agregar, eliminar las imagenes e iconos que estan guardados en "&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran"&gt;ran&lt;/a&gt;", "&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med"&gt;med&lt;/a&gt;", "&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=cat"&gt;cat&lt;/a&gt;".&lt;/p&gt;<br />
&nbsp;&nbsp; {if &#36;tsSave}&lt;div class="alerts ok"&gt;Tus cambios han sido guardados.&lt;/div&gt;{/if}<br />
&nbsp;&nbsp; &lt;hr class="separator"&gt;<br />
&nbsp;&nbsp; {if &#36;tsAct === ''}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;div style="display:grid;gap:10px;grid-template-columns: repeat(3, 1fr);"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=cat" class="block text-center"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img width="140" height="140" src="{&#36;tsConfig.images}/category.svg" alt="Categor&amp;iacute;as"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;strong style="margin-top:4px;display: block;"&gt;Categor&amp;iacute;as&lt;/strong&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med" class="block text-center"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img width="140" height="140" src="{&#36;tsConfig.images}/award.svg" alt="Medallas"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;strong style="margin-top:4px;display: block;"&gt;Medallas&lt;/strong&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran" class="block text-center"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img width="140" height="140" src="{&#36;tsConfig.images}/ran.svg" alt="Rangos"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;strong style="margin-top:4px;display: block;"&gt;Rangos&lt;/strong&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp; {elseif &#36;tsAct === 'abrir'}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{if &#36;tsDir === 'med' || &#36;tsDir === 'ran'}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&gt;Filtros:&lt;/span&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{if &#36;tsDir === 'med'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med" style="text-align:center;"&gt;Todos&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med&amp;size=16" style="text-align:center;"&gt;16x16&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med&amp;size=32" style="text-align:center;"&gt;32x32&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{/if}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{if &#36;tsDir === 'ran'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran" style="text-align:center;"&gt;Todos&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran&amp;type=gif" style="text-align:center;"&gt;GIF&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran&amp;type=png" style="text-align:center;"&gt;PNG&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{/if}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{/if}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;table class="admin_table"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;thead&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Icono&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Nombre&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Dimensiones&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Tipo&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Acciones&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thead&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{foreach &#36;tsPack item=ic}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr class="{&#36;ic.hash}"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td style="text-align:center;"&gt;&lt;img src="{&#36;ic.url}" alt="{&#36;ic.icon}"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td style="width: max-content"&gt;{&#36;ic.icon}&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;{&#36;ic.width}x{&#36;ic.height}&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;{&#36;ic.type}&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="admin_actions flex jcsaround aicenter"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="javascript:packs.borrar('{&#36;tsDir}', '{&#36;ic.hash}')" title="Eliminar"&gt;&lt;i class="fas fa-trash"&gt;&lt;/i&gt;&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{/foreach}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;hr class="separator"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;div style="text-align:center;"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=agregar&amp;path={&#36;tsDir}" class="mBtn"&gt;Agregar icono en {&#36;tsDir}&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{elseif &#36;tsAct === 'agregar'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form method="post" enctype="multipart/form-data"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="hidden" name="path" id="path" value="{&#36;tsDir}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="form-line"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label for="image"&gt;Sube una imagen...&lt;/label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="file" class="form-control-file" name="image" id="image"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;a href="javascript:packs.subir()" class="mBtn btnOk"&gt;Agregar&lt;/a&gt;&lt;/p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
<br />
&nbsp;&nbsp; {/if}<br />
&lt;/div&gt;</code></div></div><br />
<br />
5 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/m.admin_sidemenu.tpl</span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_badwords"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/badwords"&gt;Censuras&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div><br />
y debajo agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_main"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/packs"&gt;Control de iconos&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div><br />
6 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/t.admin.tpl</span> debajo de<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">{include&nbsp;</span><span style="color: #0000BB">file</span><span style="color: #007700">=</span><span style="color: #DD0000">'admin_mods/m.admin_rangos.tpl'</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
agregar<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">{elseif&nbsp;</span><span style="color: #0000BB">&#36;tsAction&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'packs'</span><span style="color: #007700">}<br />{include&nbsp;</span><span style="color: #0000BB">file</span><span style="color: #007700">=</span><span style="color: #DD0000">'admin_mods/m.admin_packs.tpl'</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
7 - En <span style="font-weight: bold;" class="mycode_b">tema/js/admin.js</span> al final del archivo agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>/** <br />
 * Control de paquete<br />
 * para agregar, editar y eliminar iconos<br />
*/<br />
var packs = new function() {<br />
&nbsp;&nbsp; this.reload = path =&gt; location.href = global_data.url + '/admin/packs?act=abrir&amp;path=' + path,<br />
&nbsp;&nbsp; this.subir = () =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formData.append('file', &#36;('#image')[0].files[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formData.append('path', &#36;('#path').val());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;.ajax({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url: global_data.url + '/admin-subir-icono.php',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: 'post',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data: formData,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contentType: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processData: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success: response =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(response.charAt(0)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '0':<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.alert('Error', response.substring(3), false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.center();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '1': <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.show()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.title('Bien!')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.body(response.substring(3)) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.buttons(true, true, 'Continuar', 'packs.reload(' + carpeta + ')', true, false, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*mydialog.buttons({mostrar:true,texto:'Continuar',accion:`packs.reload('&#36;{path}')`,activo:true});*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.center()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp; },<br />
&nbsp;&nbsp; this.borrar = (carpeta, hash, status) =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!status) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.show()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.title('¿Deseas eliminar ' + (carpeta == 'med' ? 'estos iconos' : 'este icono') + '?')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.body('Esto eliminará el/los iconos de su tema') <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.buttons(true, true, 'Continuar', 'packs.borrar(' + carpeta + ', ' + hash + ', true)', true, false, true, 'No', 'close', true, true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*mydialog.buttons([<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{mostrar:true,texto:'Continuar',accion:`packs.borrar('&#36;{carpeta}', '&#36;{hash}', true)`,activo:true},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{mostrar:true,texto:'No',accion:'cerrar',activo:true}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]);*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.center()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var params = ['path=' + carpeta, 'hash=' + hash].join('&amp;')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;.post(global_data.url + '/admin-eliminar-icono.php', params, del =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(del) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(carpeta === 'med') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;("tr." + hash).each( (inx, trh) =&gt; trh.remove())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else &#36;("tr." + hash).remove()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }<br />
}</code></div></div><br />
<br />
8 - Suben <span style="font-weight: bold;" class="mycode_b"><a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url">estas 3 imágenes</a></span> a <span style="font-weight: bold;" class="mycode_b">tema/images/</span><br />
<br />
Para la próxima le quiero agregar un paginador, y la subida de múltiples imágenes...<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">NOTA:</span></span> Para que funciones correctamente, el complemento le asignará a las carpetas <span style="font-weight: bold;" class="mycode_b">ran</span>, <span style="font-weight: bold;" class="mycode_b">cat</span> y <span style="font-weight: bold;" class="mycode_b">med</span> los permisos necesarios para que funcione, en caso que tenga error o no suba las imágenes a dichas carpetas lo que deben hacer es <span style="font-weight: bold;" class="mycode_b">darle permisos 0777</span> manualmente a las carpetas mencionadas]]></description>
			<content:encoded><![CDATA[Bueno lo que trate de hacer es simplificar un poco, quieres agregar una imagen a "<span style="font-weight: bold;" class="mycode_b">rangos</span>", "<span style="font-weight: bold;" class="mycode_b">categorías</span>" o "<span style="font-weight: bold;" class="mycode_b">medallas</span>" y no quieres entrar desde el <span style="font-weight: bold;" class="mycode_b">FTP </span>o <span style="font-weight: bold;" class="mycode_b">CPanel</span>, bueno con esta herramienta deberías poder realizar esta tarea desde la administración de tu sitio.<br />
<br />
Les mostraré algunas imágenes, pero no esta realizado con el default, si no que es una versión que estoy realizando.<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
Bueno comenzamos...<br />
1 - En <span style="font-weight: bold;" class="mycode_b">inc/class/c.admin.php</span> lo pueden agregar al final o donde quieran.<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;todas&nbsp;las&nbsp;imagenes&nbsp;de&nbsp;la&nbsp;carpeta<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">obtener_paquete</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;dir</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Aplicamos&nbsp;los&nbsp;permisos&nbsp;si&nbsp;no&nbsp;los&nbsp;tiene<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">foreach&nbsp;([</span><span style="color: #DD0000">"cat"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"med"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"ran"</span><span style="color: #007700">]&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;carpeta</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">chmod</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;carpeta</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0777</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;un&nbsp;arreglo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;data&nbsp;</span><span style="color: #007700">=&nbsp;[];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Buscamos&nbsp;en&nbsp;la&nbsp;carpeta...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;dir</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;imagenes&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Recorremos&nbsp;la&nbsp;carpeta<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">while&nbsp;(</span><span style="color: #0000BB">&#36;icono&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;imagenes</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;icono&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;icono&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">):<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;información&nbsp;del&nbsp;archivo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;inf&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;arr&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"hash"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">md5</span><span style="color: #007700">(</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">'.'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">)[</span><span style="color: #0000BB">0</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"icon"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">'.'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">)[</span><span style="color: #0000BB">0</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"url"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;dir&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;icono</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"width"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"height"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"type"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #DD0000">"mime"</span><span style="color: #007700">]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"size"</span><span style="color: #007700">])&nbsp;or&nbsp;isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"size"</span><span style="color: #007700">])&nbsp;===&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]&nbsp;or&nbsp;</span><span style="color: #DD0000">'image/'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #0000BB">&#36;inf</span><span style="color: #007700">[</span><span style="color: #DD0000">"mime"</span><span style="color: #007700">])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;arr</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;</span><span style="color: #0000BB">array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;arr</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">closedir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;imagenes&nbsp;</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Retornamos&nbsp;el&nbsp;arreglo<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">eliminar_icono_paquete</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Buscamos&nbsp;en&nbsp;la&nbsp;carpeta...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Eliminamos&nbsp;si&nbsp;son&nbsp;la&nbsp;misma&nbsp;imagen&nbsp;con&nbsp;difente&nbsp;tamaño<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">foreach(</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obtener_paquete</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">])&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"hash"</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"hash"</span><span style="color: #007700">])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]&nbsp;===&nbsp;</span><span style="color: #DD0000">'med'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;sizes&nbsp;</span><span style="color: #007700">=&nbsp;[</span><span style="color: #0000BB">16</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">32</span><span style="color: #007700">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach&nbsp;(</span><span style="color: #0000BB">&#36;sizes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;nimg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"icon"</span><span style="color: #007700">]}</span><span style="color: #DD0000">_</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">}</span><span style="color: #DD0000">."&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">unlink</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;carpeta&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/'&nbsp;</span><span style="color: #007700">.&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;nimg</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;nimg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;carpeta</span><span style="color: #007700">}</span><span style="color: #DD0000">/</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"icon"</span><span style="color: #007700">]}</span><span style="color: #DD0000">."&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;eliminar</span><span style="color: #007700">[</span><span style="color: #DD0000">"type"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">6</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(</span><span style="color: #0000BB">unlink</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;nimg</span><span style="color: #007700">))&nbsp;?&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;</span><span style="color: #0000BB">subir_icono</span><span style="color: #007700">()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Mover&nbsp;a...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;mover&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">DIRECTORY_SEPARATOR</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">if&nbsp;((</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">"image/jpg"</span><span style="color: #007700">)&nbsp;||&nbsp;(</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">"image/png"</span><span style="color: #007700">)&nbsp;||&nbsp;(</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"type"</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">"image/gif"</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">#&nbsp;Agregamos&nbsp;la&nbsp;imagen,&nbsp;si&nbsp;existe,&nbsp;esta&nbsp;será&nbsp;reemplazada&nbsp;por&nbsp;la&nbsp;nueva&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">return&nbsp;(</span><span style="color: #0000BB">move_uploaded_file</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">"file"</span><span style="color: #007700">][</span><span style="color: #DD0000">"tmp_name"</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;mover&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;_FILES</span><span style="color: #007700">[</span><span style="color: #DD0000">'file'</span><span style="color: #007700">][</span><span style="color: #DD0000">'name'</span><span style="color: #007700">]))&nbsp;?&nbsp;</span><span style="color: #DD0000">'1:&nbsp;Imagen&nbsp;agregada&nbsp;correctamente...'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'0:&nbsp;No&nbsp;se&nbsp;pudo&nbsp;subir&nbsp;la&nbsp;imagen!'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;return&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;}&nbsp;<br /></span></code></div></div></div><br />
Este código es para Smarty 4, si no lo tienes actualizado, lo que debes hacer es lo siguiente, buscas esto<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"images"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'icons/'&nbsp;<br /></span></code></div></div></div><br />
y lo reemplazas por<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">TS_ROOT&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/themes/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">][</span><span style="color: #DD0000">'t_path'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/images/icons/'&nbsp;<br /></span></code></div></div></div><br />
y borrar el de las funciones, excepto el que lleva<span style="color: #16a085;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b"> &#36;tsCore</span></span>, allí solo eliminas <span style="color: #c0392b;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">&#36;smarty</span></span><br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
<br />
2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/admin.php</span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'creditos'</span><span style="color: #007700">){&nbsp;<br /></span></code></div></div></div><br />
y arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">#&nbsp;PACKS&nbsp;<br /></span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'packs'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsDir'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'abrir'</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsPack'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obtener_paquete</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]));<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - En <span style="font-weight: bold;" class="mycode_b">inc/php/ajax/ajax.admin.php</span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-badwords-delete'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
y debajo pegan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-eliminar-icono'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #DD0000">'admin-subir-icono'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
más abajo<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">default:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;die(</span><span style="color: #DD0000">'0:&nbsp;Este&nbsp;archivo&nbsp;no&nbsp;existe.'</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<br /></span></code></div></div></div><br />
arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'admin-eliminar-icono'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">eliminar_icono_paquete</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;</span><span style="color: #DD0000">'admin-subir-icono'</span><span style="color: #007700">:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">subir_icono</span><span style="color: #007700">();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;<br /></span></code></div></div></div><br />
<br />
4 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/</span> crean un archivo llamado "<span style="font-weight: bold;" class="mycode_b">m.admin_packs.tpl</span>" y dentro agregan, les recuerdo que lo pueden adaptar a su theme<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="boxy-title"&gt;<br />
&nbsp;&nbsp; &lt;h3&gt;Control de paquetes de imagenes&lt;/h3&gt;<br />
&lt;/div&gt;<br />
&lt;div id="res" class="boxy-content"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;p class="alerts ok"&gt;Desde aqu&amp;iacute; podrás ver, agregar, eliminar las imagenes e iconos que estan guardados en "&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran"&gt;ran&lt;/a&gt;", "&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med"&gt;med&lt;/a&gt;", "&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=cat"&gt;cat&lt;/a&gt;".&lt;/p&gt;<br />
&nbsp;&nbsp; {if &#36;tsSave}&lt;div class="alerts ok"&gt;Tus cambios han sido guardados.&lt;/div&gt;{/if}<br />
&nbsp;&nbsp; &lt;hr class="separator"&gt;<br />
&nbsp;&nbsp; {if &#36;tsAct === ''}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;div style="display:grid;gap:10px;grid-template-columns: repeat(3, 1fr);"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=cat" class="block text-center"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img width="140" height="140" src="{&#36;tsConfig.images}/category.svg" alt="Categor&amp;iacute;as"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;strong style="margin-top:4px;display: block;"&gt;Categor&amp;iacute;as&lt;/strong&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med" class="block text-center"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img width="140" height="140" src="{&#36;tsConfig.images}/award.svg" alt="Medallas"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;strong style="margin-top:4px;display: block;"&gt;Medallas&lt;/strong&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran" class="block text-center"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img width="140" height="140" src="{&#36;tsConfig.images}/ran.svg" alt="Rangos"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;strong style="margin-top:4px;display: block;"&gt;Rangos&lt;/strong&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp; {elseif &#36;tsAct === 'abrir'}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{if &#36;tsDir === 'med' || &#36;tsDir === 'ran'}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&gt;Filtros:&lt;/span&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{if &#36;tsDir === 'med'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med" style="text-align:center;"&gt;Todos&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med&amp;size=16" style="text-align:center;"&gt;16x16&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=med&amp;size=32" style="text-align:center;"&gt;32x32&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{/if}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{if &#36;tsDir === 'ran'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran" style="text-align:center;"&gt;Todos&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran&amp;type=gif" style="text-align:center;"&gt;GIF&lt;/a&gt; - <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=abrir&amp;path=ran&amp;type=png" style="text-align:center;"&gt;PNG&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{/if}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;{/if}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;table class="admin_table"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;thead&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Icono&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Nombre&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Dimensiones&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Tipo&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;th&gt;Acciones&lt;/th&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/thead&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{foreach &#36;tsPack item=ic}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tr class="{&#36;ic.hash}"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td style="text-align:center;"&gt;&lt;img src="{&#36;ic.url}" alt="{&#36;ic.icon}"&gt;&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td style="width: max-content"&gt;{&#36;ic.icon}&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;{&#36;ic.width}x{&#36;ic.height}&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td&gt;{&#36;ic.type}&lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;td class="admin_actions flex jcsaround aicenter"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="javascript:packs.borrar('{&#36;tsDir}', '{&#36;ic.hash}')" title="Eliminar"&gt;&lt;i class="fas fa-trash"&gt;&lt;/i&gt;&lt;/a&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tr&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{/foreach}<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/table&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;hr class="separator"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;div style="text-align:center;"&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;a href="{&#36;tsConfig.url}/admin/packs?act=agregar&amp;path={&#36;tsDir}" class="mBtn"&gt;Agregar icono en {&#36;tsDir}&lt;/a&gt;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{elseif &#36;tsAct === 'agregar'}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form method="post" enctype="multipart/form-data"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;input type="hidden" name="path" id="path" value="{&#36;tsDir}"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div class="form-line"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;label for="image"&gt;Sube una imagen...&lt;/label&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="file" class="form-control-file" name="image" id="image"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;p&gt;&lt;a href="javascript:packs.subir()" class="mBtn btnOk"&gt;Agregar&lt;/a&gt;&lt;/p&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />
<br />
&nbsp;&nbsp; {/if}<br />
&lt;/div&gt;</code></div></div><br />
<br />
5 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/m.admin_sidemenu.tpl</span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_badwords"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/badwords"&gt;Censuras&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div><br />
y debajo agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_main"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/packs"&gt;Control de iconos&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div><br />
6 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/t.admin.tpl</span> debajo de<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">{include&nbsp;</span><span style="color: #0000BB">file</span><span style="color: #007700">=</span><span style="color: #DD0000">'admin_mods/m.admin_rangos.tpl'</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
agregar<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">{elseif&nbsp;</span><span style="color: #0000BB">&#36;tsAction&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'packs'</span><span style="color: #007700">}<br />{include&nbsp;</span><span style="color: #0000BB">file</span><span style="color: #007700">=</span><span style="color: #DD0000">'admin_mods/m.admin_packs.tpl'</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
7 - En <span style="font-weight: bold;" class="mycode_b">tema/js/admin.js</span> al final del archivo agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>/** <br />
 * Control de paquete<br />
 * para agregar, editar y eliminar iconos<br />
*/<br />
var packs = new function() {<br />
&nbsp;&nbsp; this.reload = path =&gt; location.href = global_data.url + '/admin/packs?act=abrir&amp;path=' + path,<br />
&nbsp;&nbsp; this.subir = () =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var formData = new FormData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formData.append('file', &#36;('#image')[0].files[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;formData.append('path', &#36;('#path').val());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;.ajax({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url: global_data.url + '/admin-subir-icono.php',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: 'post',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; data: formData,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contentType: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; processData: false,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; success: response =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(response.charAt(0)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '0':<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.alert('Error', response.substring(3), false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.center();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '1': <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.show()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.title('Bien!')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.body(response.substring(3)) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.buttons(true, true, 'Continuar', 'packs.reload(' + carpeta + ')', true, false, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*mydialog.buttons({mostrar:true,texto:'Continuar',accion:`packs.reload('&#36;{path}')`,activo:true});*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.center()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp; },<br />
&nbsp;&nbsp; this.borrar = (carpeta, hash, status) =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!status) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.show()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.title('¿Deseas eliminar ' + (carpeta == 'med' ? 'estos iconos' : 'este icono') + '?')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.body('Esto eliminará el/los iconos de su tema') <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.buttons(true, true, 'Continuar', 'packs.borrar(' + carpeta + ', ' + hash + ', true)', true, false, true, 'No', 'close', true, true);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*mydialog.buttons([<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{mostrar:true,texto:'Continuar',accion:`packs.borrar('&#36;{carpeta}', '&#36;{hash}', true)`,activo:true},<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{mostrar:true,texto:'No',accion:'cerrar',activo:true}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]);*/<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.center()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var params = ['path=' + carpeta, 'hash=' + hash].join('&amp;')<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;.post(global_data.url + '/admin-eliminar-icono.php', params, del =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mydialog.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(del) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(carpeta === 'med') {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;("tr." + hash).each( (inx, trh) =&gt; trh.remove())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else &#36;("tr." + hash).remove()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp; }<br />
}</code></div></div><br />
<br />
8 - Suben <span style="font-weight: bold;" class="mycode_b"><a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url">estas 3 imágenes</a></span> a <span style="font-weight: bold;" class="mycode_b">tema/images/</span><br />
<br />
Para la próxima le quiero agregar un paginador, y la subida de múltiples imágenes...<br />
<br />
<span style="text-decoration: underline;" class="mycode_u"><span style="font-weight: bold;" class="mycode_b">NOTA:</span></span> Para que funciones correctamente, el complemento le asignará a las carpetas <span style="font-weight: bold;" class="mycode_b">ran</span>, <span style="font-weight: bold;" class="mycode_b">cat</span> y <span style="font-weight: bold;" class="mycode_b">med</span> los permisos necesarios para que funcione, en caso que tenga error o no suba las imágenes a dichas carpetas lo que deben hacer es <span style="font-weight: bold;" class="mycode_b">darle permisos 0777</span> manualmente a las carpetas mencionadas]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Mover categorías [Mejorado]]]></title>
			<link>https://phpost.es/tema-Complementos-Mover-categor%C3%ADas-Mejorado</link>
			<pubDate>Mon, 21 Feb 2022 14:20:22 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Mover-categor%C3%ADas-Mejorado</guid>
			<description><![CDATA[En este caso se usará <span style="font-weight: bold;" class="mycode_b">CDN </span>para que sea mejor<br />
<br />
1 - En <span style="font-weight: bold;" class="mycode_b">inc/class/c.admin.php</span> buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">saveOrden</span><span style="color: #007700">()&nbsp;{&nbsp;...&nbsp;</span><span style="color: #0000BB">todo&nbsp;</span><span style="color: #007700">...&nbsp;}&nbsp;<br /></span></code></div></div></div><br />
y lo reemplazamos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">saveOrden</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; global&nbsp;&#36;tsCore</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000"># <br /></span><span style="color: #0000BB"> &nbsp; &#36;ordenado&nbsp;</span><span style="color: #007700">=&nbsp;[];<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;lista&nbsp;con&nbsp;el&nbsp;nuevo&nbsp;orden<br /></span><span style="color: #0000BB"> &nbsp; &#36;nuevo_orden&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; foreach&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">','</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"cats"</span><span style="color: #007700">])&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;orden</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"UPDATE&nbsp;p_categorias&nbsp;SET&nbsp;c_orden&nbsp;=&nbsp;"</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;nuevo_orden</span><span style="color: #007700">.</span><span style="color: #DD0000">"&nbsp;WHERE&nbsp;cid&nbsp;=&nbsp;"</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;orden</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;ordenado</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;nuevo_orden</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;nuevo_orden</span><span style="color: #007700">++;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}<br />}&nbsp;<br /></span></code></div></div></div><br />
<br />
2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/ajax/ajax.admin.php</span> buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-badwords-delete'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-ordenar-categorias'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
más abajo buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'admin-badwords-delete'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&lt;---<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">deleteBadWord</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//---&gt;<br /></span><span style="color: #007700">break;&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'admin-ordenar-categorias'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&lt;---<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">saveOrden</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//---&gt;<br /></span><span style="color: #007700">break;&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - Luego en <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/m.admin_cats.tpl</span> y buscamos, puedes eliminar <span style="font-weight: bold;" class="mycode_b">jquery.tablednd.js</span> si quieres<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;script type="text/javascript" src="{&#36;tsConfig.js}/jquery.tablednd.js"&gt;&lt;/script&gt;</code></div></div><br />
y lo reemplazamos por, se usa la condicional ya que solo es donde se muestra la lista de categorías<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsAct == ''}<br />
   &lt;script src="Registrate o inicia tu sesión para ver este contenido@latest/Sortable.min.js"&gt;&lt;/script&gt;<br />
{/if}</code></div></div><br />
abajo de eso buscamos <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;script type="text/javascript"&gt;<br />
    // {literal}<br />
    &#36;(function(){<br />
        // {/literal} {if &#36;tsAct == ''} {literal}<br />
        &#36;('#cats_orden').tableDnD({<br />
            onDrop: function(table, row) {<br />
                &#36;.ajax({<br />
                       type: 'post', <br />
                       url: global_data.url + '/admin/cats?ajax=true&amp;ordenar=true', <br />
                       cache: false, <br />
                       data: &#36;.tableDnD.serialize()<br />
                });<br />
            }<br />
        });<br />
        // {/literal} {/if} {literal}<br />
        &#36;('#cats_orden').tableDnD({<br />
            onDrop: function(table, row) {<br />
                &#36;.ajax({<br />
                       type: 'post', <br />
                       url: global_data.url + '/admin/cats?ajax=true&amp;ordenar=true&amp;t=cat', <br />
                       cache: false, <br />
                       data: &#36;.tableDnD.serialize()<br />
                });<br />
            }<br />
        });<br />
        //<br />
        &#36;('#cat_img').change(function(){<br />
            var cssi = &#36;("#cat_img option:selected").css('background');<br />
            &#36;('#c_icon').css({"background" : cssi});<br />
        });<br />
        //<br />
    });<br />
    //{/literal}<br />
&lt;/script&gt;</code></div></div><br />
y lo reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsAct == '' || &#36;tsAct == 'editar' || &#36;tsAct == 'nueva'}<br />
&lt;script&gt;<br />
&#36;(() =&gt; {<br />
   /* {if &#36;tsAct == ''} */<br />
   new Sortable(document.getElementById('cats_orden'), {<br />
      animation: 150,<br />
      dragClass: "arrastrar", // Clase que puedes modificar<br />
      selectedClass: "seleccionado", // Clase que puedes modificar<br />
      store: {<br />
         // Guardar orden<br />
         set: sortable =&gt; &#36;.post(global_data.url + '/admin-ordenar-categorias.php', 'cats=' + sortable.toArray().join(','))<br />
      }<br />
   });<br />
   /* {/if} */<br />
   &#36;('#cat_img').on('change', () =&gt; {<br />
      &#36;('#c_icon').css({ <br />
         "background": &#36;("#cat_img option:selected").css('background') <br />
      })<br />
   });<br />
})<br />
&lt;/script&gt;<br />
{/if}</code></div></div><br />
más abajo buscan y le borran <span style="color: #c0392b;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">id="cats_orden"</span></span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;table cellpadding="0" cellspacing="0" border="0" width="500" align="center" class="admin_table" id="cats_orden"&gt;</code></div></div><br />
un poco más abajo buscan y le añaden <span style="color: #16a085;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">id="cats_orden"</span></span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;tbody&gt;</code></div></div><br />
abajo buscan<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;tr id="{&#36;c.cid}"&gt;</code></div></div><br />
y lo reemplazan por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;tr id="{&#36;c.cid}" data-id="{&#36;c.cid}"&gt;</code></div></div><br />
Si quieres puedes añadir estas líneas en <span style="font-weight: bold;" class="mycode_b">tema/css/admin.css</span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>.arrastrar {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #EEE;<br />
}<br />
.seleccionado {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #CCC;<br />
}</code></div></div><br />
Si quieres obtener más información sobre el complemento "<a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">SortableJS</span></a>", puedes acceder a la página que contiene la documentación para que puedas hacer los cambios que desees!]]></description>
			<content:encoded><![CDATA[En este caso se usará <span style="font-weight: bold;" class="mycode_b">CDN </span>para que sea mejor<br />
<br />
1 - En <span style="font-weight: bold;" class="mycode_b">inc/class/c.admin.php</span> buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">saveOrden</span><span style="color: #007700">()&nbsp;{&nbsp;...&nbsp;</span><span style="color: #0000BB">todo&nbsp;</span><span style="color: #007700">...&nbsp;}&nbsp;<br /></span></code></div></div></div><br />
y lo reemplazamos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">public&nbsp;function&nbsp;</span><span style="color: #0000BB">saveOrden</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; global&nbsp;&#36;tsCore</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000"># <br /></span><span style="color: #0000BB"> &nbsp; &#36;ordenado&nbsp;</span><span style="color: #007700">=&nbsp;[];<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;lista&nbsp;con&nbsp;el&nbsp;nuevo&nbsp;orden<br /></span><span style="color: #0000BB"> &nbsp; &#36;nuevo_orden&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; foreach&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">explode</span><span style="color: #007700">(</span><span style="color: #DD0000">','</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"cats"</span><span style="color: #007700">])&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;orden</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"UPDATE&nbsp;p_categorias&nbsp;SET&nbsp;c_orden&nbsp;=&nbsp;"</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;nuevo_orden</span><span style="color: #007700">.</span><span style="color: #DD0000">"&nbsp;WHERE&nbsp;cid&nbsp;=&nbsp;"</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;orden</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;ordenado</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;nuevo_orden</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;nuevo_orden</span><span style="color: #007700">++;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}<br />}&nbsp;<br /></span></code></div></div></div><br />
<br />
2 - En <span style="font-weight: bold;" class="mycode_b">inc/php/ajax/ajax.admin.php</span> buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-badwords-delete'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'admin-ordenar-categorias'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
más abajo buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'admin-badwords-delete'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&lt;---<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">deleteBadWord</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//---&gt;<br /></span><span style="color: #007700">break;&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'admin-ordenar-categorias'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&lt;---<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">saveOrden</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//---&gt;<br /></span><span style="color: #007700">break;&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - Luego en <span style="font-weight: bold;" class="mycode_b">tema/templates/admin_mods/m.admin_cats.tpl</span> y buscamos, puedes eliminar <span style="font-weight: bold;" class="mycode_b">jquery.tablednd.js</span> si quieres<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;script type="text/javascript" src="{&#36;tsConfig.js}/jquery.tablednd.js"&gt;&lt;/script&gt;</code></div></div><br />
y lo reemplazamos por, se usa la condicional ya que solo es donde se muestra la lista de categorías<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsAct == ''}<br />
   &lt;script src="Registrate o inicia tu sesión para ver este contenido@latest/Sortable.min.js"&gt;&lt;/script&gt;<br />
{/if}</code></div></div><br />
abajo de eso buscamos <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;script type="text/javascript"&gt;<br />
    // {literal}<br />
    &#36;(function(){<br />
        // {/literal} {if &#36;tsAct == ''} {literal}<br />
        &#36;('#cats_orden').tableDnD({<br />
            onDrop: function(table, row) {<br />
                &#36;.ajax({<br />
                       type: 'post', <br />
                       url: global_data.url + '/admin/cats?ajax=true&amp;ordenar=true', <br />
                       cache: false, <br />
                       data: &#36;.tableDnD.serialize()<br />
                });<br />
            }<br />
        });<br />
        // {/literal} {/if} {literal}<br />
        &#36;('#cats_orden').tableDnD({<br />
            onDrop: function(table, row) {<br />
                &#36;.ajax({<br />
                       type: 'post', <br />
                       url: global_data.url + '/admin/cats?ajax=true&amp;ordenar=true&amp;t=cat', <br />
                       cache: false, <br />
                       data: &#36;.tableDnD.serialize()<br />
                });<br />
            }<br />
        });<br />
        //<br />
        &#36;('#cat_img').change(function(){<br />
            var cssi = &#36;("#cat_img option:selected").css('background');<br />
            &#36;('#c_icon').css({"background" : cssi});<br />
        });<br />
        //<br />
    });<br />
    //{/literal}<br />
&lt;/script&gt;</code></div></div><br />
y lo reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsAct == '' || &#36;tsAct == 'editar' || &#36;tsAct == 'nueva'}<br />
&lt;script&gt;<br />
&#36;(() =&gt; {<br />
   /* {if &#36;tsAct == ''} */<br />
   new Sortable(document.getElementById('cats_orden'), {<br />
      animation: 150,<br />
      dragClass: "arrastrar", // Clase que puedes modificar<br />
      selectedClass: "seleccionado", // Clase que puedes modificar<br />
      store: {<br />
         // Guardar orden<br />
         set: sortable =&gt; &#36;.post(global_data.url + '/admin-ordenar-categorias.php', 'cats=' + sortable.toArray().join(','))<br />
      }<br />
   });<br />
   /* {/if} */<br />
   &#36;('#cat_img').on('change', () =&gt; {<br />
      &#36;('#c_icon').css({ <br />
         "background": &#36;("#cat_img option:selected").css('background') <br />
      })<br />
   });<br />
})<br />
&lt;/script&gt;<br />
{/if}</code></div></div><br />
más abajo buscan y le borran <span style="color: #c0392b;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">id="cats_orden"</span></span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;table cellpadding="0" cellspacing="0" border="0" width="500" align="center" class="admin_table" id="cats_orden"&gt;</code></div></div><br />
un poco más abajo buscan y le añaden <span style="color: #16a085;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">id="cats_orden"</span></span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;tbody&gt;</code></div></div><br />
abajo buscan<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;tr id="{&#36;c.cid}"&gt;</code></div></div><br />
y lo reemplazan por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;tr id="{&#36;c.cid}" data-id="{&#36;c.cid}"&gt;</code></div></div><br />
Si quieres puedes añadir estas líneas en <span style="font-weight: bold;" class="mycode_b">tema/css/admin.css</span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>.arrastrar {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #EEE;<br />
}<br />
.seleccionado {<br />
&nbsp;&nbsp;&nbsp;&nbsp;background-color: #CCC;<br />
}</code></div></div><br />
Si quieres obtener más información sobre el complemento "<a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">SortableJS</span></a>", puedes acceder a la página que contiene la documentación para que puedas hacer los cambios que desees!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Subir avatar mejorado 12.04.24]]></title>
			<link>https://phpost.es/tema-Complementos-Subir-avatar-mejorado-12-04-24</link>
			<pubDate>Sun, 20 Feb 2022 17:26:30 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Subir-avatar-mejorado-12-04-24</guid>
			<description><![CDATA[En este caso se usará <span style="font-weight: bold;" class="mycode_b">CDN </span>para que sea mejor<br />
<br />
1 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/m.cuenta_sidebar.tpl</span> y reemplazamos todo por esto<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="sidebar-tabs *****"&gt;<br />
   &lt;h3&gt;Mi Avatar&lt;/h3&gt;<br />
   &lt;div class="avatar-big-cont"&gt;<br />
      &lt;div style="display: none" class="avatar-loading"&gt;&lt;/div&gt;<br />
      &lt;img width="120" height="120" alt="" src="{&#36;tsConfig.url}/files/avatar/{if &#36;tsPerfil.p_avatar}{&#36;tsPerfil.user_id}_120{else}avatar{/if}.jpg?t={&#36;smarty.now}" class="avatar-big" id="avatar-img"/&gt;<br />
   &lt;/div&gt;<br />
   &lt;ul class="change-avatar" id="change"&gt;<br />
      &lt;li class="local-file" id="pc" style="width: 50%;text-align:center;"&gt;&lt;span&gt;Local&lt;/span&gt;&lt;/li&gt;<br />
      &lt;li class="url-file" id="url" style="width: 50%;text-align:center;"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;/li&gt;<br />
   &lt;/ul&gt;<br />
   &lt;div class="clearfix"&gt;&lt;/div&gt;<br />
   &lt;a href="javascript:avatar.subir()" class="avatar-next edit" &gt;Editar&lt;/a&gt;<br />
&lt;/div&gt;<br />
&lt;div class="clearfix"&gt;&lt;/div&gt;<br />
&lt;link rel="stylesheet" href="Registrate o inicia tu sesión para ver este contenido@2.3.1/dist/croppr.min.css" integrity="sha256-Bbkel8+0sOmrvX75oDwNElgbmrAP+Pw+XXKKUwoKiVE=" crossorigin="anonymous"&gt;<br />
&lt;script src="Registrate o inicia tu sesión para ver este contenido@2.3.1/dist/croppr.min.js" integrity="sha256-VPADQYvd0gjLaeduvmP9/UZAdNW3D2sJieeJ3a3PX64=" crossorigin="anonymous"&gt;&lt;/script&gt;<br />
<br />
&lt;script src="{&#36;tsConfig.js}/subir-avatar.js?{&#36;smarty.now}"&gt;&lt;/script&gt;</code></div></div><br />
<br />
2 - Creamos un archivo llamado "<span style="font-weight: bold;" class="mycode_b">subir-avatar.js</span>" y lo agregamos en <span style="font-weight: bold;" class="mycode_b">tema/js <span style="color: #c0392b;" class="mycode_color">12.04.2024</span></span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>const next = &#36;(".avatar-next");<br />
const sizeImg = 120;<br />
<br />
function cambiarFile(){<br />
   const input = &#36;('#file-avatar')[0];<br />
   if(input.files &amp;&amp; input.files[0]) {<br />
       let name_file = decodeURIComponent(input.files[0].name);<br />
      document.querySelector(".drop-message").innerHTML = name_file;<br />
      next.removeClass('btn-disabled')<br />
   }   <br />
}<br />
&#36;("#url-avatar").on('keyup', () =&gt; {<br />
   if(&#36;("#url-avatar").val().length &gt; 5) next.removeClass('btn-disabled')<br />
})<br />
&#36;("#change &gt; li, #change &gt; li span").on('click', event =&gt; {<br />
    const block = &#36;("#change")<br />
    block.attr('class', '')<br />
    var tipo = event.target.textContent<br />
    if(tipo === 'Local') {<br />
        block.html(`&lt;div id="drop-region"&gt;<br />
         &lt;input type="file" name="local" id="file-avatar" onchange="return cambiarFile();" class="browse"/&gt;<br />
         &lt;div class="drop-message"&gt;<br />
            Arrastra y suelta la imagen o haz clic para subir<br />
         &lt;/div&gt;<br />
      &lt;/div&gt;`)<br />
    } else {<br />
        block.html(`&lt;div style="margin: 0 auto 10px auto;"&gt;<br />
         &lt;input type="text" name="url" autocomplete="off" id="url-avatar" placeholder="Url de la imagen" class="browse form-control"/&gt;<br />
      &lt;/div&gt;`)<br />
    }<br />
})<br />
<br />
var avatar = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;size: 120,<br />
    uid: false,<br />
    key: false,<br />
   ext: false,<br />
    informacion: '',<br />
    current: false,<br />
    success: false,<br />
    subir: async () =&gt; {<br />
        &#36;(".avatar-loading").show().css('display', 'flex');<br />
        inputs = [].slice.call(document.querySelectorAll(".browse"))<br />
        inputs.forEach(input =&gt; {<br />
            const datoUrl = new FormData();<br />
            datoUrl.append('url', (input.name == 'url') ? input.value : input.files[0])<br />
            <br />
            if(!empty(input.value)) {<br />
                fetch(global_data.url + '/upload-avatar.php', {<br />
                    method: 'POST',<br />
                    body: datoUrl<br />
                })<br />
                .then(response =&gt; response.json())<br />
                .then(blobData =&gt; {<br />
                   avatar.subida_exitosa(blobData)<br />
                });<br />
            }<br />
        })<br />
    },<br />
    subida_exitosa: rsp =&gt; {<br />
        if (rsp.error == 'success') avatar.success = true;<br />
        else if (rsp.msg) {<br />
         avatar.key = rsp.key;<br />
         avatar.ext = rsp.ext;<br />
         avatar.cortar(rsp.msg);<br />
        } else cuenta.enviar_alerta(rsp.error, 0);<br />
        &#36;(".avatar-loading").hide();<br />
    },<br />
    cortar: img =&gt; {<br />
        img = img + '?t=' + new Date();<br />
        mydialog.show(true);<br />
        mydialog.title("Cortar avatar");<br />
        mydialog.body(`&lt;img class="avatar-cortar" src="&#36;{img}" /&gt;`);<br />
        mydialog.buttons(true, true, 'Cortar', "avatar.guardar()", true, false, true, 'Cancelar', 'close', true, true);<br />
        /*mydialog.buttons([<br />
            {mostrar: true, texto: 'Cortar', accion: `avatar.guardar()`, activo: true}, <br />
            {mostrar: true, texto: 'Cancelar', accion: 'cerrar', activo: true}<br />
        ]);*/<br />
        mydialog.center();<br />
        &#36;("#avatar-img, #avatar-menu").attr("src", img).on('load', () =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let sizes = [avatar.size, avatar.size, 'px'];<br />
            var croppr = new Croppr('.avatar-cortar', {<br />
               aspectRatio: 1, // Mantemos el tamanio cuadrado 1:1<br />
               startSize: sizes, <br />
               minSize: sizes,  <br />
                // Enviamos las coordenadas para cortar la imagen<br />
                // Tiene la funcion onCropEnd ya que es como va a quedar<br />
                onCropEnd: data =&gt; avatar.informacion = data,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onCropMove: avatar.vistaPrevia<br />
            });<br />
        });<br />
    },<br />
&nbsp;&nbsp;&nbsp;&nbsp;vistaPrevia: function (coords) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let rx = avatar.size / coords.width;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let ry = avatar.size / coords.height;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;('#avatar-img').css({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: Math.round(rx * coords.width) + 'px',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: Math.round(ry * coords.height) + 'px',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginLeft: '-' + Math.ceil(rx * coords.x) + 'px',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginTop: '-' + Math.round(ry * coords.y) + 'px'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
    recargar: () =&gt; &#36;("#avatar-img").attr("src", avatar.current + '?r' + new Date()),<br />
    guardar: () =&gt; {<br />
        if (empty(avatar.informacion)) <br />
            cuenta.enviar_alerta('Debes seleccionar una parte de la foto', 0);<br />
        else {<br />
            const coordenadas = new FormData();<br />
            coordenadas.append('key', avatar.key)<br />
            coordenadas.append('ext', avatar.ext)<br />
            coordenadas.append('x', avatar.informacion.x)<br />
            coordenadas.append('y', avatar.informacion.y)<br />
            coordenadas.append('w', avatar.informacion.width)<br />
            coordenadas.append('h', avatar.informacion.height)<br />
            fetch(global_data.url + '/upload-crop.php', {<br />
                method: 'POST',<br />
                body: coordenadas<br />
            })<br />
            .then(response =&gt; response.json()) <br />
            .then(blobData =&gt; {<br />
               if(blobData.error == "success") {<br />
                   mydialog.body("Tu avatar se ha creado correctamente, ahora espera que recargue la p&amp;aacute;gina");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.buttons(true, true, 'Aceptar', 'close', true, true, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;("#input_add").hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;(`input[name="url"]`).attr({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value: ''<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
               }<br />
            });<br />
        }<br />
    }<br />
}</code></div></div><br />
<br />
3 - Luego en<span style="font-weight: bold;" class="mycode_b"> tema/js/cuenta.js</span> buscar<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>var avatar = { .....</code></div></div><br />
y borran todo hasta el final del archivo<br />
<br />
4 - Luego van a <span style="font-weight: bold;" class="mycode_b">inc/php/ajax.upload.php</span> y lo reemplazan por esto<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;!&nbsp;</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'TS_HEADER'</span><span style="color: #007700">))&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;se&nbsp;permite&nbsp;el&nbsp;acceso&nbsp;directo&nbsp;al&nbsp;script'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">/**<br /> *&nbsp;Controlador&nbsp;AJAX<br /> *<br /> *&nbsp;@name&nbsp; &nbsp; ajax.upload.php<br /> *&nbsp;@author&nbsp; PHPost&nbsp;Team<br />*/<br />/**********************************&#092;<br /><br />*  &nbsp; (VARIABLES&nbsp;POR&nbsp;DEFAULT)  &nbsp;   &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;NIVELES&nbsp;DE&nbsp;ACCESO&nbsp;Y&nbsp;PLANTILLAS&nbsp;DE&nbsp;CADA&nbsp;ACCIÓN<br /></span><span style="color: #0000BB">  &nbsp; &#36;files&nbsp;</span><span style="color: #007700">=&nbsp;array(<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'upload-avatar'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'upload-crop'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'upload-images'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*&nbsp;(VARIABLES&nbsp;LOCALES&nbsp;ESTE&nbsp;ARCHIVO)  &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;REDEFINIR&nbsp;VARIABLES<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsPage&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'php_files/p.upload.'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsLevel&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'n'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsAjax&nbsp;</span><span style="color: #007700">=&nbsp;empty(</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">])&nbsp;?&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*  &nbsp; (INSTRUCCIONES&nbsp;DE&nbsp;CODIGO)  &nbsp;   &nbsp; *<br /><br />&#092;*********************************/<br /></span><span style="color: #0000BB">  &nbsp; <br />  &nbsp; </span><span style="color: #FF8000">//&nbsp;DEPENDE&nbsp;EL&nbsp;NIVEL<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsLevelMsg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsLevel</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsLevelMsg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{&nbsp;echo&nbsp;</span><span style="color: #DD0000">'0:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsLevelMsg</span><span style="color: #007700">[</span><span style="color: #DD0000">'mensaje'</span><span style="color: #007700">];&nbsp;die();}<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;CLASE<br /></span><span style="color: #0000BB">  &nbsp; require</span><span style="color: #007700">(</span><span style="color: #DD0000">'../class/c.upload.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsUpload&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsUpload</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;CODIGO<br /></span><span style="color: #0000BB">  &nbsp; switch</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">){<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'upload-avatar'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//&nbsp;&lt;--<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image_scale&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image_size</span><span style="color: #007700">[</span><span style="color: #DD0000">'w'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">640</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image_size</span><span style="color: #007700">[</span><span style="color: #DD0000">'h'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">480</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file_url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newUpload</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; echo&nbsp;json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;result</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//&nbsp;--&gt;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'upload-crop'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//&nbsp;&lt;--<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; echo&nbsp;json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cropAvatar</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">uid</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;PARA&nbsp;EL&nbsp;PERFIL<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'UPDATE&nbsp;u_perfil&nbsp;SET&nbsp;p_avatar&nbsp;=&nbsp;1&nbsp;WHERE&nbsp;user_id&nbsp;=&nbsp;'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">uid</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;--&gt;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'upload-images'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; echo&nbsp;json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newUpload</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
Eso es todo...]]></description>
			<content:encoded><![CDATA[En este caso se usará <span style="font-weight: bold;" class="mycode_b">CDN </span>para que sea mejor<br />
<br />
1 - En <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/m.cuenta_sidebar.tpl</span> y reemplazamos todo por esto<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="sidebar-tabs *****"&gt;<br />
   &lt;h3&gt;Mi Avatar&lt;/h3&gt;<br />
   &lt;div class="avatar-big-cont"&gt;<br />
      &lt;div style="display: none" class="avatar-loading"&gt;&lt;/div&gt;<br />
      &lt;img width="120" height="120" alt="" src="{&#36;tsConfig.url}/files/avatar/{if &#36;tsPerfil.p_avatar}{&#36;tsPerfil.user_id}_120{else}avatar{/if}.jpg?t={&#36;smarty.now}" class="avatar-big" id="avatar-img"/&gt;<br />
   &lt;/div&gt;<br />
   &lt;ul class="change-avatar" id="change"&gt;<br />
      &lt;li class="local-file" id="pc" style="width: 50%;text-align:center;"&gt;&lt;span&gt;Local&lt;/span&gt;&lt;/li&gt;<br />
      &lt;li class="url-file" id="url" style="width: 50%;text-align:center;"&gt;&lt;span&gt;Url&lt;/span&gt;&lt;/li&gt;<br />
   &lt;/ul&gt;<br />
   &lt;div class="clearfix"&gt;&lt;/div&gt;<br />
   &lt;a href="javascript:avatar.subir()" class="avatar-next edit" &gt;Editar&lt;/a&gt;<br />
&lt;/div&gt;<br />
&lt;div class="clearfix"&gt;&lt;/div&gt;<br />
&lt;link rel="stylesheet" href="Registrate o inicia tu sesión para ver este contenido@2.3.1/dist/croppr.min.css" integrity="sha256-Bbkel8+0sOmrvX75oDwNElgbmrAP+Pw+XXKKUwoKiVE=" crossorigin="anonymous"&gt;<br />
&lt;script src="Registrate o inicia tu sesión para ver este contenido@2.3.1/dist/croppr.min.js" integrity="sha256-VPADQYvd0gjLaeduvmP9/UZAdNW3D2sJieeJ3a3PX64=" crossorigin="anonymous"&gt;&lt;/script&gt;<br />
<br />
&lt;script src="{&#36;tsConfig.js}/subir-avatar.js?{&#36;smarty.now}"&gt;&lt;/script&gt;</code></div></div><br />
<br />
2 - Creamos un archivo llamado "<span style="font-weight: bold;" class="mycode_b">subir-avatar.js</span>" y lo agregamos en <span style="font-weight: bold;" class="mycode_b">tema/js <span style="color: #c0392b;" class="mycode_color">12.04.2024</span></span><br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>const next = &#36;(".avatar-next");<br />
const sizeImg = 120;<br />
<br />
function cambiarFile(){<br />
   const input = &#36;('#file-avatar')[0];<br />
   if(input.files &amp;&amp; input.files[0]) {<br />
       let name_file = decodeURIComponent(input.files[0].name);<br />
      document.querySelector(".drop-message").innerHTML = name_file;<br />
      next.removeClass('btn-disabled')<br />
   }   <br />
}<br />
&#36;("#url-avatar").on('keyup', () =&gt; {<br />
   if(&#36;("#url-avatar").val().length &gt; 5) next.removeClass('btn-disabled')<br />
})<br />
&#36;("#change &gt; li, #change &gt; li span").on('click', event =&gt; {<br />
    const block = &#36;("#change")<br />
    block.attr('class', '')<br />
    var tipo = event.target.textContent<br />
    if(tipo === 'Local') {<br />
        block.html(`&lt;div id="drop-region"&gt;<br />
         &lt;input type="file" name="local" id="file-avatar" onchange="return cambiarFile();" class="browse"/&gt;<br />
         &lt;div class="drop-message"&gt;<br />
            Arrastra y suelta la imagen o haz clic para subir<br />
         &lt;/div&gt;<br />
      &lt;/div&gt;`)<br />
    } else {<br />
        block.html(`&lt;div style="margin: 0 auto 10px auto;"&gt;<br />
         &lt;input type="text" name="url" autocomplete="off" id="url-avatar" placeholder="Url de la imagen" class="browse form-control"/&gt;<br />
      &lt;/div&gt;`)<br />
    }<br />
})<br />
<br />
var avatar = {<br />
&nbsp;&nbsp;&nbsp;&nbsp;size: 120,<br />
    uid: false,<br />
    key: false,<br />
   ext: false,<br />
    informacion: '',<br />
    current: false,<br />
    success: false,<br />
    subir: async () =&gt; {<br />
        &#36;(".avatar-loading").show().css('display', 'flex');<br />
        inputs = [].slice.call(document.querySelectorAll(".browse"))<br />
        inputs.forEach(input =&gt; {<br />
            const datoUrl = new FormData();<br />
            datoUrl.append('url', (input.name == 'url') ? input.value : input.files[0])<br />
            <br />
            if(!empty(input.value)) {<br />
                fetch(global_data.url + '/upload-avatar.php', {<br />
                    method: 'POST',<br />
                    body: datoUrl<br />
                })<br />
                .then(response =&gt; response.json())<br />
                .then(blobData =&gt; {<br />
                   avatar.subida_exitosa(blobData)<br />
                });<br />
            }<br />
        })<br />
    },<br />
    subida_exitosa: rsp =&gt; {<br />
        if (rsp.error == 'success') avatar.success = true;<br />
        else if (rsp.msg) {<br />
         avatar.key = rsp.key;<br />
         avatar.ext = rsp.ext;<br />
         avatar.cortar(rsp.msg);<br />
        } else cuenta.enviar_alerta(rsp.error, 0);<br />
        &#36;(".avatar-loading").hide();<br />
    },<br />
    cortar: img =&gt; {<br />
        img = img + '?t=' + new Date();<br />
        mydialog.show(true);<br />
        mydialog.title("Cortar avatar");<br />
        mydialog.body(`&lt;img class="avatar-cortar" src="&#36;{img}" /&gt;`);<br />
        mydialog.buttons(true, true, 'Cortar', "avatar.guardar()", true, false, true, 'Cancelar', 'close', true, true);<br />
        /*mydialog.buttons([<br />
            {mostrar: true, texto: 'Cortar', accion: `avatar.guardar()`, activo: true}, <br />
            {mostrar: true, texto: 'Cancelar', accion: 'cerrar', activo: true}<br />
        ]);*/<br />
        mydialog.center();<br />
        &#36;("#avatar-img, #avatar-menu").attr("src", img).on('load', () =&gt; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let sizes = [avatar.size, avatar.size, 'px'];<br />
            var croppr = new Croppr('.avatar-cortar', {<br />
               aspectRatio: 1, // Mantemos el tamanio cuadrado 1:1<br />
               startSize: sizes, <br />
               minSize: sizes,  <br />
                // Enviamos las coordenadas para cortar la imagen<br />
                // Tiene la funcion onCropEnd ya que es como va a quedar<br />
                onCropEnd: data =&gt; avatar.informacion = data,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; onCropMove: avatar.vistaPrevia<br />
            });<br />
        });<br />
    },<br />
&nbsp;&nbsp;&nbsp;&nbsp;vistaPrevia: function (coords) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let rx = avatar.size / coords.width;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let ry = avatar.size / coords.height;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#36;('#avatar-img').css({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width: Math.round(rx * coords.width) + 'px',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height: Math.round(ry * coords.height) + 'px',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginLeft: '-' + Math.ceil(rx * coords.x) + 'px',<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;marginTop: '-' + Math.round(ry * coords.y) + 'px'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />
&nbsp;&nbsp;&nbsp;&nbsp;},<br />
    recargar: () =&gt; &#36;("#avatar-img").attr("src", avatar.current + '?r' + new Date()),<br />
    guardar: () =&gt; {<br />
        if (empty(avatar.informacion)) <br />
            cuenta.enviar_alerta('Debes seleccionar una parte de la foto', 0);<br />
        else {<br />
            const coordenadas = new FormData();<br />
            coordenadas.append('key', avatar.key)<br />
            coordenadas.append('ext', avatar.ext)<br />
            coordenadas.append('x', avatar.informacion.x)<br />
            coordenadas.append('y', avatar.informacion.y)<br />
            coordenadas.append('w', avatar.informacion.width)<br />
            coordenadas.append('h', avatar.informacion.height)<br />
            fetch(global_data.url + '/upload-crop.php', {<br />
                method: 'POST',<br />
                body: coordenadas<br />
            })<br />
            .then(response =&gt; response.json()) <br />
            .then(blobData =&gt; {<br />
               if(blobData.error == "success") {<br />
                   mydialog.body("Tu avatar se ha creado correctamente, ahora espera que recargue la p&amp;aacute;gina");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mydialog.buttons(true, true, 'Aceptar', 'close', true, true, false);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;("#input_add").hide();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#36;(`input[name="url"]`).attr({<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value: ''<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })<br />
               }<br />
            });<br />
        }<br />
    }<br />
}</code></div></div><br />
<br />
3 - Luego en<span style="font-weight: bold;" class="mycode_b"> tema/js/cuenta.js</span> buscar<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>var avatar = { .....</code></div></div><br />
y borran todo hasta el final del archivo<br />
<br />
4 - Luego van a <span style="font-weight: bold;" class="mycode_b">inc/php/ajax.upload.php</span> y lo reemplazan por esto<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;!&nbsp;</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'TS_HEADER'</span><span style="color: #007700">))&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;se&nbsp;permite&nbsp;el&nbsp;acceso&nbsp;directo&nbsp;al&nbsp;script'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">/**<br /> *&nbsp;Controlador&nbsp;AJAX<br /> *<br /> *&nbsp;@name&nbsp; &nbsp; ajax.upload.php<br /> *&nbsp;@author&nbsp; PHPost&nbsp;Team<br />*/<br />/**********************************&#092;<br /><br />*  &nbsp; (VARIABLES&nbsp;POR&nbsp;DEFAULT)  &nbsp;   &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;NIVELES&nbsp;DE&nbsp;ACCESO&nbsp;Y&nbsp;PLANTILLAS&nbsp;DE&nbsp;CADA&nbsp;ACCIÓN<br /></span><span style="color: #0000BB">  &nbsp; &#36;files&nbsp;</span><span style="color: #007700">=&nbsp;array(<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'upload-avatar'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'upload-crop'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'upload-images'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">),<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*&nbsp;(VARIABLES&nbsp;LOCALES&nbsp;ESTE&nbsp;ARCHIVO)  &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;REDEFINIR&nbsp;VARIABLES<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsPage&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'php_files/p.upload.'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsLevel&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'n'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsAjax&nbsp;</span><span style="color: #007700">=&nbsp;empty(</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">])&nbsp;?&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*  &nbsp; (INSTRUCCIONES&nbsp;DE&nbsp;CODIGO)  &nbsp;   &nbsp; *<br /><br />&#092;*********************************/<br /></span><span style="color: #0000BB">  &nbsp; <br />  &nbsp; </span><span style="color: #FF8000">//&nbsp;DEPENDE&nbsp;EL&nbsp;NIVEL<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsLevelMsg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsLevel</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsLevelMsg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{&nbsp;echo&nbsp;</span><span style="color: #DD0000">'0:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsLevelMsg</span><span style="color: #007700">[</span><span style="color: #DD0000">'mensaje'</span><span style="color: #007700">];&nbsp;die();}<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;CLASE<br /></span><span style="color: #0000BB">  &nbsp; require</span><span style="color: #007700">(</span><span style="color: #DD0000">'../class/c.upload.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; &#36;tsUpload&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">tsUpload</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #FF8000">//&nbsp;CODIGO<br /></span><span style="color: #0000BB">  &nbsp; switch</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">){<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'upload-avatar'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//&nbsp;&lt;--<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image_scale&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image_size</span><span style="color: #007700">[</span><span style="color: #DD0000">'w'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">640</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">image_size</span><span style="color: #007700">[</span><span style="color: #DD0000">'h'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">480</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">file_url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newUpload</span><span style="color: #007700">(</span><span style="color: #0000BB">3</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; echo&nbsp;json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;result</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//&nbsp;--&gt;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'upload-crop'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">//&nbsp;&lt;--<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; echo&nbsp;json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">cropAvatar</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">uid</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;PARA&nbsp;EL&nbsp;PERFIL<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'UPDATE&nbsp;u_perfil&nbsp;SET&nbsp;p_avatar&nbsp;=&nbsp;1&nbsp;WHERE&nbsp;user_id&nbsp;=&nbsp;'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">uid</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;--&gt;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; case&nbsp;</span><span style="color: #DD0000">'upload-images'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; echo&nbsp;json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsUpload</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newUpload</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; break</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
Eso es todo...]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Redes sociales en perfil [Mejorado][Simplificado] versión 2024]]></title>
			<link>https://phpost.es/tema-Sugerencias-Redes-sociales-en-perfil-Mejorado-Simplificado-versi%C3%B3n-2024</link>
			<pubDate>Sun, 20 Feb 2022 00:36:16 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Sugerencias-Redes-sociales-en-perfil-Mejorado-Simplificado-versi%C3%B3n-2024</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Redes sociales en perfil</span><br />
Mejorado y simplificado</span></div>
Esto es una forma mucho más rápida y sencilla de poder añadir redes sociales a su sitio<br />
<br />
Nueva versión.<br />
<br />
En<span style="font-weight: bold;" class="mycode_b"> inc/ext/<span style="color: #16a085;" class="mycode_color">datos.php</span></span> al final agregar esto<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;redes&nbsp;</span><span style="color: #007700">=&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'facebook'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'devicon:facebook'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Facebook'</span><span style="color: #007700">,</span><span style="color: #0000BB"> <br />  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'twitter'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'devicon:twitter'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Twitter'</span><span style="color: #007700">,</span><span style="color: #0000BB"> <br />  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'instagram'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'skill-icons:instagram'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Instagram'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'youtube'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'logos:youtube-icon'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Youtube'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'twitch'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'logos:twitch'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Twitch'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'tiktok'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'logos:tiktok-icon'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Tiktok'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido@'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'discord'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'skill-icons:discord'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Discord'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido<br />  &nbsp; ],<br />  &nbsp; '</span><span style="color: #0000BB">reddit</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;[<br />  &nbsp;   &nbsp; '</span><span style="color: #0000BB">iconify</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;'</span><span style="color: #0000BB">logos</span><span style="color: #007700">:</span><span style="color: #0000BB">reddit</span><span style="color: #007700">-</span><span style="color: #0000BB">icon</span><span style="color: #DD0000">',<br />  &nbsp;   &nbsp; '</span><span style="color: #0000BB">nombre</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;'</span><span style="color: #0000BB">Reddit</span><span style="color: #DD0000">',<br />  &nbsp;   &nbsp; '</span><span style="color: #0000BB">url</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;'</span><span style="color: #0000BB">Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido<br />  &nbsp; </span><span style="color: #007700">]<br />];&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">inc/class/<span style="color: #16a085;" class="mycode_color">c.cuenta.php</span></span> en la funcion <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">loadPerfil()</span></span> debajo de<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;perfilInfo&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">unData</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
Agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Redes&nbsp;viculadas <br /></span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">[</span><span style="color: #DD0000">'socials'</span><span style="color: #007700">]&nbsp;=&nbsp;empty(</span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_socials'</span><span style="color: #007700">])&nbsp;?&nbsp;</span><span style="color: #DD0000">''&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_socials'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
<br />
En la función <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">unData()</span></span> buscar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'f'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'t'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">];</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
y reemplazar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Redes&nbsp;sociales<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"redes"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;redes</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;!=&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)&nbsp;?&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">)&nbsp;:&nbsp;[];<br />foreach&nbsp;(</span><span style="color: #0000BB">&#36;redes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;name&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;valor</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">&#36;name</span><span style="color: #007700">];&nbsp;<br /></span></code></div></div></div><br />
<br />
En la función <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">loadHeadInfo()</span></span> buscar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'f'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'t'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">];</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
y lo reemplazan por<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Redes&nbsp;Sociales<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />if(!empty(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp; &#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; foreach&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;redes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;name&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;valor</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">&#36;name</span><span style="color: #007700">];<br />}&nbsp;<br /></span></code></div></div></div><br />
<br />
En la función <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">savePerfil()</span></span> buscar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;EXTERNAS<br /></span><span style="color: #0000BB">&#36;facebook&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'facebook'</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">&#36;twitter&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'twitter'</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y lo reemplazan por<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;EXTERNAS,&nbsp;Redes&nbsp;sociales<br /></span><span style="color: #0000BB">&#36;red__social&nbsp;</span><span style="color: #007700">=&nbsp;[];<br />foreach&nbsp;(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"red"</span><span style="color: #007700">]&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;llave&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;id</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;red__social</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;llave</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;id</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
luego buscan <br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'socials'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">serialize</span><span style="color: #007700">(array(</span><span style="color: #0000BB">&#36;facebook</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;twitter</span><span style="color: #007700">)),</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
y lo cambian por <br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'socials'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;red__social</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="color: #16a085;" class="mycode_color">cuenta.php</span></span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsPerfil"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsPerfil</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
debajo agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsRedes"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;redes</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="color: #16a085;" class="mycode_color">perfil.php</span></span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsInfo"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsInfo</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsRedes"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;redes</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/<span style="color: #16a085;" class="mycode_color">m.cuenta_perfil_me.tpl</span></span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="field"&gt;<br />
    &lt;label for="ft"&gt;Redes sociales&lt;/label&gt;<br />
    &lt;img src="{&#36;tsConfig.default}/images/icons/facebook.png" width="16" height="16" style="margin:5px; float:left" /&gt;<br />
    &lt;strong&gt;facebook.com/&lt;/strong&gt;&lt;input type="text" value="{&#36;tsPerfil.p_socials.f}" maxlength="64" name="facebook" id="ft" class="text cuenta-save-2" style="width:204px"&gt;&lt;br /&gt;<br />
    &lt;img src="{&#36;tsConfig.default}/images/icons/twitter.png" width="16" height="16" style="margin:8px 5px 5px 160px; float:left" /&gt;<br />
    &lt;strong&gt;twitter.com/&lt;/strong&gt;&lt;input type="text" value="{&#36;tsPerfil.p_socials.t}" maxlength="64" name="twitter" id="ft2" class="text cuenta-save-2" style="margin-top:3px; width:204px"&gt;&lt;br /&gt;<br />
&lt;/div&gt;</code></div></div><br />
y lo reemplazan por<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="field"&gt;<br />
    &lt;label for="ft"&gt;Redes sociales&lt;/label&gt;<br />
    &lt;div style="display:grid;gap:.3rem;grid-template-columns: repeat(2, 1fr);"&gt;<br />
      {foreach from=&#36;tsRedes key=name item=red}<br />
         &lt;div class="red-item"&gt;<br />
            &lt;iconify-icon icon="{&#36;red.iconify}"&gt;&lt;/iconify-icon&gt;<br />
            &lt;input type="text" class="text" value="{&#36;tsPerfil.p_socials.&#36;name}" placeholder="{&#36;red.nombre}" name="red[{&#36;name}]"&gt;<br />
         &lt;/div&gt;<br />
      {/foreach}<br />
    &lt;/div&gt;<br />
&lt;/div&gt;</code></div></div><br />
En <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/<span style="color: #16a085;" class="mycode_color">m.perfil_sidebar.tpl</span></span> y arriba de (En realidad lo pueden poner donde ustedes quieran)<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div style="margin-bottom: 10px"&gt;<br />
    {&#36;tsConfig.ads_300}<br />
&lt;/div&gt;</code></div></div><br />
agregan <br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsInfo.p_socials != ''}<br />
&lt;div class="widget w-seguidores clearfix"&gt;<br />
    &lt;div class="title-w clearfix"&gt;<br />
        &lt;h3&gt;Redes Sociales&lt;/h3&gt;<br />
    &lt;/div&gt;<br />
    &lt;div&gt;<br />
          {assign var="redesConContenido" value=[]}<br />
      {assign var="redesSinContenido" value=[]}<br />
<br />
      {foreach &#36;tsRedes key=name item=red}<br />
         {if &#36;tsInfo.p_socials.&#36;name != ''}<br />
            {assign var="redConContenido" value="&lt;a class='sitio icon icon_&#36;name' target='_blank' href='{&#36;red.url}/{&#36;tsInfo.p_socials.&#36;name}' title='{&#36;red.nombre}' class=''&gt;&lt;/a&gt;"}<br />
            {append var="redesConContenido" value=&#36;redConContenido}<br />
         {else}<br />
            {assign var="redSinContenido" value="&lt;span class='sitio icon icon_&#36;name icon_off'&gt;&lt;/span&gt;"}<br />
            {append var="redesSinContenido" value=&#36;redSinContenido}<br />
         {/if}<br />
      {/foreach}<br />
<br />
      {foreach from=&#36;redesConContenido as &#36;redConContenidoItem}<br />
         {&#36;redConContenidoItem}<br />
      {/foreach}<br />
<br />
      {foreach from=&#36;redesSinContenido as &#36;redSinContenidoItem}<br />
         {&#36;redSinContenidoItem}<br />
      {/foreach}<br />
      &lt;/div&gt;<br />
      &lt;br&gt;<br />
{/if}</code></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">perfil.css</span> agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>.icon {<br />
    display: inline-block;<br />
    width: 2rem;<br />
    height: 2rem;<br />
    margin: 0.3rem;<br />
}<br />
.icon.icon_off {<br />
    opacity: .5;<br />
}<br />
.icon.icon_facebook {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_twitter {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_instagram {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_youtube {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_twitch {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_tiktok {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_discord {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_reddit {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}</code></div></div><br />
<br />
Por último <span style="font-weight: bold;" class="mycode_b">tema/templates/<span style="color: #16a085;" class="mycode_color">t.cuenta.tpl</span> </span>arriba de <span style="font-weight: bold;" class="mycode_b">{include file="sections/main_footer.tpl"}</span> agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">&lt;</span><span style="color: #0000BB">script&nbsp;src</span><span style="color: #007700">=</span><span style="color: #DD0000">"Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido"</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">script</span><span style="color: #007700">&gt;&nbsp;<br /></span></code></div></div></div><br />
En cuenta<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
En perfil (los de poco color es que no tienen enlaces y no tienen enlace, en cuando vayan agregando los enlaces se verá el color completo)<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: large;" class="mycode_size">Redes sociales en perfil</span><br />
Mejorado y simplificado</span></div>
Esto es una forma mucho más rápida y sencilla de poder añadir redes sociales a su sitio<br />
<br />
Nueva versión.<br />
<br />
En<span style="font-weight: bold;" class="mycode_b"> inc/ext/<span style="color: #16a085;" class="mycode_color">datos.php</span></span> al final agregar esto<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;redes&nbsp;</span><span style="color: #007700">=&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'facebook'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'devicon:facebook'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Facebook'</span><span style="color: #007700">,</span><span style="color: #0000BB"> <br />  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'twitter'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'devicon:twitter'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Twitter'</span><span style="color: #007700">,</span><span style="color: #0000BB"> <br />  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'instagram'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'skill-icons:instagram'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Instagram'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'youtube'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'logos:youtube-icon'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Youtube'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'twitch'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'logos:twitch'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Twitch'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'tiktok'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'logos:tiktok-icon'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Tiktok'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido@'<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #DD0000">'discord'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'iconify'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'skill-icons:discord'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'nombre'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Discord'</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #DD0000">'url'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido<br />  &nbsp; ],<br />  &nbsp; '</span><span style="color: #0000BB">reddit</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;[<br />  &nbsp;   &nbsp; '</span><span style="color: #0000BB">iconify</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;'</span><span style="color: #0000BB">logos</span><span style="color: #007700">:</span><span style="color: #0000BB">reddit</span><span style="color: #007700">-</span><span style="color: #0000BB">icon</span><span style="color: #DD0000">',<br />  &nbsp;   &nbsp; '</span><span style="color: #0000BB">nombre</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;'</span><span style="color: #0000BB">Reddit</span><span style="color: #DD0000">',<br />  &nbsp;   &nbsp; '</span><span style="color: #0000BB">url</span><span style="color: #DD0000">'&nbsp;=&gt;&nbsp;'</span><span style="color: #0000BB">Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido<br />  &nbsp; </span><span style="color: #007700">]<br />];&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">inc/class/<span style="color: #16a085;" class="mycode_color">c.cuenta.php</span></span> en la funcion <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">loadPerfil()</span></span> debajo de<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;perfilInfo&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">unData</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
Agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Redes&nbsp;viculadas <br /></span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">[</span><span style="color: #DD0000">'socials'</span><span style="color: #007700">]&nbsp;=&nbsp;empty(</span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_socials'</span><span style="color: #007700">])&nbsp;?&nbsp;</span><span style="color: #DD0000">''&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;perfilInfo</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_socials'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
<br />
En la función <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">unData()</span></span> buscar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'f'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'t'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">];</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
y reemplazar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Redes&nbsp;sociales<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"redes"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;redes</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;!=&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)&nbsp;?&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">)&nbsp;:&nbsp;[];<br />foreach&nbsp;(</span><span style="color: #0000BB">&#36;redes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;name&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;valor</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">&#36;name</span><span style="color: #007700">];&nbsp;<br /></span></code></div></div></div><br />
<br />
En la función <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">loadHeadInfo()</span></span> buscar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">unserialize</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'f'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #DD0000">'t'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">1</span><span style="color: #007700">];</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
y lo reemplazan por<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Redes&nbsp;Sociales<br /></span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br />if(!empty(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp; &#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; foreach&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;redes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;name&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;valor</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">'p_socials'</span><span style="color: #007700">][</span><span style="color: #0000BB">&#36;name</span><span style="color: #007700">];<br />}&nbsp;<br /></span></code></div></div></div><br />
<br />
En la función <span style="color: #8e44ad;" class="mycode_color"><span style="font-weight: bold;" class="mycode_b">savePerfil()</span></span> buscar<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;EXTERNAS<br /></span><span style="color: #0000BB">&#36;facebook&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'facebook'</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">&#36;twitter&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'twitter'</span><span style="color: #007700">]),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y lo reemplazan por<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;EXTERNAS,&nbsp;Redes&nbsp;sociales<br /></span><span style="color: #0000BB">&#36;red__social&nbsp;</span><span style="color: #007700">=&nbsp;[];<br />foreach&nbsp;(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"red"</span><span style="color: #007700">]&nbsp;as&nbsp;</span><span style="color: #0000BB">&#36;llave&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;id</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;red__social</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;llave</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;id</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
luego buscan <br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'socials'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">serialize</span><span style="color: #007700">(array(</span><span style="color: #0000BB">&#36;facebook</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;twitter</span><span style="color: #007700">)),</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
y lo cambian por <br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #DD0000">'socials'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">json_encode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;red__social</span><span style="color: #007700">),&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="color: #16a085;" class="mycode_color">cuenta.php</span></span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsPerfil"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsPerfil</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
debajo agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsRedes"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;redes</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="color: #16a085;" class="mycode_color">perfil.php</span></span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsInfo"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsInfo</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsRedes"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;redes</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/<span style="color: #16a085;" class="mycode_color">m.cuenta_perfil_me.tpl</span></span> buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="field"&gt;<br />
    &lt;label for="ft"&gt;Redes sociales&lt;/label&gt;<br />
    &lt;img src="{&#36;tsConfig.default}/images/icons/facebook.png" width="16" height="16" style="margin:5px; float:left" /&gt;<br />
    &lt;strong&gt;facebook.com/&lt;/strong&gt;&lt;input type="text" value="{&#36;tsPerfil.p_socials.f}" maxlength="64" name="facebook" id="ft" class="text cuenta-save-2" style="width:204px"&gt;&lt;br /&gt;<br />
    &lt;img src="{&#36;tsConfig.default}/images/icons/twitter.png" width="16" height="16" style="margin:8px 5px 5px 160px; float:left" /&gt;<br />
    &lt;strong&gt;twitter.com/&lt;/strong&gt;&lt;input type="text" value="{&#36;tsPerfil.p_socials.t}" maxlength="64" name="twitter" id="ft2" class="text cuenta-save-2" style="margin-top:3px; width:204px"&gt;&lt;br /&gt;<br />
&lt;/div&gt;</code></div></div><br />
y lo reemplazan por<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="field"&gt;<br />
    &lt;label for="ft"&gt;Redes sociales&lt;/label&gt;<br />
    &lt;div style="display:grid;gap:.3rem;grid-template-columns: repeat(2, 1fr);"&gt;<br />
      {foreach from=&#36;tsRedes key=name item=red}<br />
         &lt;div class="red-item"&gt;<br />
            &lt;iconify-icon icon="{&#36;red.iconify}"&gt;&lt;/iconify-icon&gt;<br />
            &lt;input type="text" class="text" value="{&#36;tsPerfil.p_socials.&#36;name}" placeholder="{&#36;red.nombre}" name="red[{&#36;name}]"&gt;<br />
         &lt;/div&gt;<br />
      {/foreach}<br />
    &lt;/div&gt;<br />
&lt;/div&gt;</code></div></div><br />
En <span style="font-weight: bold;" class="mycode_b">tema/templates/modules/<span style="color: #16a085;" class="mycode_color">m.perfil_sidebar.tpl</span></span> y arriba de (En realidad lo pueden poner donde ustedes quieran)<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div style="margin-bottom: 10px"&gt;<br />
    {&#36;tsConfig.ads_300}<br />
&lt;/div&gt;</code></div></div><br />
agregan <br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{if &#36;tsInfo.p_socials != ''}<br />
&lt;div class="widget w-seguidores clearfix"&gt;<br />
    &lt;div class="title-w clearfix"&gt;<br />
        &lt;h3&gt;Redes Sociales&lt;/h3&gt;<br />
    &lt;/div&gt;<br />
    &lt;div&gt;<br />
          {assign var="redesConContenido" value=[]}<br />
      {assign var="redesSinContenido" value=[]}<br />
<br />
      {foreach &#36;tsRedes key=name item=red}<br />
         {if &#36;tsInfo.p_socials.&#36;name != ''}<br />
            {assign var="redConContenido" value="&lt;a class='sitio icon icon_&#36;name' target='_blank' href='{&#36;red.url}/{&#36;tsInfo.p_socials.&#36;name}' title='{&#36;red.nombre}' class=''&gt;&lt;/a&gt;"}<br />
            {append var="redesConContenido" value=&#36;redConContenido}<br />
         {else}<br />
            {assign var="redSinContenido" value="&lt;span class='sitio icon icon_&#36;name icon_off'&gt;&lt;/span&gt;"}<br />
            {append var="redesSinContenido" value=&#36;redSinContenido}<br />
         {/if}<br />
      {/foreach}<br />
<br />
      {foreach from=&#36;redesConContenido as &#36;redConContenidoItem}<br />
         {&#36;redConContenidoItem}<br />
      {/foreach}<br />
<br />
      {foreach from=&#36;redesSinContenido as &#36;redSinContenidoItem}<br />
         {&#36;redSinContenidoItem}<br />
      {/foreach}<br />
      &lt;/div&gt;<br />
      &lt;br&gt;<br />
{/if}</code></div></div><br />
<br />
En <span style="font-weight: bold;" class="mycode_b">perfil.css</span> agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>.icon {<br />
    display: inline-block;<br />
    width: 2rem;<br />
    height: 2rem;<br />
    margin: 0.3rem;<br />
}<br />
.icon.icon_off {<br />
    opacity: .5;<br />
}<br />
.icon.icon_facebook {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_twitter {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_instagram {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_youtube {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_twitch {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_tiktok {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_discord {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}<br />
.icon.icon_reddit {<br />
    background: url('Registrate o inicia tu sesión para ver este contenido no-repeat center center / contain;<br />
}</code></div></div><br />
<br />
Por último <span style="font-weight: bold;" class="mycode_b">tema/templates/<span style="color: #16a085;" class="mycode_color">t.cuenta.tpl</span> </span>arriba de <span style="font-weight: bold;" class="mycode_b">{include file="sections/main_footer.tpl"}</span> agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">&lt;</span><span style="color: #0000BB">script&nbsp;src</span><span style="color: #007700">=</span><span style="color: #DD0000">"Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido"</span><span style="color: #007700">&gt;&lt;/</span><span style="color: #0000BB">script</span><span style="color: #007700">&gt;&nbsp;<br /></span></code></div></div></div><br />
En cuenta<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
En perfil (los de poco color es que no tienen enlaces y no tienen enlace, en cuando vayan agregando los enlaces se verá el color completo)<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Inicio dual (login & registro)]]></title>
			<link>https://phpost.es/tema-Complementos-Inicio-dual-login-registro</link>
			<pubDate>Wed, 16 Feb 2022 21:21:24 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Inicio-dual-login-registro</guid>
			<description><![CDATA[Este "mod" es dual ya que tiene el <span style="font-weight: bold;" class="mycode_b">login</span> y <span style="font-weight: bold;" class="mycode_b">registro</span>, esta realizado de forma que al ingresar a al sitio tengas que registrarte o loguearte de forma obligatoria...<br />
<br />
una vista previa de como quedará<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
Bueno comencemos <br />
1 - En <span style="font-weight: bold;" class="mycode_b">header.php</span> buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; define</span><span style="color: #007700">(</span><span style="color: #DD0000">'TS_TEMA'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsTema</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y debajo agregamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;El&nbsp;tipo&nbsp;de&nbsp;inicio <br /></span><span style="color: #0000BB"> &nbsp; define</span><span style="color: #007700">(</span><span style="color: #DD0000">'INICIO_DUAL'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">TRUE</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
2 - Buscamos en <span style="font-weight: bold;" class="mycode_b">index.php</span><br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Checamos...<br /></span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'c_allow_portal'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">is_member&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'do'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'portal'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">//&nbsp;Portal/mi<br /></span><span style="color: #0000BB"> &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">'inc/php/portal.php'</span><span style="color: #007700">);<br />}&nbsp;else&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">//&nbsp;Home<br /></span><span style="color: #0000BB"> &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">'inc/php/posts.php'</span><span style="color: #007700">);<br />}&nbsp;<br /></span></code></div></div></div><br />
y la reemplazamos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;Dependiendo&nbsp;de&nbsp;la&nbsp;configuración<br />&nbsp;*&nbsp;Solo&nbsp;aplicará&nbsp;el&nbsp;dual&nbsp;si&nbsp;ambos&nbsp;son&nbsp;"TRUE"<br />*/<br /></span><span style="color: #007700">if(</span><span style="color: #0000BB">INICIO_DUAL&nbsp;</span><span style="color: #007700">AND&nbsp;!</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">is_member</span><span style="color: #007700">)&nbsp;include&nbsp;</span><span style="color: #DD0000">'inc/php/dual.php'</span><span style="color: #007700">;<br />else&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">//&nbsp;Checamos...<br /></span><span style="color: #0000BB"> &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'c_allow_portal'</span><span style="color: #007700">])&nbsp;==&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">is_member&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'do'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'portal'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;Portal/mi<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include(</span><span style="color: #DD0000">'inc/php/portal.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;else&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;Home<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include(</span><span style="color: #DD0000">'inc/php/posts.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}<br />}&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Descargan los archivos</span></a> y los ponen en las rutas correspondientes<br />
 * <span style="font-weight: bold;" class="mycode_b">dual.php</span> en inc/php/<br />
 * <span style="font-weight: bold;" class="mycode_b">dual.css</span> en tema/css/<br />
 * <span style="font-weight: bold;" class="mycode_b">dual.js</span> en tema/js/<br />
 * <span style="font-weight: bold;" class="mycode_b">t.dual.tpl</span> en tema/templates/<br />
<br />
4 - Ir a <span style="font-weight: bold;" class="mycode_b">inc/class/c.registro.php</span> y buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;tsData&nbsp;</span><span style="color: #007700">=&nbsp;array(<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_nick'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'nick'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_password'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'password'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_email'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'email'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_dia'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'dia'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_mes'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'mes'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_anio'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'anio'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_sexo'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'sexo'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'f'&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #DD0000">'0'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_pais'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">strtoupper</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'pais'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_estado'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'estado'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_terminos'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'terminos'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_captcha'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'g-recaptcha-response'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_registro'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">time</span><span style="color: #007700">(),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y la reemplazan por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;tsData&nbsp;</span><span style="color: #007700">=&nbsp;array(<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_nick'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'nick'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_password'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'password'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_email'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'email'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_sexo'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'sexo'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'f'&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #DD0000">'0'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_terminos'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'terminos'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_captcha'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'response'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_registro'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">time</span><span style="color: #007700">(),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
un poco más abajo buscan <span style="font-style: italic;" class="mycode_i">(Cabe recalcar que deben tener las claves del reCaptcha v3 agregadas)</span><br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #FF8000">/**&nbsp;reCAPTCHA&nbsp;**/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;recaptcha&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido&nbsp;.&nbsp;&#36;tsCore-&gt;settings['</span><span style="color: #0000BB">skey</span><span style="color: #DD0000">']&nbsp;.&nbsp;'</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">response</span><span style="color: #007700">=</span><span style="color: #DD0000">'&nbsp;.&nbsp;&#36;tsData['</span><span style="color: #0000BB">user_captcha</span><span style="color: #DD0000">']&nbsp;.&nbsp;'</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">remoteip</span><span style="color: #007700">=</span><span style="color: #DD0000">'&nbsp;.&nbsp;&#36;tsCore-&gt;getIP();<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Obtener&nbsp;respuesta<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;response&nbsp;=&nbsp;file_get_contents(&#36;recaptcha);<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Extraer&nbsp;resultado<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;ext1&nbsp;=&nbsp;explode('"success"</span><span style="color: #007700">:</span><span style="color: #DD0000">',&nbsp;&#36;response);<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;ext2&nbsp;=&nbsp;explode('</span><span style="color: #007700">,</span><span style="color: #DD0000">',&nbsp;&#36;ext1[1]);<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Comprobar&nbsp;resultado<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;valid&nbsp;=&nbsp;trim(&#36;ext2[0]);<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Devolver&nbsp;respuesta&nbsp;si&nbsp;es&nbsp;incorrecta<br /> &nbsp; &nbsp; &nbsp; &nbsp;if&nbsp;(&#36;valid&nbsp;==&nbsp;'</span><span style="color: #0000BB">false</span><span style="color: #DD0000">')&nbsp;{<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return&nbsp;'</span><span style="color: #0000BB">recaptcha</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">No&nbsp;hemos&nbsp;podido&nbsp;validar&nbsp;tu&nbsp;humanidad</span><span style="color: #DD0000">';<br /> &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp;<br /></span></code></div></div></div><br />
y la reemplazan por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #FF8000">/**<br />  &nbsp;   &nbsp; &nbsp;*&nbsp;Comprobamos&nbsp;el&nbsp;recaptcha&nbsp;v3<br />  &nbsp;   &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;response&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">reCaptcha</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_captcha'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">&#36;response</span><span style="color: #007700">)&nbsp;return&nbsp;</span><span style="color: #DD0000">'recaptcha:&nbsp;No&nbsp;hemos&nbsp;podido&nbsp;validar&nbsp;tu&nbsp;humanidad'</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
más abajo buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;INSERTAMOS&nbsp;EL&nbsp;PERFIL<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'INSERT&nbsp;INTO&nbsp;`u_perfil`&nbsp;(`user_id`,&nbsp;`user_dia`,&nbsp;`user_mes`,&nbsp;`user_ano`,&nbsp;`user_pais`,&nbsp;`user_estado`,&nbsp;`user_sexo`)&nbsp;VALUES&nbsp;(&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_dia'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_mes'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_anio'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_pais'</span><span style="color: #007700">]).</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_estado'</span><span style="color: #007700">]).</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_sexo'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;')'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'INSERT&nbsp;INTO&nbsp;`u_portal`&nbsp;(`user_id`)&nbsp;VALUES&nbsp;(&#092;''</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;')'</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y la reemplazamos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"INSERT&nbsp;INTO&nbsp;u_perfil&nbsp;(user_id,&nbsp;p_avatar,&nbsp;user_sexo)&nbsp;VALUES(</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">]}</span><span style="color: #DD0000">,&nbsp;1,&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_sexo'</span><span style="color: #007700">]}</span><span style="color: #DD0000">)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"INSERT&nbsp;INTO&nbsp;u_portal&nbsp;(user_id)&nbsp;VALUES(</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">]}</span><span style="color: #DD0000">)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">#&nbsp;Generamos&nbsp;automaticamente&nbsp;un&nbsp;avatar<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;avatar&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;copy&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"../../files/avatar/&#36;2_&#36;3.jpg"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;sizes&nbsp;</span><span style="color: #007700">=&nbsp;[</span><span style="color: #0000BB">50</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">120</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; foreach&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;sizes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;   &nbsp; copy</span><span style="color: #007700">(<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#36;1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_nick'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;avatar</span><span style="color: #007700">),</span><span style="color: #0000BB"> <br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; str_replace</span><span style="color: #007700">([</span><span style="color: #DD0000">'&#36;2'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&#36;3'</span><span style="color: #007700">],&nbsp;[</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;copy</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">)<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
5 - Luego en<span style="font-weight: bold;" class="mycode_b"> inc/class/c.core.php</span> buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">/*<br /> &nbsp; &nbsp; &nbsp; getIP<br /> &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; function&nbsp;getIP</span><span style="color: #007700">(){&nbsp;<br /></span></code></div></div></div><br />
y arriba agregamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;Función&nbsp;para&nbsp;comprobar&nbsp;reCaptcha&nbsp;v3<br /></span><span style="color: #0000BB">  &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">reCaptcha</span><span style="color: #007700">(</span><span style="color: #0000BB">string&nbsp;&#36;publico&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;&#36;http&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">http_build_query</span><span style="color: #007700">([<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;  &nbsp; </span><span style="color: #DD0000">'secret'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"skey"</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br />  &nbsp; &nbsp; &nbsp;  &nbsp; </span><span style="color: #DD0000">'response'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;publico</span><span style="color: #007700">,</span><span style="color: #0000BB"> <br />  &nbsp; &nbsp; &nbsp;  &nbsp; </span><span style="color: #DD0000">'remoteip'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getIP</span><span style="color: #007700">()<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;&#36;init&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_init</span><span style="color: #007700">();<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_URL</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_POST</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_POSTFIELDS</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;http</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_RETURNTRANSFER</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;response&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_exec</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_close</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;response</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
Y eso sería todo, espero no olvidarme de nada!<br />
Cualquier problema o duda comenten!]]></description>
			<content:encoded><![CDATA[Este "mod" es dual ya que tiene el <span style="font-weight: bold;" class="mycode_b">login</span> y <span style="font-weight: bold;" class="mycode_b">registro</span>, esta realizado de forma que al ingresar a al sitio tengas que registrarte o loguearte de forma obligatoria...<br />
<br />
una vista previa de como quedará<br />
[img]Registrate o inicia tu sesión para ver este contenido[/img]<br />
<br />
Bueno comencemos <br />
1 - En <span style="font-weight: bold;" class="mycode_b">header.php</span> buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; define</span><span style="color: #007700">(</span><span style="color: #DD0000">'TS_TEMA'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsTema</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y debajo agregamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;El&nbsp;tipo&nbsp;de&nbsp;inicio <br /></span><span style="color: #0000BB"> &nbsp; define</span><span style="color: #007700">(</span><span style="color: #DD0000">'INICIO_DUAL'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">TRUE</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
2 - Buscamos en <span style="font-weight: bold;" class="mycode_b">index.php</span><br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">//&nbsp;Checamos...<br /></span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'c_allow_portal'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">is_member&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'do'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'portal'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">//&nbsp;Portal/mi<br /></span><span style="color: #0000BB"> &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">'inc/php/portal.php'</span><span style="color: #007700">);<br />}&nbsp;else&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">//&nbsp;Home<br /></span><span style="color: #0000BB"> &nbsp; include</span><span style="color: #007700">(</span><span style="color: #DD0000">'inc/php/posts.php'</span><span style="color: #007700">);<br />}&nbsp;<br /></span></code></div></div></div><br />
y la reemplazamos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">/**<br />&nbsp;*&nbsp;Dependiendo&nbsp;de&nbsp;la&nbsp;configuración<br />&nbsp;*&nbsp;Solo&nbsp;aplicará&nbsp;el&nbsp;dual&nbsp;si&nbsp;ambos&nbsp;son&nbsp;"TRUE"<br />*/<br /></span><span style="color: #007700">if(</span><span style="color: #0000BB">INICIO_DUAL&nbsp;</span><span style="color: #007700">AND&nbsp;!</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">is_member</span><span style="color: #007700">)&nbsp;include&nbsp;</span><span style="color: #DD0000">'inc/php/dual.php'</span><span style="color: #007700">;<br />else&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">//&nbsp;Checamos...<br /></span><span style="color: #0000BB"> &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">intval</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'c_allow_portal'</span><span style="color: #007700">])&nbsp;==&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;tsUser</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">is_member&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">true&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'do'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'portal'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;Portal/mi<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include(</span><span style="color: #DD0000">'inc/php/portal.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;else&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;Home<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include(</span><span style="color: #DD0000">'inc/php/posts.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}<br />}&nbsp;<br /></span></code></div></div></div><br />
<br />
3 - <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Descargan los archivos</span></a> y los ponen en las rutas correspondientes<br />
 * <span style="font-weight: bold;" class="mycode_b">dual.php</span> en inc/php/<br />
 * <span style="font-weight: bold;" class="mycode_b">dual.css</span> en tema/css/<br />
 * <span style="font-weight: bold;" class="mycode_b">dual.js</span> en tema/js/<br />
 * <span style="font-weight: bold;" class="mycode_b">t.dual.tpl</span> en tema/templates/<br />
<br />
4 - Ir a <span style="font-weight: bold;" class="mycode_b">inc/class/c.registro.php</span> y buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;tsData&nbsp;</span><span style="color: #007700">=&nbsp;array(<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_nick'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'nick'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_password'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'password'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_email'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'email'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_dia'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'dia'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_mes'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'mes'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_anio'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'anio'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_sexo'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'sexo'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'f'&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #DD0000">'0'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_pais'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">strtoupper</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'pais'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_estado'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'estado'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_terminos'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'terminos'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_captcha'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'g-recaptcha-response'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_registro'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">time</span><span style="color: #007700">(),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y la reemplazan por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; &#36;tsData&nbsp;</span><span style="color: #007700">=&nbsp;array(<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_nick'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'nick'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_password'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">parseBadWords</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'password'</span><span style="color: #007700">]),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_email'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'email'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_sexo'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'sexo'</span><span style="color: #007700">]&nbsp;==&nbsp;</span><span style="color: #DD0000">'f'&nbsp;</span><span style="color: #007700">?&nbsp;</span><span style="color: #DD0000">'0'&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_terminos'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'terminos'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_captcha'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'response'</span><span style="color: #007700">],<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #DD0000">'user_registro'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">time</span><span style="color: #007700">(),<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
un poco más abajo buscan <span style="font-style: italic;" class="mycode_i">(Cabe recalcar que deben tener las claves del reCaptcha v3 agregadas)</span><br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #FF8000">/**&nbsp;reCAPTCHA&nbsp;**/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;recaptcha&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido&nbsp;.&nbsp;&#36;tsCore-&gt;settings['</span><span style="color: #0000BB">skey</span><span style="color: #DD0000">']&nbsp;.&nbsp;'</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">response</span><span style="color: #007700">=</span><span style="color: #DD0000">'&nbsp;.&nbsp;&#36;tsData['</span><span style="color: #0000BB">user_captcha</span><span style="color: #DD0000">']&nbsp;.&nbsp;'</span><span style="color: #007700">&amp;</span><span style="color: #0000BB">remoteip</span><span style="color: #007700">=</span><span style="color: #DD0000">'&nbsp;.&nbsp;&#36;tsCore-&gt;getIP();<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Obtener&nbsp;respuesta<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;response&nbsp;=&nbsp;file_get_contents(&#36;recaptcha);<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Extraer&nbsp;resultado<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;ext1&nbsp;=&nbsp;explode('"success"</span><span style="color: #007700">:</span><span style="color: #DD0000">',&nbsp;&#36;response);<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;ext2&nbsp;=&nbsp;explode('</span><span style="color: #007700">,</span><span style="color: #DD0000">',&nbsp;&#36;ext1[1]);<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Comprobar&nbsp;resultado<br /> &nbsp; &nbsp; &nbsp; &nbsp;&#36;valid&nbsp;=&nbsp;trim(&#36;ext2[0]);<br /> &nbsp; &nbsp; &nbsp; &nbsp;//&nbsp;Devolver&nbsp;respuesta&nbsp;si&nbsp;es&nbsp;incorrecta<br /> &nbsp; &nbsp; &nbsp; &nbsp;if&nbsp;(&#36;valid&nbsp;==&nbsp;'</span><span style="color: #0000BB">false</span><span style="color: #DD0000">')&nbsp;{<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return&nbsp;'</span><span style="color: #0000BB">recaptcha</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">No&nbsp;hemos&nbsp;podido&nbsp;validar&nbsp;tu&nbsp;humanidad</span><span style="color: #DD0000">';<br /> &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp;<br /></span></code></div></div></div><br />
y la reemplazan por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #FF8000">/**<br />  &nbsp;   &nbsp; &nbsp;*&nbsp;Comprobamos&nbsp;el&nbsp;recaptcha&nbsp;v3<br />  &nbsp;   &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;response&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">reCaptcha</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_captcha'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(!</span><span style="color: #0000BB">&#36;response</span><span style="color: #007700">)&nbsp;return&nbsp;</span><span style="color: #DD0000">'recaptcha:&nbsp;No&nbsp;hemos&nbsp;podido&nbsp;validar&nbsp;tu&nbsp;humanidad'</span><span style="color: #007700">;&nbsp;<br /></span></code></div></div></div><br />
más abajo buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;INSERTAMOS&nbsp;EL&nbsp;PERFIL<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'INSERT&nbsp;INTO&nbsp;`u_perfil`&nbsp;(`user_id`,&nbsp;`user_dia`,&nbsp;`user_mes`,&nbsp;`user_ano`,&nbsp;`user_pais`,&nbsp;`user_estado`,&nbsp;`user_sexo`)&nbsp;VALUES&nbsp;(&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_dia'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_mes'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_anio'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_pais'</span><span style="color: #007700">]).</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_estado'</span><span style="color: #007700">]).</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''</span><span style="color: #007700">.(int)</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_sexo'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;')'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'INSERT&nbsp;INTO&nbsp;`u_portal`&nbsp;(`user_id`)&nbsp;VALUES&nbsp;(&#092;''</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">].</span><span style="color: #DD0000">'&#092;')'</span><span style="color: #007700">);&nbsp;<br /></span></code></div></div></div><br />
y la reemplazamos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"INSERT&nbsp;INTO&nbsp;u_perfil&nbsp;(user_id,&nbsp;p_avatar,&nbsp;user_sexo)&nbsp;VALUES(</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">]}</span><span style="color: #DD0000">,&nbsp;1,&nbsp;</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_sexo'</span><span style="color: #007700">]}</span><span style="color: #DD0000">)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"INSERT&nbsp;INTO&nbsp;u_portal&nbsp;(user_id)&nbsp;VALUES(</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">]}</span><span style="color: #DD0000">)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; <br /> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #FF8000">#&nbsp;Generamos&nbsp;automaticamente&nbsp;un&nbsp;avatar<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;avatar&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;copy&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"../../files/avatar/&#36;2_&#36;3.jpg"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &#36;sizes&nbsp;</span><span style="color: #007700">=&nbsp;[</span><span style="color: #0000BB">50</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">120</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; foreach&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;sizes&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;   &nbsp; copy</span><span style="color: #007700">(<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#36;1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_nick'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;avatar</span><span style="color: #007700">),</span><span style="color: #0000BB"> <br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; str_replace</span><span style="color: #007700">([</span><span style="color: #DD0000">'&#36;2'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&#36;3'</span><span style="color: #007700">],&nbsp;[</span><span style="color: #0000BB">&#36;tsData</span><span style="color: #007700">[</span><span style="color: #DD0000">'user_id'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;size</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">&#36;copy</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">)<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
5 - Luego en<span style="font-weight: bold;" class="mycode_b"> inc/class/c.core.php</span> buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">/*<br /> &nbsp; &nbsp; &nbsp; getIP<br /> &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; function&nbsp;getIP</span><span style="color: #007700">(){&nbsp;<br /></span></code></div></div></div><br />
y arriba agregamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;Función&nbsp;para&nbsp;comprobar&nbsp;reCaptcha&nbsp;v3<br /></span><span style="color: #0000BB">  &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">reCaptcha</span><span style="color: #007700">(</span><span style="color: #0000BB">string&nbsp;&#36;publico&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;&#36;http&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">http_build_query</span><span style="color: #007700">([<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;  &nbsp; </span><span style="color: #DD0000">'secret'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">"skey"</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br />  &nbsp; &nbsp; &nbsp;  &nbsp; </span><span style="color: #DD0000">'response'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;publico</span><span style="color: #007700">,</span><span style="color: #0000BB"> <br />  &nbsp; &nbsp; &nbsp;  &nbsp; </span><span style="color: #DD0000">'remoteip'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getIP</span><span style="color: #007700">()<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; &nbsp;&#36;init&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_init</span><span style="color: #007700">();<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_URL</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"Registrate&nbsp;o&nbsp;inicia&nbsp;tu&nbsp;sesión&nbsp;para&nbsp;ver&nbsp;este&nbsp;contenido"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_POST</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_POSTFIELDS</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;http</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_setopt</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">CURLOPT_RETURNTRANSFER</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;response&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">curl_exec</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;curl_close</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;init</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;response</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
Y eso sería todo, espero no olvidarme de nada!<br />
Cualquier problema o duda comenten!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Comprobar temas instalados]]></title>
			<link>https://phpost.es/tema-Complementos-Comprobar-temas-instalados</link>
			<pubDate>Wed, 16 Feb 2022 15:36:16 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Comprobar-temas-instalados</guid>
			<description><![CDATA[Para esto deben tener los temas en la carpeta "<span style="font-weight: bold;" class="mycode_b">themes</span>" y <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Smarty 4.0</span></a>, ya que utilizaremos la configuración hecha en <span style="font-weight: bold;" class="mycode_b">smarty.config.php</span><br />
<br />
 <br />
1 - Buscan en inc/class/c.admin.php<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">/*<br /> &nbsp; &nbsp;getTemas()<br /> &nbsp; &nbsp;*/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">getTemas</span><span style="color: #007700">()&nbsp;<br /></span></code></div></div></div><br />
Arriba agregaremos lo siguiente<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;Buscamos&nbsp;los&nbsp;temas&nbsp;no&nbsp;instalados<br /></span><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">temas_no_instalados</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Arreglo&nbsp;de&nbsp;temas&nbsp;sin&nbsp;intalar<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;no_instalado&nbsp;</span><span style="color: #007700">=&nbsp;[];<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; </span><span style="color: #FF8000">#&nbsp;Esto&nbsp;esta&nbsp;configurado&nbsp;en&nbsp;smarty.config.php<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Primero&nbsp;buscamos&nbsp;en&nbsp;la&nbsp;carpeta&nbsp;themes&nbsp;si&nbsp;hay&nbsp;un&nbsp;theme&nbsp;sin&nbsp;instalar<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;themes&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"themes"</span><span style="color: #007700">]&nbsp;);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Recorremos&nbsp;toda&nbsp;la&nbsp;carpeta&nbsp;de&nbsp;themes<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">while&nbsp;(</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;themes</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">):<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;el&nbsp;archivo&nbsp;de&nbsp;instalacion<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"themes"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"/install.php"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Ahora&nbsp;comprobamos&nbsp;si&nbsp;esta&nbsp;instalado<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(!</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'fetch_assoc'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SELECT&nbsp;tid&nbsp;FROM&nbsp;w_temas&nbsp;WHERE&nbsp;t_path&nbsp;=&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;theme</span><span style="color: #007700">}</span><span style="color: #DD0000">'&nbsp;LIMIT&nbsp;1"</span><span style="color: #007700">))[</span><span style="color: #DD0000">"tid"</span><span style="color: #007700">])&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;no_instalado</span><span style="color: #007700">,&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">"nombre"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">"nombre"</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">"path"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">],<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">"copy"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">"copy"</span><span style="color: #007700">]<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; endif</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;no_instalado</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
luego un poco más abajo buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">()<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;tema_path&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;ARCHIVO&nbsp;DE&nbsp;INSTALACION<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include&nbsp;(</span><span style="color: #DD0000">"../../themes/"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tema_path&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/install.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(empty(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">))<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #DD0000">'Revisa&nbsp;que&nbsp;la&nbsp;carpeta&nbsp;del&nbsp;tema&nbsp;sea&nbsp;correcta.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">foreach&nbsp;(</span><span style="color: #0000BB">&#36;tema&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;val</span><span style="color: #007700">)<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(empty(</span><span style="color: #0000BB">&#36;val</span><span style="color: #007700">))<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #DD0000">'El&nbsp;archivo&nbsp;de&nbsp;instalaci&amp;oacute;n&nbsp;del&nbsp;tema&nbsp;es&nbsp;incorrecto.&nbsp;Recuerda&nbsp;utilizar&nbsp;temas&nbsp;oficiales.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">else<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;temadb</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;val</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;NUEVO<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'INSERT&nbsp;INTO&nbsp;`w_temas`&nbsp;(`t_name`,&nbsp;`t_url`,&nbsp;`t_path`,&nbsp;`t_copy`)&nbsp;VALUES&nbsp;(&#092;''&nbsp;</span><span style="color: #007700">.<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;temadb</span><span style="color: #007700">[</span><span style="color: #DD0000">'nombre'</span><span style="color: #007700">])&nbsp;.&nbsp;</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;temadb</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">])&nbsp;.<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema_path</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;temadb</span><span style="color: #007700">[</span><span style="color: #DD0000">'copy'</span><span style="color: #007700">])&nbsp;.<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'&#092;')'</span><span style="color: #007700">))<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">else<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #DD0000">'Ocurri&amp;oacute;&nbsp;un&nbsp;error&nbsp;durante&nbsp;la&nbsp;instalaci&amp;oacute;n.&nbsp;Consulta&nbsp;el&nbsp;foro&nbsp;ofcial&nbsp;de&nbsp;PHPost.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
y la reemplazaremos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;ARCHIVO&nbsp;DE&nbsp;INSTALACION<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;method&nbsp;</span><span style="color: #007700">=&nbsp;(isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]))&nbsp;?&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]&nbsp;:&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"themes"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;method</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"/install.php"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Instalando&nbsp;usando&nbsp;directamente&nbsp;el&nbsp;botón&nbsp;de&nbsp;"instalar&nbsp;tema"<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">'nombre'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;path&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/themes/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;path</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;copy&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">'copy'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Si&nbsp;hay&nbsp;un&nbsp;problema&nbsp;en&nbsp;la&nbsp;carpeta<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(empty(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">))&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"error"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'Revisa&nbsp;que&nbsp;la&nbsp;carpeta&nbsp;del&nbsp;tema&nbsp;sea&nbsp;correcta.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Instalamos&nbsp;el&nbsp;tema<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"INSERT&nbsp;INTO&nbsp;w_temas&nbsp;(t_name,&nbsp;t_path,&nbsp;t_url,&nbsp;t_copy)&nbsp;VALUES&nbsp;('</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;name</span><span style="color: #007700">}</span><span style="color: #DD0000">',&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;path</span><span style="color: #007700">}</span><span style="color: #DD0000">',&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;url</span><span style="color: #007700">}</span><span style="color: #DD0000">',&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;copy</span><span style="color: #007700">}</span><span style="color: #DD0000">')"</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;true</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;else&nbsp;return&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"error"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'Ocurrió&nbsp;un&nbsp;error&nbsp;durante&nbsp;la&nbsp;instalación.&nbsp;Consulta&nbsp;el&nbsp;foro&nbsp;ofcial&nbsp;de&nbsp;PHPost.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
<br />
2 - Ahora buscamos en <span style="font-weight: bold;" class="mycode_b">inc/php/admin.php</span><br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'temas'</span><span style="color: #007700">){&nbsp;<br /></span></code></div></div></div><br />
y debajo pegamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;tni&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">temas_no_instalados</span><span style="color: #007700">();&nbsp;<br /></span></code></div></div></div><br />
un poco más abajo buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsTemas"</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTemas</span><span style="color: #007700">());&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsNoTemas"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tni</span><span style="color: #007700">));&nbsp;<br /></span></code></div></div></div><br />
más abajo buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'nuevo'</span><span style="color: #007700">){<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;GUARDAR<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;install&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;install&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/temas?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;install</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'nuevo'</span><span style="color: #007700">){<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Primero&nbsp;buscamos&nbsp;si&nbsp;hay&nbsp;temas&nbsp;sin&nbsp;instalar<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsNoInstall"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tni</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Guardamos<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">])&nbsp;or&nbsp;!empty(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">())&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/temas?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;install</span><span style="color: #007700">[</span><span style="color: #DD0000">"error"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
3 - Ahora vamos a nuestro tema <span style="font-weight: bold;" class="mycode_b">templates/admin_mods/m.admin_temas.tpl</span> y buscamos<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="boxy-title"&gt;<br />
   &lt;h3&gt;Administrar Temas&lt;/h3&gt;<br />
&lt;/div&gt;</code></div></div><br />
y la reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="boxy-title" style="display: flex;justify-content: *****: center;"&gt;<br />
   &lt;h3&gt;Administrar Temas&lt;/h3&gt;<br />
   {if &#36;tsNoTemas &gt;= 1}<br />
      &lt;span&gt;Hay &lt;b&gt;{&#36;tsNoTemas} tema{if &#36;tsNoTemas &gt; 1}s{/if}&lt;/b&gt;  sin instalar&lt;/span&gt;<br />
   {/if}<br />
&lt;/div&gt;</code></div></div><br />
luego más abajo buscamos<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    {elseif &#36;tsAct == 'nuevo'}<br />
    {if &#36;tsError}&lt;div style="display: block;" class="mensajes error"&gt;{&#36;tsError}&lt;/div&gt;{/if}<br />
    &lt;form action="" method="post" id="admin_form" autocomplete="off"&gt;<br />
        &lt;label for="ai_path"&gt;Nombre de la carpeta donde esta el tema a instalar:&lt;br /&gt;&lt;i&gt;{&#36;tsConfig.url}/themes/&lt;/i&gt;&lt;/label&gt; &lt;input type="text" id="ai_path" name="path" size="30" /&gt;<br />
        &lt;hr /&gt;<br />
        &lt;label&gt; &lt;/label&gt; &lt;input type="submit" value="Instalar tema" class="mBtn btnOk"&gt;<br />
    &lt;/form&gt;<br />
    {/if}</code></div></div><br />
y lo reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>   {elseif &#36;tsAct == 'nuevo'}<br />
      {if &#36;tsError}&lt;div class="alerts error"&gt;{&#36;tsError}&lt;/div&gt;{/if}<br />
<br />
      {if !empty(&#36;tsNoInstall)}<br />
         &lt;h4 style="margin: 6px 0;"&gt;Temas no instalados&lt;/h4&gt;<br />
         &lt;p class="emptyData"&gt;Estos son temas que estan en "&lt;u&gt;&lt;i&gt;{&#36;tsConfig.url}/themes/&lt;/i&gt;&lt;/u&gt;", pero no estan instalados en la base&lt;/p&gt;<br />
         &lt;form method="post" autocomplete="off"&gt;<br />
            &lt;input type="hidden" name="manual" value="0"&gt;<br />
            {foreach &#36;tsNoInstall key=i item=t}<br />
               &lt;div style="display: flex;justify-content: *****: center;margin-bottom: 10px;"&gt;<br />
                  &lt;div&gt;<br />
                     &lt;span&gt;&lt;b&gt;{&#36;t.nombre}&lt;/b&gt;&lt;/span&gt;<br />
                     &lt;span style="display: block;"&gt;&lt;b&gt;Carpeta&lt;/b&gt;: {&#36;t.path}&lt;/span&gt;<br />
                     &lt;span&gt;&lt;b&gt;Autor&lt;/b&gt;: {&#36;t.copy}&lt;/span&gt;<br />
                  &lt;/div&gt;<br />
                  &lt;div style="display: flex;justify-content: *****: center;"&gt;<br />
                     &lt;a href="{&#36;tsConfig.url}/admin/temas?act=nuevo&amp;path={&#36;t.path}" class="mBtn btnOk"&gt;Instalar {&#36;t.nombre}&lt;/a&gt;<br />
                  &lt;/div&gt;<br />
               &lt;/div&gt;<br />
            {/foreach}<br />
         &lt;/form&gt;<br />
      {else}<br />
         &lt;form action="" method="post" id="admin_form" autocomplete="off"&gt;<br />
            &lt;input type="hidden" name="manual" value="1"&gt;<br />
            &lt;label for="ai_path"&gt;Nombre de la carpeta donde esta el tema a instalar:&lt;br /&gt;&lt;i&gt;{&#36;tsConfig.url}/themes/&lt;/i&gt;&lt;/label&gt; <br />
            &lt;input type="text" id="ai_path" name="path" size="30" /&gt;<br />
            &lt;hr class="separator"&gt;<br />
            &lt;input type="submit" value="Instalar tema" class="mBtn btnOk"&gt;<br />
         &lt;/form&gt;<br />
      {/if}<br />
   {/if}</code></div></div><br />
Puede ser que <span style="font-weight: bold;" class="mycode_b">el atributo style</span> modifique el css, esto ya es a su gusto.<br />
<br />
Ahora pueden <span style="font-weight: bold;" class="mycode_b">agregar los themes</span> e instalar desde un botón, sin tener que estar escribiendo el nombre del tema en el input.]]></description>
			<content:encoded><![CDATA[Para esto deben tener los temas en la carpeta "<span style="font-weight: bold;" class="mycode_b">themes</span>" y <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Smarty 4.0</span></a>, ya que utilizaremos la configuración hecha en <span style="font-weight: bold;" class="mycode_b">smarty.config.php</span><br />
<br />
 <br />
1 - Buscan en inc/class/c.admin.php<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">/*<br /> &nbsp; &nbsp;getTemas()<br /> &nbsp; &nbsp;*/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">getTemas</span><span style="color: #007700">()&nbsp;<br /></span></code></div></div></div><br />
Arriba agregaremos lo siguiente<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">#&nbsp;Buscamos&nbsp;los&nbsp;temas&nbsp;no&nbsp;instalados<br /></span><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">temas_no_instalados</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Arreglo&nbsp;de&nbsp;temas&nbsp;sin&nbsp;intalar<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;no_instalado&nbsp;</span><span style="color: #007700">=&nbsp;[];<br /></span><span style="color: #0000BB">  &nbsp; &nbsp; </span><span style="color: #FF8000">#&nbsp;Esto&nbsp;esta&nbsp;configurado&nbsp;en&nbsp;smarty.config.php<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Primero&nbsp;buscamos&nbsp;en&nbsp;la&nbsp;carpeta&nbsp;themes&nbsp;si&nbsp;hay&nbsp;un&nbsp;theme&nbsp;sin&nbsp;instalar<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;themes&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"themes"</span><span style="color: #007700">]&nbsp;);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Recorremos&nbsp;toda&nbsp;la&nbsp;carpeta&nbsp;de&nbsp;themes<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">while&nbsp;(</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;themes</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">):<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Obtenemos&nbsp;el&nbsp;archivo&nbsp;de&nbsp;instalacion<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"themes"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;theme&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">"/install.php"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Ahora&nbsp;comprobamos&nbsp;si&nbsp;esta&nbsp;instalado<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(!</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(</span><span style="color: #DD0000">'fetch_assoc'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"SELECT&nbsp;tid&nbsp;FROM&nbsp;w_temas&nbsp;WHERE&nbsp;t_path&nbsp;=&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;theme</span><span style="color: #007700">}</span><span style="color: #DD0000">'&nbsp;LIMIT&nbsp;1"</span><span style="color: #007700">))[</span><span style="color: #DD0000">"tid"</span><span style="color: #007700">])&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;no_instalado</span><span style="color: #007700">,&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">"nombre"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">"nombre"</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">"path"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">],<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">"copy"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">"copy"</span><span style="color: #007700">]<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; endif</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;no_instalado</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
luego un poco más abajo buscamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">()<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;tema_path&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;ARCHIVO&nbsp;DE&nbsp;INSTALACION<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include&nbsp;(</span><span style="color: #DD0000">"../../themes/"&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tema_path&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/install.php'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(empty(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">))<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #DD0000">'Revisa&nbsp;que&nbsp;la&nbsp;carpeta&nbsp;del&nbsp;tema&nbsp;sea&nbsp;correcta.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">foreach&nbsp;(</span><span style="color: #0000BB">&#36;tema&nbsp;</span><span style="color: #007700">as&nbsp;</span><span style="color: #0000BB">&#36;key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;val</span><span style="color: #007700">)<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(empty(</span><span style="color: #0000BB">&#36;val</span><span style="color: #007700">))<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #DD0000">'El&nbsp;archivo&nbsp;de&nbsp;instalaci&amp;oacute;n&nbsp;del&nbsp;tema&nbsp;es&nbsp;incorrecto.&nbsp;Recuerda&nbsp;utilizar&nbsp;temas&nbsp;oficiales.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">else<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;temadb</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;key</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;val</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;NUEVO<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">(array(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">),&nbsp;</span><span style="color: #DD0000">'query'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'INSERT&nbsp;INTO&nbsp;`w_temas`&nbsp;(`t_name`,&nbsp;`t_url`,&nbsp;`t_path`,&nbsp;`t_copy`)&nbsp;VALUES&nbsp;(&#092;''&nbsp;</span><span style="color: #007700">.<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;temadb</span><span style="color: #007700">[</span><span style="color: #DD0000">'nombre'</span><span style="color: #007700">])&nbsp;.&nbsp;</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;temadb</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">])&nbsp;.<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema_path</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">'&#092;',&nbsp;&#092;''&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;temadb</span><span style="color: #007700">[</span><span style="color: #DD0000">'copy'</span><span style="color: #007700">])&nbsp;.<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'&#092;')'</span><span style="color: #007700">))<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">else<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #DD0000">'Ocurri&amp;oacute;&nbsp;un&nbsp;error&nbsp;durante&nbsp;la&nbsp;instalaci&amp;oacute;n.&nbsp;Consulta&nbsp;el&nbsp;foro&nbsp;ofcial&nbsp;de&nbsp;PHPost.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
y la reemplazaremos por<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;ARCHIVO&nbsp;DE&nbsp;INSTALACION<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;method&nbsp;</span><span style="color: #007700">=&nbsp;(isset(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]))&nbsp;?&nbsp;</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">]&nbsp;:&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"path"</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">include&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"themes"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;method</span><span style="color: #007700">)&nbsp;.&nbsp;</span><span style="color: #DD0000">"/install.php"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Instalando&nbsp;usando&nbsp;directamente&nbsp;el&nbsp;botón&nbsp;de&nbsp;"instalar&nbsp;tema"<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;name&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">'nombre'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;path&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;url&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #DD0000">'/themes/'&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #0000BB">&#36;path</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;copy&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">[</span><span style="color: #DD0000">'copy'</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Si&nbsp;hay&nbsp;un&nbsp;problema&nbsp;en&nbsp;la&nbsp;carpeta<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(empty(</span><span style="color: #0000BB">&#36;tema</span><span style="color: #007700">))&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"error"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'Revisa&nbsp;que&nbsp;la&nbsp;carpeta&nbsp;del&nbsp;tema&nbsp;sea&nbsp;correcta.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Instalamos&nbsp;el&nbsp;tema<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">db_exec</span><span style="color: #007700">([</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">__LINE__</span><span style="color: #007700">],&nbsp;</span><span style="color: #DD0000">"query"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"INSERT&nbsp;INTO&nbsp;w_temas&nbsp;(t_name,&nbsp;t_path,&nbsp;t_url,&nbsp;t_copy)&nbsp;VALUES&nbsp;('</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;name</span><span style="color: #007700">}</span><span style="color: #DD0000">',&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;path</span><span style="color: #007700">}</span><span style="color: #DD0000">',&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;url</span><span style="color: #007700">}</span><span style="color: #DD0000">',&nbsp;'</span><span style="color: #007700">{</span><span style="color: #0000BB">&#36;copy</span><span style="color: #007700">}</span><span style="color: #DD0000">')"</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; return&nbsp;true</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;else&nbsp;return&nbsp;</span><span style="color: #0000BB">&#36;data</span><span style="color: #007700">[</span><span style="color: #DD0000">"error"</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'Ocurrió&nbsp;un&nbsp;error&nbsp;durante&nbsp;la&nbsp;instalación.&nbsp;Consulta&nbsp;el&nbsp;foro&nbsp;ofcial&nbsp;de&nbsp;PHPost.'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}</span><span style="color: #0000BB"> &nbsp;<br /></span></code></div></div></div><br />
<br />
2 - Ahora buscamos en <span style="font-weight: bold;" class="mycode_b">inc/php/admin.php</span><br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'temas'</span><span style="color: #007700">){&nbsp;<br /></span></code></div></div></div><br />
y debajo pegamos<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;tni&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">temas_no_instalados</span><span style="color: #007700">();&nbsp;<br /></span></code></div></div></div><br />
un poco más abajo buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsTemas"</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTemas</span><span style="color: #007700">());&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsNoTemas"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tni</span><span style="color: #007700">));&nbsp;<br /></span></code></div></div></div><br />
más abajo buscan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'nuevo'</span><span style="color: #007700">){<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">//&nbsp;GUARDAR<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; &#36;install&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;install&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/temas?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,</span><span style="color: #0000BB">&#36;install</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
y debajo agregan<br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;act&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'nuevo'</span><span style="color: #007700">){<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Primero&nbsp;buscamos&nbsp;si&nbsp;hay&nbsp;temas&nbsp;sin&nbsp;instalar<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; &#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsNoInstall"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tni</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #FF8000">#&nbsp;Guardamos<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(!empty(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">])&nbsp;or&nbsp;!empty(</span><span style="color: #0000BB">&#36;_GET</span><span style="color: #007700">[</span><span style="color: #DD0000">'path'</span><span style="color: #007700">]))&nbsp;{<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newTema</span><span style="color: #007700">())&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">redirectTo</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">settings</span><span style="color: #007700">[</span><span style="color: #DD0000">'url'</span><span style="color: #007700">].</span><span style="color: #DD0000">'/admin/temas?save=true'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp;   &nbsp; else&nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">"tsError"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;install</span><span style="color: #007700">[</span><span style="color: #DD0000">"error"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp;   &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB">  &nbsp;   &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
3 - Ahora vamos a nuestro tema <span style="font-weight: bold;" class="mycode_b">templates/admin_mods/m.admin_temas.tpl</span> y buscamos<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="boxy-title"&gt;<br />
   &lt;h3&gt;Administrar Temas&lt;/h3&gt;<br />
&lt;/div&gt;</code></div></div><br />
y la reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="boxy-title" style="display: flex;justify-content: *****: center;"&gt;<br />
   &lt;h3&gt;Administrar Temas&lt;/h3&gt;<br />
   {if &#36;tsNoTemas &gt;= 1}<br />
      &lt;span&gt;Hay &lt;b&gt;{&#36;tsNoTemas} tema{if &#36;tsNoTemas &gt; 1}s{/if}&lt;/b&gt;  sin instalar&lt;/span&gt;<br />
   {/if}<br />
&lt;/div&gt;</code></div></div><br />
luego más abajo buscamos<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    {elseif &#36;tsAct == 'nuevo'}<br />
    {if &#36;tsError}&lt;div style="display: block;" class="mensajes error"&gt;{&#36;tsError}&lt;/div&gt;{/if}<br />
    &lt;form action="" method="post" id="admin_form" autocomplete="off"&gt;<br />
        &lt;label for="ai_path"&gt;Nombre de la carpeta donde esta el tema a instalar:&lt;br /&gt;&lt;i&gt;{&#36;tsConfig.url}/themes/&lt;/i&gt;&lt;/label&gt; &lt;input type="text" id="ai_path" name="path" size="30" /&gt;<br />
        &lt;hr /&gt;<br />
        &lt;label&gt; &lt;/label&gt; &lt;input type="submit" value="Instalar tema" class="mBtn btnOk"&gt;<br />
    &lt;/form&gt;<br />
    {/if}</code></div></div><br />
y lo reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>   {elseif &#36;tsAct == 'nuevo'}<br />
      {if &#36;tsError}&lt;div class="alerts error"&gt;{&#36;tsError}&lt;/div&gt;{/if}<br />
<br />
      {if !empty(&#36;tsNoInstall)}<br />
         &lt;h4 style="margin: 6px 0;"&gt;Temas no instalados&lt;/h4&gt;<br />
         &lt;p class="emptyData"&gt;Estos son temas que estan en "&lt;u&gt;&lt;i&gt;{&#36;tsConfig.url}/themes/&lt;/i&gt;&lt;/u&gt;", pero no estan instalados en la base&lt;/p&gt;<br />
         &lt;form method="post" autocomplete="off"&gt;<br />
            &lt;input type="hidden" name="manual" value="0"&gt;<br />
            {foreach &#36;tsNoInstall key=i item=t}<br />
               &lt;div style="display: flex;justify-content: *****: center;margin-bottom: 10px;"&gt;<br />
                  &lt;div&gt;<br />
                     &lt;span&gt;&lt;b&gt;{&#36;t.nombre}&lt;/b&gt;&lt;/span&gt;<br />
                     &lt;span style="display: block;"&gt;&lt;b&gt;Carpeta&lt;/b&gt;: {&#36;t.path}&lt;/span&gt;<br />
                     &lt;span&gt;&lt;b&gt;Autor&lt;/b&gt;: {&#36;t.copy}&lt;/span&gt;<br />
                  &lt;/div&gt;<br />
                  &lt;div style="display: flex;justify-content: *****: center;"&gt;<br />
                     &lt;a href="{&#36;tsConfig.url}/admin/temas?act=nuevo&amp;path={&#36;t.path}" class="mBtn btnOk"&gt;Instalar {&#36;t.nombre}&lt;/a&gt;<br />
                  &lt;/div&gt;<br />
               &lt;/div&gt;<br />
            {/foreach}<br />
         &lt;/form&gt;<br />
      {else}<br />
         &lt;form action="" method="post" id="admin_form" autocomplete="off"&gt;<br />
            &lt;input type="hidden" name="manual" value="1"&gt;<br />
            &lt;label for="ai_path"&gt;Nombre de la carpeta donde esta el tema a instalar:&lt;br /&gt;&lt;i&gt;{&#36;tsConfig.url}/themes/&lt;/i&gt;&lt;/label&gt; <br />
            &lt;input type="text" id="ai_path" name="path" size="30" /&gt;<br />
            &lt;hr class="separator"&gt;<br />
            &lt;input type="submit" value="Instalar tema" class="mBtn btnOk"&gt;<br />
         &lt;/form&gt;<br />
      {/if}<br />
   {/if}</code></div></div><br />
Puede ser que <span style="font-weight: bold;" class="mycode_b">el atributo style</span> modifique el css, esto ya es a su gusto.<br />
<br />
Ahora pueden <span style="font-weight: bold;" class="mycode_b">agregar los themes</span> e instalar desde un botón, sin tener que estar escribiendo el nombre del tema en el input.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[MOD] Editor de CSS en Admin 3]]></title>
			<link>https://phpost.es/tema-Complementos-MOD-Editor-de-CSS-en-Admin-3</link>
			<pubDate>Tue, 15 Feb 2022 14:27:46 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-MOD-Editor-de-CSS-en-Admin-3</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Editar CSS desde la administración 3</span></span></div>
<br />
En esta versión se creará una copia de seguridad, pero una vez que hayas realizado el cambio y quieras volver a editar se sobrescribirá la copia de seguridad por el nuevo contenido.<br />
Básicamente esto es una actualización, pero no requiere que tengas este mod instalado... Ya que se puede hacer instalar cero<br />
<br />
1 - Ir a <span style="font-weight: bold;" class="mycode_b">tu-tema/js/<span style="text-decoration: underline;" class="mycode_u">admin.js</span></span> y debajo de todo agregar<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>/**<br />
 * Editar CSS<br />
 * Versión 14.02.2022<br />
*/<br />
&#36;(document).ready(() =&gt; &#36;("#opciones").on('change', e =&gt; &#36;("#mostrarCss").val(e.target.value)))<br />
var editar_css = new function() {<br />
   this.editar = () =&gt; {    <br />
      var fileCss = &#36;('input[name=archivo_css]').val();<br />
      if(this.verificar_archivo(fileCss)) { <br />
         &#36;.post(global_data.url + '/css-editar.php', 'css=' + fileCss, h =&gt; {<br />
            &#36;("textarea[name=editar_css]").html(h)<br />
            .css({<br />
               width: '100%',<br />
               height: '500px',<br />
               resize: 'vertical'<br />
            })<br />
            &#36;("textarea[name=editar_css], button[name=guardar_css]").show();<br />
         })    <br />
      }<br />
   },  <br />
   this.guardar = () =&gt; {    <br />
      var params = [<br />
         'name=' + &#36;('input[name=archivo_css]').val(),<br />
         'contenido=' + &#36;('textarea[name=editar_css]').val()<br />
      ].join('&amp;')<br />
      &#36;.post(global_data.url + '/css-guardar.php', params, h =&gt; {<br />
         mydialog.show();            <br />
         mydialog.title('Guardado...');            <br />
         mydialog.body('Los cambios fueron aplicados');<br />
         /**<br />
          * Si realizaste este cambio Registrate o inicia tu sesión para ver este contenido<br />
            mydialog.buttons([<br />
              {mostrar:true,texto:'Aceptar',accion:'admincss()',activo:true},<br />
              {mostrar:true,texto:'Cancelar',accion:'cerrar',accion:true}<br />
            ]); <br />
         */<br />
         mydialog.buttons(true, true, 'Aceptar', 'admincss()', true, false, true, 'Cancelar', 'close', true, true);  <br />
         mydialog.center();   <br />
      })<br />
   },<br />
   this.verificar_archivo = filename =&gt; {    <br />
      var ext = (/[.]/.exec(filename)) ? /[^.]+&#36;/.exec(filename.toLowerCase()) : '';    <br />
      if(ext &amp;&amp; /^(css)&#36;/.test(ext)) return true;    <br />
      else return false;<br />
   }<br />
}<br />
<br />
// Retorna <br />
admincss = () =&gt; location.href = global_data.url + '/admin/css'</code></div></div><br />
2 - Ir a <span style="font-weight: bold;" class="mycode_b">templates/t.admin.tpl</span> y buscamos<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    {elseif &#36;tsAction == 'rangos'}<br />
    {include file='admin_mods/m.admin_rangos.tpl'}</code></div></div><br />
debajo de agregamos<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    {elseif &#36;tsAction == 'css'}<br />
    {include file='admin_mods/m.admin_css.tpl'}</code></div></div><br />
3 -  Ir a <span style="font-weight: bold;" class="mycode_b">templates/admin_mods/</span> y crear un archivo llamado <span style="font-weight: bold;" class="mycode_b">m.admin_css.tpl</span> y agregar lo siguiente (Lo pueden adaptar a su theme)<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;style&gt;<br />
#opciones {<br />
    padding: 2px;<br />
}<br />
#opciones &gt; option {<br />
    padding: 2px;<br />
    margin-bottom: 4px;<br />
}<br />
&lt;/style&gt;<br />
&lt;div class="boxy-title"&gt;<br />
   &lt;h3&gt;Editar CSS&lt;/h3&gt;<br />
&lt;/div&gt;<br />
&lt;div id="res" class="boxy-content"&gt;<br />
    &lt;span class="mensajes error"&gt;Seleccione un archivo, si no se encuentra escríbalo!&lt;/span&gt;<br />
    &lt;div style="display:grid;gap:10px;grid-template-columns: 200px 1fr;"&gt;<br />
        &lt;div&gt;<br />
            &lt;select id="opciones" size="10"&gt;<br />
                &lt;option value=''&gt;Selecciona un archivo&lt;/option&gt;<br />
                {foreach &#36;tsListaCSS item=css}<br />
                    &lt;option value="{&#36;css.file_name}"&gt;{&#36;css.name}&lt;/option&gt;<br />
                {/foreach}<br />
            &lt;/select&gt;        <br />
        &lt;/div&gt;<br />
        &lt;div &gt;<br />
            &lt;div style="display: flex;"&gt;<br />
                &lt;input type="text" name="archivo_css" id="mostrarCss" placeholder="Ej: estilo.css o css/admin.css" size="15"/&gt;<br />
                &lt;button class="mBtn btnOk" style="width:120px;margin-left: 10px;" onclick="editar_css.editar(); return false;"&gt;Editar&lt;/button&gt;<br />
            &lt;/div&gt;<br />
            <br />
            &lt;textarea name="editar_css" placeholder="El contenido del css se mostrará aquí" style="margin:10px 0;display: none;"&gt;&lt;/textarea&gt;<br />
            <br />
            &lt;button class="mBtn btnPrimary" onclick="editar_css.guardar(); return false;" name="guardar_css" style="display: none;"&gt;Guardar&lt;/button&gt;<br />
        &lt;/div&gt;    <br />
    &lt;/div&gt;<br />
&lt;/div&gt;</code></div></div><br />
4 - En la misma carpeta buscan <span style="font-weight: bold;" class="mycode_b">m.admin_sidemenu.tpl</span> y buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_temas"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/temas"&gt;Temas y apariencia&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div><br />
y  agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_rangos"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/css"&gt;Editar CSS&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div> <br />
5 - Luego van a <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="text-decoration: underline;" class="mycode_u">admin.php</span></span> y buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'medals'</span><span style="color: #007700">)&nbsp;{&nbsp;<br /></span></code></div></div></div><br />
y arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">#&nbsp;EDITAR&nbsp;CSS<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'css'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsListaCSS'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obtenemos_css</span><span style="color: #007700">());&nbsp;<br /></span></code></div></div></div><br />
6 - Después en <span style="font-weight: bold;" class="mycode_b">inc/class/<span style="text-decoration: underline;" class="mycode_u">c.admin.php</span></span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">/*<br /> &nbsp; &nbsp;saveAds()<br /> &nbsp; &nbsp;*/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">saveAds</span><span style="color: #007700">()&nbsp;<br /></span></code></div></div></div><br />
y arriba agregan, para que funcione bien, tiene que haber realizado <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Actualizar a Smarty 4.0</span></a><br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">/** <br /> &nbsp; &nbsp;*&nbsp;EDITAR&nbsp;CSS<br /> &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">obtenemos_css</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Solo&nbsp;será&nbsp;esta&nbsp;extensión<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;ext&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'css'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Definimos&nbsp;una&nbsp;variable&nbsp;para&nbsp;crear&nbsp;un&nbsp;arreglo<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;lista_css&nbsp;</span><span style="color: #007700">=&nbsp;[];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Ahora&nbsp;buscaremos&nbsp;todos&nbsp;los&nbsp;css&nbsp;existentes<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;dir_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Recorremos&nbsp;todas&nbsp;las&nbsp;carpetas<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">while&nbsp;(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;dir_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">)&nbsp;continue;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">is_file</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">'/([a-zA-Z0-9_-]+&#092;.(css))/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;file_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;file_css&nbsp;</span><span style="color: #007700">!==&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;lista_css</span><span style="color: #007700">,&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">ucfirst</span><span style="color: #007700">(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">4</span><span style="color: #007700">)),</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'file_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;file_css<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">is_dir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">&#36;ext</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#36;carpeta_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;ext&nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;carpeta_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">)&nbsp;continue;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;lista_css</span><span style="color: #007700">,&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #DD0000">'name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">ucfirst</span><span style="color: #007700">(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">4</span><span style="color: #007700">)),</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #DD0000">'file_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;style<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; closedir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;carpeta_css&nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;closedir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;dir_css&nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;lista_css</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
7 - Por último van a <span style="font-weight: bold;" class="mycode_b">inc/php/ajax</span> y crean un archivo llamado <span style="font-weight: bold;" class="mycode_b">ajax.css.php</span> y pegan esto o <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">descargan este archivo</span></a>, en caso que no se cree la carpeta "<span style="font-weight: bold;" class="mycode_b">css_backup</span>", deberán crearla manualmente en <span style="font-weight: bold;" class="mycode_b">files/uploads/</span> y darle <span style="font-weight: bold;" class="mycode_b">los permisos de escritura 0777</span><br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;!&nbsp;</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'TS_HEADER'</span><span style="color: #007700">))&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;se&nbsp;permite&nbsp;el&nbsp;acceso&nbsp;directo&nbsp;al&nbsp;script'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">/**<br /> *&nbsp;Controlador&nbsp;AJAX<br /> *<br /> *&nbsp;@name&nbsp; &nbsp; ajax.css.php<br /> *&nbsp;@author&nbsp; Miguel92<br />*/<br />/**********************************&#092;<br /><br />*&nbsp; &nbsp; (VARIABLES&nbsp;POR&nbsp;DEFAULT)&nbsp; &nbsp; &nbsp; &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;NIVELES&nbsp;DE&nbsp;ACCESO&nbsp;Y&nbsp;PLANTILLAS&nbsp;DE&nbsp;CADA&nbsp;ACCIÓN<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;files&nbsp;</span><span style="color: #007700">=&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'css-editar'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">],<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'css-guardar'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">],<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*&nbsp;(VARIABLES&nbsp;LOCALES&nbsp;ESTE&nbsp;ARCHIVO)&nbsp; &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;REDEFINIR&nbsp;VARIABLES<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsPage&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'ajax/p.css.'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsLevel&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'n'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsAjax&nbsp;</span><span style="color: #007700">=&nbsp;empty(</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">])&nbsp;?&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*&nbsp; &nbsp; (INSTRUCCIONES&nbsp;DE&nbsp;CODIGO)&nbsp; &nbsp; &nbsp; &nbsp; *<br /><br />&#092;*********************************/<br /></span><span style="color: #0000BB"> &nbsp;  <br /> &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;DEPENDE&nbsp;EL&nbsp;NIVEL<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsLevelMsg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsLevel</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;tsLevelMsg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{&nbsp;echo&nbsp;</span><span style="color: #DD0000">'0:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsLevelMsg</span><span style="color: #007700">;&nbsp;die();}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">/**<br /> &nbsp; &nbsp; *&nbsp;Creamos&nbsp;la&nbsp;carpeta&nbsp;"css_backup"&nbsp;para&nbsp;almacenar&nbsp;las&nbsp;copias<br /> &nbsp; &nbsp;*/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;backups&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"../../files/uploads/css_backup"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">if(!</span><span style="color: #0000BB">is_dir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;backups</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;mkdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;backups</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;chmod</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;backups</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0777</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;myBackUp&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;backups&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/&#36;1-backup.css'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">switch(</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">){<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'css-editar'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;file_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'css'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;notExt&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">4</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;un&nbsp;backup,&nbsp;solo&nbsp;por&nbsp;seguridad<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#36;1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;notExt</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;myBackUp</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"css"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"css"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;un&nbsp;backup,&nbsp;solo&nbsp;por&nbsp;seguridad<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#36;1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;notExt</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;myBackUp</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;else&nbsp;echo&nbsp;</span><span style="color: #DD0000">'Error:&nbsp;el&nbsp;archivo&nbsp;no&nbsp;existe'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'css-guardar'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;nombre&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"name"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;contenido&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'contenido'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;contenido&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">[</span><span style="color: #DD0000">'&#092;&#092;n'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"&#039;"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&amp;quot;'</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">[</span><span style="color: #DD0000">'&#092;n'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"'"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'"'</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;contenido<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;dir&nbsp;</span><span style="color: #007700">=&nbsp;(</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;nombre</span><span style="color: #007700">))&nbsp;?&nbsp;</span><span style="color: #DD0000">"tema"&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">"css"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;dir</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;nombre</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;contenido</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
y eso sería todo, espero no haberme olvidado de algún paso.]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b">Editar CSS desde la administración 3</span></span></div>
<br />
En esta versión se creará una copia de seguridad, pero una vez que hayas realizado el cambio y quieras volver a editar se sobrescribirá la copia de seguridad por el nuevo contenido.<br />
Básicamente esto es una actualización, pero no requiere que tengas este mod instalado... Ya que se puede hacer instalar cero<br />
<br />
1 - Ir a <span style="font-weight: bold;" class="mycode_b">tu-tema/js/<span style="text-decoration: underline;" class="mycode_u">admin.js</span></span> y debajo de todo agregar<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>/**<br />
 * Editar CSS<br />
 * Versión 14.02.2022<br />
*/<br />
&#36;(document).ready(() =&gt; &#36;("#opciones").on('change', e =&gt; &#36;("#mostrarCss").val(e.target.value)))<br />
var editar_css = new function() {<br />
   this.editar = () =&gt; {    <br />
      var fileCss = &#36;('input[name=archivo_css]').val();<br />
      if(this.verificar_archivo(fileCss)) { <br />
         &#36;.post(global_data.url + '/css-editar.php', 'css=' + fileCss, h =&gt; {<br />
            &#36;("textarea[name=editar_css]").html(h)<br />
            .css({<br />
               width: '100%',<br />
               height: '500px',<br />
               resize: 'vertical'<br />
            })<br />
            &#36;("textarea[name=editar_css], button[name=guardar_css]").show();<br />
         })    <br />
      }<br />
   },  <br />
   this.guardar = () =&gt; {    <br />
      var params = [<br />
         'name=' + &#36;('input[name=archivo_css]').val(),<br />
         'contenido=' + &#36;('textarea[name=editar_css]').val()<br />
      ].join('&amp;')<br />
      &#36;.post(global_data.url + '/css-guardar.php', params, h =&gt; {<br />
         mydialog.show();            <br />
         mydialog.title('Guardado...');            <br />
         mydialog.body('Los cambios fueron aplicados');<br />
         /**<br />
          * Si realizaste este cambio Registrate o inicia tu sesión para ver este contenido<br />
            mydialog.buttons([<br />
              {mostrar:true,texto:'Aceptar',accion:'admincss()',activo:true},<br />
              {mostrar:true,texto:'Cancelar',accion:'cerrar',accion:true}<br />
            ]); <br />
         */<br />
         mydialog.buttons(true, true, 'Aceptar', 'admincss()', true, false, true, 'Cancelar', 'close', true, true);  <br />
         mydialog.center();   <br />
      })<br />
   },<br />
   this.verificar_archivo = filename =&gt; {    <br />
      var ext = (/[.]/.exec(filename)) ? /[^.]+&#36;/.exec(filename.toLowerCase()) : '';    <br />
      if(ext &amp;&amp; /^(css)&#36;/.test(ext)) return true;    <br />
      else return false;<br />
   }<br />
}<br />
<br />
// Retorna <br />
admincss = () =&gt; location.href = global_data.url + '/admin/css'</code></div></div><br />
2 - Ir a <span style="font-weight: bold;" class="mycode_b">templates/t.admin.tpl</span> y buscamos<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    {elseif &#36;tsAction == 'rangos'}<br />
    {include file='admin_mods/m.admin_rangos.tpl'}</code></div></div><br />
debajo de agregamos<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    {elseif &#36;tsAction == 'css'}<br />
    {include file='admin_mods/m.admin_css.tpl'}</code></div></div><br />
3 -  Ir a <span style="font-weight: bold;" class="mycode_b">templates/admin_mods/</span> y crear un archivo llamado <span style="font-weight: bold;" class="mycode_b">m.admin_css.tpl</span> y agregar lo siguiente (Lo pueden adaptar a su theme)<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;style&gt;<br />
#opciones {<br />
    padding: 2px;<br />
}<br />
#opciones &gt; option {<br />
    padding: 2px;<br />
    margin-bottom: 4px;<br />
}<br />
&lt;/style&gt;<br />
&lt;div class="boxy-title"&gt;<br />
   &lt;h3&gt;Editar CSS&lt;/h3&gt;<br />
&lt;/div&gt;<br />
&lt;div id="res" class="boxy-content"&gt;<br />
    &lt;span class="mensajes error"&gt;Seleccione un archivo, si no se encuentra escríbalo!&lt;/span&gt;<br />
    &lt;div style="display:grid;gap:10px;grid-template-columns: 200px 1fr;"&gt;<br />
        &lt;div&gt;<br />
            &lt;select id="opciones" size="10"&gt;<br />
                &lt;option value=''&gt;Selecciona un archivo&lt;/option&gt;<br />
                {foreach &#36;tsListaCSS item=css}<br />
                    &lt;option value="{&#36;css.file_name}"&gt;{&#36;css.name}&lt;/option&gt;<br />
                {/foreach}<br />
            &lt;/select&gt;        <br />
        &lt;/div&gt;<br />
        &lt;div &gt;<br />
            &lt;div style="display: flex;"&gt;<br />
                &lt;input type="text" name="archivo_css" id="mostrarCss" placeholder="Ej: estilo.css o css/admin.css" size="15"/&gt;<br />
                &lt;button class="mBtn btnOk" style="width:120px;margin-left: 10px;" onclick="editar_css.editar(); return false;"&gt;Editar&lt;/button&gt;<br />
            &lt;/div&gt;<br />
            <br />
            &lt;textarea name="editar_css" placeholder="El contenido del css se mostrará aquí" style="margin:10px 0;display: none;"&gt;&lt;/textarea&gt;<br />
            <br />
            &lt;button class="mBtn btnPrimary" onclick="editar_css.guardar(); return false;" name="guardar_css" style="display: none;"&gt;Guardar&lt;/button&gt;<br />
        &lt;/div&gt;    <br />
    &lt;/div&gt;<br />
&lt;/div&gt;</code></div></div><br />
4 - En la misma carpeta buscan <span style="font-weight: bold;" class="mycode_b">m.admin_sidemenu.tpl</span> y buscan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_temas"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/temas"&gt;Temas y apariencia&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div><br />
y  agregan<br />
 <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;li id="a_rangos"&gt;&lt;span class="cat-title"&gt;&lt;a href="{&#36;tsConfig.url}/admin/css"&gt;Editar CSS&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;</code></div></div> <br />
5 - Luego van a <span style="font-weight: bold;" class="mycode_b">inc/php/<span style="text-decoration: underline;" class="mycode_u">admin.php</span></span> y buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'medals'</span><span style="color: #007700">)&nbsp;{&nbsp;<br /></span></code></div></div></div><br />
y arriba agregan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #FF8000">#&nbsp;EDITAR&nbsp;CSS<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">&#36;action&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #DD0000">'css'</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">assign</span><span style="color: #007700">(</span><span style="color: #DD0000">'tsListaCSS'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;tsAdmin</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">obtenemos_css</span><span style="color: #007700">());&nbsp;<br /></span></code></div></div></div><br />
6 - Después en <span style="font-weight: bold;" class="mycode_b">inc/class/<span style="text-decoration: underline;" class="mycode_u">c.admin.php</span></span> buscan<br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">/*<br /> &nbsp; &nbsp;saveAds()<br /> &nbsp; &nbsp;*/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">saveAds</span><span style="color: #007700">()&nbsp;<br /></span></code></div></div></div><br />
y arriba agregan, para que funcione bien, tiene que haber realizado <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">Actualizar a Smarty 4.0</span></a><br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB"> &nbsp; </span><span style="color: #FF8000">/** <br /> &nbsp; &nbsp;*&nbsp;EDITAR&nbsp;CSS<br /> &nbsp; */<br /></span><span style="color: #0000BB"> &nbsp; public&nbsp;</span><span style="color: #007700">function&nbsp;</span><span style="color: #0000BB">obtenemos_css</span><span style="color: #007700">()&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">global&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Solo&nbsp;será&nbsp;esta&nbsp;extensión<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;ext&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'css'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Definimos&nbsp;una&nbsp;variable&nbsp;para&nbsp;crear&nbsp;un&nbsp;arreglo<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;lista_css&nbsp;</span><span style="color: #007700">=&nbsp;[];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Ahora&nbsp;buscaremos&nbsp;todos&nbsp;los&nbsp;css&nbsp;existentes<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;&#36;dir_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Recorremos&nbsp;todas&nbsp;las&nbsp;carpetas<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">while&nbsp;(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;dir_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">)&nbsp;continue;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if</span><span style="color: #007700">(</span><span style="color: #0000BB">is_file</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;preg_match_all</span><span style="color: #007700">(</span><span style="color: #DD0000">'/([a-zA-Z0-9_-]+&#092;.(css))/'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;file_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;file_css&nbsp;</span><span style="color: #007700">!==&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;lista_css</span><span style="color: #007700">,&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">ucfirst</span><span style="color: #007700">(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">4</span><span style="color: #007700">)),</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'file_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;file_css<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; if&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">is_dir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #0000BB">&#36;ext</span><span style="color: #007700">)&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#36;carpeta_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">opendir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;ext&nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">readdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;carpeta_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'.'&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">&#36;style&nbsp;</span><span style="color: #007700">===&nbsp;</span><span style="color: #DD0000">'..'</span><span style="color: #007700">)&nbsp;continue;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;array_push</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;lista_css</span><span style="color: #007700">,&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #DD0000">'name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">ucfirst</span><span style="color: #007700">(</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;style</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">4</span><span style="color: #007700">)),</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #DD0000">'file_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">&#36;style<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; closedir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;carpeta_css&nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;closedir</span><span style="color: #007700">(&nbsp;</span><span style="color: #0000BB">&#36;dir_css&nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">return&nbsp;</span><span style="color: #0000BB">&#36;lista_css</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; </span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
7 - Por último van a <span style="font-weight: bold;" class="mycode_b">inc/php/ajax</span> y crean un archivo llamado <span style="font-weight: bold;" class="mycode_b">ajax.css.php</span> y pegan esto o <a href="http://Registrate%20o%20inicia%20tu%20sesión%20para%20ver%20este%20contenido" target="_blank" rel="noopener" class="mycode_url"><span style="font-weight: bold;" class="mycode_b">descargan este archivo</span></a>, en caso que no se cree la carpeta "<span style="font-weight: bold;" class="mycode_b">css_backup</span>", deberán crearla manualmente en <span style="font-weight: bold;" class="mycode_b">files/uploads/</span> y darle <span style="font-weight: bold;" class="mycode_b">los permisos de escritura 0777</span><br />
 <br />
<div class="codeblock phpcodeblock"><div class="title">Código PHP:</div><div class="body"><div dir="ltr"><code><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(&nbsp;!&nbsp;</span><span style="color: #0000BB">defined</span><span style="color: #007700">(</span><span style="color: #DD0000">'TS_HEADER'</span><span style="color: #007700">))&nbsp;exit(</span><span style="color: #DD0000">'No&nbsp;se&nbsp;permite&nbsp;el&nbsp;acceso&nbsp;directo&nbsp;al&nbsp;script'</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">/**<br /> *&nbsp;Controlador&nbsp;AJAX<br /> *<br /> *&nbsp;@name&nbsp; &nbsp; ajax.css.php<br /> *&nbsp;@author&nbsp; Miguel92<br />*/<br />/**********************************&#092;<br /><br />*&nbsp; &nbsp; (VARIABLES&nbsp;POR&nbsp;DEFAULT)&nbsp; &nbsp; &nbsp; &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;NIVELES&nbsp;DE&nbsp;ACCESO&nbsp;Y&nbsp;PLANTILLAS&nbsp;DE&nbsp;CADA&nbsp;ACCIÓN<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;files&nbsp;</span><span style="color: #007700">=&nbsp;[<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'css-editar'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">],<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #DD0000">'css-guardar'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;[</span><span style="color: #DD0000">'n'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'p'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">],<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">];<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*&nbsp;(VARIABLES&nbsp;LOCALES&nbsp;ESTE&nbsp;ARCHIVO)&nbsp; &nbsp; *<br /><br />&#092;*********************************/<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;REDEFINIR&nbsp;VARIABLES<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsPage&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'ajax/p.css.'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsLevel&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'n'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsAjax&nbsp;</span><span style="color: #007700">=&nbsp;empty(</span><span style="color: #0000BB">&#36;files</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">][</span><span style="color: #DD0000">'p'</span><span style="color: #007700">])&nbsp;?&nbsp;</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">/**********************************&#092;<br /><br />*&nbsp; &nbsp; (INSTRUCCIONES&nbsp;DE&nbsp;CODIGO)&nbsp; &nbsp; &nbsp; &nbsp; *<br /><br />&#092;*********************************/<br /></span><span style="color: #0000BB"> &nbsp;  <br /> &nbsp; &nbsp;</span><span style="color: #FF8000">//&nbsp;DEPENDE&nbsp;EL&nbsp;NIVEL<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;tsLevelMsg&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;tsLevel</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">&#36;tsLevelMsg&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;{&nbsp;echo&nbsp;</span><span style="color: #DD0000">'0:&nbsp;'</span><span style="color: #007700">.</span><span style="color: #0000BB">&#36;tsLevelMsg</span><span style="color: #007700">;&nbsp;die();}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #FF8000">/**<br /> &nbsp; &nbsp; *&nbsp;Creamos&nbsp;la&nbsp;carpeta&nbsp;"css_backup"&nbsp;para&nbsp;almacenar&nbsp;las&nbsp;copias<br /> &nbsp; &nbsp;*/<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;backups&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"../../files/uploads/css_backup"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">if(!</span><span style="color: #0000BB">is_dir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;backups</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;mkdir</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;backups</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;chmod</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;backups</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0777</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;&#36;myBackUp&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;backups&nbsp;</span><span style="color: #007700">.&nbsp;</span><span style="color: #DD0000">'/&#36;1-backup.css'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">switch(</span><span style="color: #0000BB">&#36;action</span><span style="color: #007700">){<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'css-editar'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;file_css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'css'</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;notExt&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">substr</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;-</span><span style="color: #0000BB">4</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">if(</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;un&nbsp;backup,&nbsp;solo&nbsp;por&nbsp;seguridad<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#36;1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;notExt</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;myBackUp</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;elseif(</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"css"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">))&nbsp;{<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"css"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;file_css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #FF8000">#&nbsp;Creamos&nbsp;un&nbsp;backup,&nbsp;solo&nbsp;por&nbsp;seguridad<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'&#36;1'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;notExt</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;myBackUp</span><span style="color: #007700">),&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;else&nbsp;echo&nbsp;</span><span style="color: #DD0000">'Error:&nbsp;el&nbsp;archivo&nbsp;no&nbsp;existe'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">case&nbsp;</span><span style="color: #DD0000">'css-guardar'</span><span style="color: #007700">:<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;nombre&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;tsCore</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setSecure</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"name"</span><span style="color: #007700">]);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;contenido&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">'contenido'</span><span style="color: #007700">];<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;contenido&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">[</span><span style="color: #DD0000">'&#092;&#092;n'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"&#039;"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'&amp;quot;'</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">[</span><span style="color: #DD0000">'&#092;n'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"'"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'"'</span><span style="color: #007700">],</span><span style="color: #0000BB"> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;contenido<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;dir&nbsp;</span><span style="color: #007700">=&nbsp;(</span><span style="color: #0000BB">file_exists</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #DD0000">"tema"</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;nombre</span><span style="color: #007700">))&nbsp;?&nbsp;</span><span style="color: #DD0000">"tema"&nbsp;</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">"css"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#36;css&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">&#36;smarty</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">template_dir</span><span style="color: #007700">[</span><span style="color: #0000BB">&#36;dir</span><span style="color: #007700">]&nbsp;.&nbsp;</span><span style="color: #0000BB">&#36;nombre</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;file_put_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">&#36;css</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">&#36;contenido</span><span style="color: #007700">);<br /></span><span style="color: #0000BB"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span style="color: #007700">break;<br /></span><span style="color: #0000BB"> &nbsp; &nbsp;</span><span style="color: #007700">}&nbsp;<br /></span></code></div></div></div><br />
y eso sería todo, espero no haberme olvidado de algún paso.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pequeño ajuste para los botones del modal]]></title>
			<link>https://phpost.es/tema-Complementos-Peque%C3%B1o-ajuste-para-los-botones-del-modal</link>
			<pubDate>Mon, 14 Feb 2022 19:34:22 +0100</pubDate>
			<dc:creator><![CDATA[<a href="https://phpost.es/member.php?action=profile&uid=23">Miguel92</a>]]></dc:creator>
			<guid isPermaLink="false">https://phpost.es/tema-Complementos-Peque%C3%B1o-ajuste-para-los-botones-del-modal</guid>
			<description><![CDATA[Bueno hace tiempo hice este cambio para el modal, el cual facilitaría la creaciones de modales con botones.<br />
 <br />
Antes se tenia que usar así: <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons(true, true, 'SI', "bloquear('"+user+"', true, '"+lugar+"', true)", true, false, true, 'NO', 'close', true, true); </code></div></div><br />
Ahora es poco más largo, pero más fácil de entender<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons([<br />
&nbsp;&nbsp; {mostrar:true,texto:'SI',accion:"bloquear('"+user+"', true, '"+lugar+"', true)",activo:true},<br />
&nbsp;&nbsp; {mostrar:true,texto:'NO',accion:'cerrar',activo:true}<br />
]) </code></div></div><br />
Tiene varias maneras de poder emplearlo, la primera es como se muestra en el código de arriba ↑ y las otras 2 son de estas formas:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons({mostrar:true,texto:'SI',accion:"bloquear('"+user+"', true, '"+lugar+"', true)",activo:true})</code></div></div><div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons(false) // Puede ser true</code></div></div>Y se le podrá agregar más de 2 botones, puede ser 3, 4, etc...<br />
 <br />
Vamos al archivo <span style="font-weight: bold;" class="mycode_b">acciones.js</span>, buscamos<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>buttons: function(display_all, btn1_display, btn1_val, btn1_action, btn1_enabled, btn1_focus, btn2_display, btn2_val, btn2_action, btn2_enabled, btn2_focus){<br />
... TODO EL CODIGO INCLUIDO ...<br />
},</code></div></div><br />
La reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>buttons: function(object) {<br />
    let agregar_botones = '';<br />
    // Es un objeto...<br />
    if(typeof object === 'object') {<br />
        // Es un Arreglo (array)...<br />
        if(Array.isArray(object)) {<br />
            for(let i = 0; i &lt; object.length; i++) {<br />
            if(object.mostrar) {<br />
                let clase = !empty(object.clase) ? object.clase : (!i ? 'btnOk' : 'btnCancel');<br />
                let activo = object.activo ? '' : ' disabled'<br />
// Si la acción es igual a "cerrar"<br />
               let accion = (object.accion == 'cerrar') ? ` onclick="mydialog.close()"` : ` onclick="&#36;{object.accion}"`<br />
                agregar_botones += `&lt;input type="button" class="mBtn &#36;{clase}&#36;{activo}" style="display:inline-block" value="&#36;{object.texto}"&#36;{accion}&#36;{activo} &gt;`;<br />
            }<br />
            }<br />
        } else {<br />
            if(object.mostrar) {<br />
            let clase = !empty(object.clase) ? object.clase : 'btnOk';<br />
            let activo = object.activo ? '' : ' disabled'<br />
// Si la acción es igual a "cerrar" o contiene una función<br />
            let accion = (object.accion == 'cerrar') ? `onclick="mydialog.close()"` : ` onclick="&#36;{object.accion}"`<br />
            agregar_botones += `&lt;input type="button" class="mBtn &#36;{clase}&#36;{activo}" style="display:inline-block" value="&#36;{object.texto}"&#36;{accion}&#36;{activo}&gt;`;<br />
            }<br />
        }<br />
// Si el boolean es TRUE entonces mostrará este botón por defecto, si es FALSE no mostrará nada<br />
    } else if(typeof object === 'boolean') {<br />
        agregar_botones += object ? `&lt;input type="button" class="mBtn btnOk" style="display:inline-block" value="Aceptar" onclick="mydialog.close()"&gt;` : ''<br />
    }<br />
   &#36;('#mydialog #buttons').html(agregar_botones)<br />
}, </code></div></div><br />
El objeto que se puede pasar, si solo contendrá un botón pude ir solo el objeto, en caso que sean 2 o más botones deberá ir así<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>[ <br />
   { ... PARAMETROS DEL OBJETO 1 ... },<br />
   { ... PARAMETROS DEL OBJETO 2 ... }<br />
]</code></div></div><br />
Los parámetros que se pueden usar<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{<br />
   mostrar: boolean, // TRUE o FALSE<br />
   texto: string,  // El texto que se mostrará<br />
   accion: string, // Función que se empleará o "cerrar"<br />
   activo: boolean, // TRUE o FALSE<br />
   clase: string // Opcional, puede incluir clase para modificar la apariencia del botón<br />
} </code></div></div><br />
Espero que sea clara la explicación y lo puedan entender...]]></description>
			<content:encoded><![CDATA[Bueno hace tiempo hice este cambio para el modal, el cual facilitaría la creaciones de modales con botones.<br />
 <br />
Antes se tenia que usar así: <br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons(true, true, 'SI', "bloquear('"+user+"', true, '"+lugar+"', true)", true, false, true, 'NO', 'close', true, true); </code></div></div><br />
Ahora es poco más largo, pero más fácil de entender<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons([<br />
&nbsp;&nbsp; {mostrar:true,texto:'SI',accion:"bloquear('"+user+"', true, '"+lugar+"', true)",activo:true},<br />
&nbsp;&nbsp; {mostrar:true,texto:'NO',accion:'cerrar',activo:true}<br />
]) </code></div></div><br />
Tiene varias maneras de poder emplearlo, la primera es como se muestra en el código de arriba ↑ y las otras 2 son de estas formas:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons({mostrar:true,texto:'SI',accion:"bloquear('"+user+"', true, '"+lugar+"', true)",activo:true})</code></div></div><div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>mydialog.buttons(false) // Puede ser true</code></div></div>Y se le podrá agregar más de 2 botones, puede ser 3, 4, etc...<br />
 <br />
Vamos al archivo <span style="font-weight: bold;" class="mycode_b">acciones.js</span>, buscamos<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>buttons: function(display_all, btn1_display, btn1_val, btn1_action, btn1_enabled, btn1_focus, btn2_display, btn2_val, btn2_action, btn2_enabled, btn2_focus){<br />
... TODO EL CODIGO INCLUIDO ...<br />
},</code></div></div><br />
La reemplazamos por<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>buttons: function(object) {<br />
    let agregar_botones = '';<br />
    // Es un objeto...<br />
    if(typeof object === 'object') {<br />
        // Es un Arreglo (array)...<br />
        if(Array.isArray(object)) {<br />
            for(let i = 0; i &lt; object.length; i++) {<br />
            if(object.mostrar) {<br />
                let clase = !empty(object.clase) ? object.clase : (!i ? 'btnOk' : 'btnCancel');<br />
                let activo = object.activo ? '' : ' disabled'<br />
// Si la acción es igual a "cerrar"<br />
               let accion = (object.accion == 'cerrar') ? ` onclick="mydialog.close()"` : ` onclick="&#36;{object.accion}"`<br />
                agregar_botones += `&lt;input type="button" class="mBtn &#36;{clase}&#36;{activo}" style="display:inline-block" value="&#36;{object.texto}"&#36;{accion}&#36;{activo} &gt;`;<br />
            }<br />
            }<br />
        } else {<br />
            if(object.mostrar) {<br />
            let clase = !empty(object.clase) ? object.clase : 'btnOk';<br />
            let activo = object.activo ? '' : ' disabled'<br />
// Si la acción es igual a "cerrar" o contiene una función<br />
            let accion = (object.accion == 'cerrar') ? `onclick="mydialog.close()"` : ` onclick="&#36;{object.accion}"`<br />
            agregar_botones += `&lt;input type="button" class="mBtn &#36;{clase}&#36;{activo}" style="display:inline-block" value="&#36;{object.texto}"&#36;{accion}&#36;{activo}&gt;`;<br />
            }<br />
        }<br />
// Si el boolean es TRUE entonces mostrará este botón por defecto, si es FALSE no mostrará nada<br />
    } else if(typeof object === 'boolean') {<br />
        agregar_botones += object ? `&lt;input type="button" class="mBtn btnOk" style="display:inline-block" value="Aceptar" onclick="mydialog.close()"&gt;` : ''<br />
    }<br />
   &#36;('#mydialog #buttons').html(agregar_botones)<br />
}, </code></div></div><br />
El objeto que se puede pasar, si solo contendrá un botón pude ir solo el objeto, en caso que sean 2 o más botones deberá ir así<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>[ <br />
   { ... PARAMETROS DEL OBJETO 1 ... },<br />
   { ... PARAMETROS DEL OBJETO 2 ... }<br />
]</code></div></div><br />
Los parámetros que se pueden usar<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>{<br />
   mostrar: boolean, // TRUE o FALSE<br />
   texto: string,  // El texto que se mostrará<br />
   accion: string, // Función que se empleará o "cerrar"<br />
   activo: boolean, // TRUE o FALSE<br />
   clase: string // Opcional, puede incluir clase para modificar la apariencia del botón<br />
} </code></div></div><br />
Espero que sea clara la explicación y lo puedan entender...]]></content:encoded>
		</item>
	</channel>
</rss>