¡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 [MOD] Editor de CSS en Admin 3
#1

5
Mejor respuesta del mensaje [MOD] Editor de CSS en Admin 3
Editar CSS desde la administración 3

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.
Básicamente esto es una actualización, pero no requiere que tengas este mod instalado... Ya que se puede hacer instalar cero

1 - Ir a tu-tema/js/admin.js y debajo de todo agregar
 
/**
 * Editar CSS
 * Versión 14.02.2022
*/
$(document).ready(() => $("#opciones").on('change', e => $("#mostrarCss").val(e.target.value)))
var editar_css = new function() {
   this.editar = () => {    
      var fileCss = $('input[name=archivo_css]').val();
      if(this.verificar_archivo(fileCss)) { 
         $.post(global_data.url + '/css-editar.php', 'css=' + fileCss, h => {
            $("textarea[name=editar_css]").html(h)
            .css({
               width: '100%',
               height: '500px',
               resize: 'vertical'
            })
            $("textarea[name=editar_css], button[name=guardar_css]").show();
         })    
      }
   },  
   this.guardar = () => {    
      var params = [
         'name=' + $('input[name=archivo_css]').val(),
         'contenido=' + $('textarea[name=editar_css]').val()
      ].join('&')
      $.post(global_data.url + '/css-guardar.php', params, h => {
         mydialog.show();            
         mydialog.title('Guardado...');            
         mydialog.body('Los cambios fueron aplicados');
         /**
          * Si realizaste este cambio Registrate o inicia tu sesión para ver este contenido
            mydialog.buttons([
              {mostrar:true,texto:'Aceptar',accion:'admincss()',activo:true},
              {mostrar:true,texto:'Cancelar',accion:'cerrar',accion:true}
            ]); 
         */
         mydialog.buttons(true, true, 'Aceptar', 'admincss()', true, false, true, 'Cancelar', 'close', true, true);  
         mydialog.center();   
      })
   },
   this.verificar_archivo = filename => {    
      var ext = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : '';    
      if(ext && /^(css)$/.test(ext)) return true;    
      else return false;
   }
}

// Retorna 
admincss = () => location.href = global_data.url + '/admin/css'

2 - Ir a templates/t.admin.tpl y buscamos
 
    {elseif $tsAction == 'rangos'}
    {include file='admin_mods/m.admin_rangos.tpl'}

debajo de agregamos
 
    {elseif $tsAction == 'css'}
    {include file='admin_mods/m.admin_css.tpl'}

3 -  Ir a templates/admin_mods/ y crear un archivo llamado m.admin_css.tpl y agregar lo siguiente (Lo pueden adaptar a su theme)
 
<style>
#opciones {
    padding: 2px;
}
#opciones > option {
    padding: 2px;
    margin-bottom: 4px;
}
</style>
<div class="boxy-title">
   <h3>Editar CSS</h3>
</div>
<div id="res" class="boxy-content">
    <span class="mensajes error">Seleccione un archivo, si no se encuentra escríbalo!</span>
    <div style="display:grid;gap:10px;grid-template-columns: 200px 1fr;">
        <div>
            <select id="opciones" size="10">
                <option value=''>Selecciona un archivo</option>
                {foreach $tsListaCSS item=css}
                    <option value="{$css.file_name}">{$css.name}</option>
                {/foreach}
            </select>        
        </div>
        <div >
            <div style="display: flex;">
                <input type="text" name="archivo_css" id="mostrarCss" placeholder="Ej: estilo.css o css/admin.css" size="15"/>
                <button class="mBtn btnOk" style="width:120px;margin-left: 10px;" onclick="editar_css.editar(); return false;">Editar</button>
            </div>
            
            <textarea name="editar_css" placeholder="El contenido del css se mostrará aquí" style="margin:10px 0;display: none;"></textarea>
            
            <button class="mBtn btnPrimary" onclick="editar_css.guardar(); return false;" name="guardar_css" style="display: none;">Guardar</button>
        </div>    
    </div>
</div>

4 - En la misma carpeta buscan m.admin_sidemenu.tpl y buscan
 
<li id="a_temas"><span class="cat-title"><a href="{$tsConfig.url}/admin/temas">Temas y apariencia</a></span></li>

y  agregan
 
<li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/css">Editar CSS</a></span></li>
 
