¡Bienvenido a PHPost!

Para participar en el foro, descargar complementos y acceder al chat, es necesario tener una cuenta activa. Regístrate con un correo válido para completar la activación.

⚖️ Aviso Legal y Normas de Contenido

PHPost.es es una comunidad dedicada al soporte, desarrollo y difusión de software libre para la creación y administración de comunidades en línea.

Compromiso con la legalidad: No se permite la publicación, promoción o distribución de software pirateado, contenido warez ni material que infrinja derechos de autor o cualquier otra normativa aplicable.

Responsabilidad: Cada usuario es responsable del contenido alojado en su propio sitio web y del uso que haga del software. Los administradores y desarrolladores de Risus Nova no controlan ni supervisan los servidores o contenidos gestionados por terceros.

⚠️ Aviso de seguridad

Risus Nova se distribuye únicamente a través de phpost.es, que es la fuente oficial del proyecto donde publicamos las versiones verificadas.

Recomendamos no utilizar copias obtenidas desde sitios de terceros, ya que podrían haber sido modificadas y no contar con la integridad del código original, lo que puede suponer riesgos de seguridad en la instalación.

Para garantizar una instalación segura y actualizada, descarga siempre la versión oficial desde el botón disponible en esta página.

Importante: No pediremos donaciones en ningún momento ni en ninguna plataforma (Ko-fi, PayPal, redes sociales u otras). Si encuentras campañas de donación que utilicen el nombre de Risus Nova o PHPost, no tienen ninguna relación con el proyecto.

🔄 Desarrollo activo

Risus Nova forma parte de una nueva etapa del proyecto PHPost, en evolución constante con mejoras, correcciones y nuevas funciones. Puedes seguir el progreso y los cambios oficiales a través del changelog y la comunidad.

Risus Nova 2.1 Estable Desarrollo activo Última actualización: 12/07/2026 Ver Demo Changelog 261 Desarrollo del tema: 75% (fase actual de desarrollo) Descargar
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Comprobar temas instalados
#1

1
Mejor respuesta del mensaje Comprobar temas instaladosPara esto deben tener los temas en la carpeta "themes" y Debes agradecer para ver el contenido..., ya que utilizaremos la configuración hecha en smarty.config.php

 
1 - Buscan en inc/class/c.admin.php
    /*
    getTemas()
    */
    function getTemas() 

Arriba agregaremos lo siguiente
   # Buscamos los temas no instalados
   public function temas_no_instalados() {
      global $smarty;
      # Arreglo de temas sin intalar
      $no_instalado = [];
      # Esto esta configurado en smarty.config.php
      # Primero buscamos en la carpeta themes si hay un theme sin instalar
      $themes opendir$smarty->template_dir["themes"] );
      # Recorremos toda la carpeta de themes
      while ($theme readdir($themes)) {
         if($theme != '.' && $theme != '..'):
            # Obtenemos el archivo de instalacion
            include $smarty->template_dir["themes"] . $theme "/install.php";
            # Ahora comprobamos si esta instalado
            if(!db_exec('fetch_assoc'db_exec([__FILE____LINE__], "query""SELECT tid FROM w_temas WHERE t_path = '{$theme}' LIMIT 1"))["tid"]) {
               array_push($no_instalado, [
                  "nombre" => $tema["nombre"], 
                  
"path" => $tema["path"],
                  "copy" => $tema["copy"]
               ]);
            }
         endif;
      }
      return $no_instalado;
   