5 - Luego van a inc/php/admin.php y buscan
 
} elseif($action == 'medals') { 

y arriba agregan
 
# EDITAR CSS
    } elseif($action == 'css') {
        $smarty->assign('tsListaCSS'$tsAdmin->obtenemos_css()); 

6 - Después en inc/class/c.admin.php buscan
 
    /*
    saveAds()
    */
    function saveAds() 

y arriba agregan, para que funcione bien, tiene que haber realizado Debes agradecer para ver el contenido...
 
   /** 
    * EDITAR CSS
   */
   public function obtenemos_css() {
      global $smarty;
      # Solo será esta extensión
      $ext 'css';
      # Definimos una variable para crear un arreglo
      $lista_css = [];
      # Ahora buscaremos todos los css existentes
      $dir_css opendir$smarty->template_dir["tema"] );
      # Recorremos todas las carpetas
      while ($style readdir($dir_css)) {
         if($style === '.' || $style === '..') continue;
         if(is_file($smarty->template_dir["tema"] . $style)) {
            preg_match_all('/([a-zA-Z0-9_-]+\.(css))/'$style$css);
            $file_css $css[1][0];
            if($file_css !== NULL) {
               array_push($lista_css, [
                  'name' => ucfirst(substr($file_css0, -4)), 
                  
'file_name' => $file_css
               
]);
            }
         }
         if (is_dir($smarty->template_dir["tema"] . $style)) {
            if($style === $ext) {
               $carpeta_css opendir$smarty->template_dir["tema"] . $ext );
               while ($style readdir($carpeta_css)) {
                  if($style === '.' || $style === '..') continue;
                  array_push($lista_css, [
                     'name' => ucfirst(substr($style0, -4)), 
                     
'file_name' => $style
                  
]);
               }
               closedir$carpeta_css );
            }
         }
      }
      closedir$dir_css );
      return $lista_css;
   

7 - Por último van a inc/php/ajax y crean un archivo llamado ajax.css.php y pegan esto o Debes agradecer para ver el contenido..., en caso que no se cree la carpeta "css_backup", deberán crearla manualmente en files/uploads/ y darle los permisos de escritura 0777
 
<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');
/**
 * Controlador AJAX
 *
 * @name    ajax.css.php
 * @author  Miguel92
*/
/**********************************\

*    (VARIABLES POR DEFAULT)        *

\*********************************/

    // NIVELES DE ACCESO Y PLANTILLAS DE CADA ACCIÓN
    $files = [
        'css-editar' => ['n' => 2'p' => ''],
        'css-guardar' => ['n' => 2'p' => ''],
    ];

/**********************************\

* (VARIABLES LOCALES ESTE ARCHIVO)    *

\*********************************/

    // REDEFINIR VARIABLES
    $tsPage 'ajax/p.css.'.$files[$action]['p'];
    $tsLevel $files[$action]['n'];
    $tsAjax = empty($files[$action]['p']) ? 0;

/**********************************\

*    (INSTRUCCIONES DE CODIGO)        *

\*********************************/
    
    
// DEPENDE EL NIVEL
    $tsLevelMsg $tsCore->setLevel($tsLeveltrue);
    if($tsLevelMsg != 1) { echo '0: '.$tsLevelMsg; die();}

    /**
     * Creamos la carpeta "css_backup" para almacenar las copias
    */
    $backups "../../files/uploads/css_backup";
    if(!is_dir($backups)) {
        mkdir($backups);
        chmod($backups0777);
    }

    $myBackUp $backups '/$1-backup.css';

    switch($action){
        case 'css-editar':
            $file_css $tsCore->setSecure($_POST['css'], true);
            $notExt substr($file_css0, -4);
            
            
if(file_exists($smarty->template_dir["tema"] . $file_css)) {
                $css file_get_contents($smarty->template_dir["tema"] . $file_css);
                # Creamos un backup, solo por seguridad
                file_put_contents(str_replace('$1'$notExt$myBackUp), $css);
                echo $css;

            } elseif(file_exists($smarty->template_dir["css"] . $file_css)) {
                $css file_get_contents($smarty->template_dir["css"] . $file_css);
                # Creamos un backup, solo por seguridad
                file_put_contents(str_replace('$1'$notExt$myBackUp), $css);
                echo $css;

            } else echo 'Error: el archivo no existe';
        break;
        case 'css-guardar':
            $nombre $tsCore->setSecure($_POST["name"]);
            $contenido $_POST['contenido'];
            $contenido str_replace(
                ['\\n'"'"'&quot;'], 
                
['\n'"'"'"'], 
                $contenido
            
);
            $dir = (file_exists($smarty->template_dir["tema"] . $nombre)) ? "tema" "css";
            $css $smarty->template_dir[$dir] . $nombre;

            file_put_contents($css$contenido);
        break;
    

y eso sería todo, espero no haberme olvidado de algún paso.
Responder Compartir


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)