luego un poco más abajo buscamos
function newTema()
    {
        global $tsCore;
        //
        $tema_path $tsCore->setSecure($_POST['path']);
        // ARCHIVO DE INSTALACION
        include ("../../themes/" $tema_path '/install.php');
        //
        if (empty($tema))
            return 'Revisa que la carpeta del tema sea correcta.';
        foreach ($tema as $key => $val)
        {
            if (empty($val))
                return 'El archivo de instalación del tema es incorrecto. Recuerda utilizar temas oficiales.';
            else
                $temadb[$key] = $tsCore->setSecure($val);
        }
        // NUEVO
        if (db_exec(array(__FILE____LINE__), 'query''INSERT INTO `w_temas` (`t_name`, `t_url`, `t_path`, `t_copy`) VALUES (\'' .
            $tsCore->setSecure($temadb['nombre']) . '\', \'' $tsCore->setSecure($temadb['url']) .
            '\', \'' $tsCore->setSecure($tema_path) . '\', \'' $tsCore->setSecure($temadb['copy']) .
            '\')'))
            return 1;
        else
            return 'Ocurrió un error durante la instalación. Consulta el foro ofcial de PHPost.';
    

y la reemplazaremos por
   public function newTema() {
      global $tsCore$smarty;
      # ARCHIVO DE INSTALACION
      $method = (isset($_GET["path"])) ? $_GET["path"] : $_POST["path"];
      include $smarty->template_dir["themes"] . $tsCore->setSecure($method) . "/install.php";
      # Instalando usando directamente el botón de "instalar tema"
      $name $tsCore->setSecure($tema['nombre']);
      $path $tsCore->setSecure($tema['path']);
      $url $tsCore->settings['url'] . '/themes/' $path;
      $copy $tsCore->setSecure($tema['copy']);
      # Si hay un problema en la carpeta
      if(empty($tema)) $data["error"] = 'Revisa que la carpeta del tema sea correcta.';
      # Instalamos el tema
      if(db_exec([__FILE____LINE__], "query""INSERT INTO w_temas (t_name, t_path, t_url, t_copy) VALUES ('{$name}', '{$path}', '{$url}', '{$copy}')")) {
         return true;
      } else return $data["error"] = 'Ocurrió un error durante la instalación. Consulta el foro ofcial de PHPost.';
   }  


2 - Ahora buscamos en inc/php/admin.php
} elseif($action == 'temas'){ 

y debajo pegamos
$tni $tsAdmin->temas_no_instalados(); 

un poco más abajo buscan
$smarty->assign("tsTemas",$tsAdmin->getTemas()); 

y debajo agregan
$smarty->assign("tsNoTemas"count($tni)); 

más abajo buscan
        } elseif($act == 'nuevo'){
            // GUARDAR
            if(!empty($_POST['path'])) {
                $install $tsAdmin->newTema();
                if($install == 1$tsCore->redirectTo($tsCore->settings['url'].'/admin/temas?save=true');
                else $smarty->assign("tsError",$install);
            }
        

y debajo agregan
        } elseif($act == 'nuevo'){
            # Primero buscamos si hay temas sin instalar
            $smarty->assign("tsNoInstall"$tni);
            # Guardamos
            if(!empty($_POST['path']) or !empty($_GET['path'])) {
                if($tsAdmin->newTema()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/temas?save=true');
                else $smarty->assign("tsError"$install["error"]);
            }
        

3 - Ahora vamos a nuestro tema templates/admin_mods/m.admin_temas.tpl y buscamos
<div class="boxy-title">
   <h3>Administrar Temas</h3>
</div>

y la reemplazamos por
<div class="boxy-title" style="display: flex;justify-content: *****: center;">
   <h3>Administrar Temas</h3>
   {if $tsNoTemas >= 1}
      <span>Hay <b>{$tsNoTemas} tema{if $tsNoTemas > 1}s{/if}</b>  sin instalar</span>
   {/if}
</div>

luego más abajo buscamos
    {elseif $tsAct == 'nuevo'}
    {if $tsError}<div style="display: block;" class="mensajes error">{$tsError}</div>{/if}
    <form action="" method="post" id="admin_form" autocomplete="off">
        <label for="ai_path">Nombre de la carpeta donde esta el tema a instalar:<br /><i>{$tsConfig.url}/themes/</i></label> <input type="text" id="ai_path" name="path" size="30" />
        <hr />
        <label> </label> <input type="submit" value="Instalar tema" class="mBtn btnOk">
    </form>
    {/if}

y lo reemplazamos por
   {elseif $tsAct == 'nuevo'}
      {if $tsError}<div class="alerts error">{$tsError}</div>{/if}

      {if !empty($tsNoInstall)}
         <h4 style="margin: 6px 0;">Temas no instalados</h4>
         <p class="emptyData">Estos son temas que estan en "<u><i>{$tsConfig.url}/themes/</i></u>", pero no estan instalados en la base</p>
         <form method="post" autocomplete="off">
            <input type="hidden" name="manual" value="0">
            {foreach $tsNoInstall key=i item=t}
               <div style="display: flex;justify-content: *****: center;margin-bottom: 10px;">
                  <div>
                     <span><b>{$t.nombre}</b></span>
                     <span style="display: block;"><b>Carpeta</b>: {$t.path}</span>
                     <span><b>Autor</b>: {$t.copy}</span>
                  </div>
                  <div style="display: flex;justify-content: *****: center;">
                     <a href="{$tsConfig.url}/admin/temas?act=nuevo&path={$t.path}" class="mBtn btnOk">Instalar {$t.nombre}</a>
                  </div>
               </div>
            {/foreach}
         </form>
      {else}
         <form action="" method="post" id="admin_form" autocomplete="off">
            <input type="hidden" name="manual" value="1">
            <label for="ai_path">Nombre de la carpeta donde esta el tema a instalar:<br /><i>{$tsConfig.url}/themes/</i></label> 
            <input type="text" id="ai_path" name="path" size="30" />
            <hr class="separator">
            <input type="submit" value="Instalar tema" class="mBtn btnOk">
         </form>
      {/if}
   {/if}

Puede ser que el atributo style modifique el css, esto ya es a su gusto.

Ahora pueden agregar los themes e instalar desde un botón, sin tener que estar escribiendo el nombre del tema en el input.
Responder Compartir


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)