Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Miguel92

[MOD] Sitemap Administrable v2

Recommended Posts

[MOD] Sitemap Administrable v2

 

Mod original: [Mod] Sitemaps Administrable v1
Autor: @aperpen

 

¿Qué tiene de nuevo?

  1.  Administración completa (v1)
  2.  Administración modificada (v2)
  3.  Inserción en robots.txt, para google detecte tu sitemap (v1)

 

# Configuraciones:

  1. Opción de insertar de forma automática los posts y las fotos que se crean (v1)
  2. Opción de actualizar la última modificación de una URL al editar un post o una imagen (v1)

 

# Ver URLs incluídas en el sitemap:

  1. Agregar, Editar, Borrar URLs (v1)
  2. Los cambios que realices de URLs no se verán reflejados en el sitemap no se verán reflejados hasta que tu lo desees. (v1)
  3. Sitemap completo (Url, frecuencia, ultima modificación, prioridad) (v1)
  4. URLs principales de tu web, incluídas por defecto. (v1)
  5. Restaurar URLs que vienen por defecto en cualquier momento. (v1)

 

# Generar la creación de archivos

  1. Sitemap.xml (v2)
  2. Robots.txt (v2)

 

La guía de instalación lo haré desde cero, en caso que ya lo tengas instalados, solo deberás reemplazar los fragmentos de códigos, ya que irán en el mismo lugar!1 - Realizan la consulta

CREATE TABLE IF NOT EXISTS `w_sitemap` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `url` tinytext NOT NULL DEFAULT '',
  `frecuencia` varchar(15) NOT NULL DEFAULT '',
  `fecha` int(16) NOT NULL DEFAULT 0,
  `prioridad` decimal(2,1) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

ALTER TABLE `w_configuracion` 
ADD `sm_posts` int(1) NULL DEFAULT '1',
ADD `sm_fotos` int(1) NOT NULL DEFAULT '1',
ADD `sm_update_p` int(1) NOT NULL DEFAULT '1',
ADD `sm_update_f` int(1) NOT NULL DEFAULT '1';

 

2 - Abren el inc/class/c.admin.php y buscan la última llave } que cierra la class tsAdmin añaden o reemplazan (solo si lo tienen)

/*
 * Sitemap y SEO administrables
*/
public function saveConfig(){
    global $tsCore;
    $configuraciones = [
        "posts" => empty($_POST['sm_posts']) ? 0 : 1,
        "fotos" => empty($_POST['sm_fotos']) ? 0 : 1,
        "update_p" => empty($_POST['sm_update_p']) ? 0 : 1,
        "update_f" => empty($_POST['sm_update_f']) ? 0 : 1
    ];
    $columns = $tsCore->setUpdate($configuraciones, "sm_");
    if (db_exec([__FILE__, __LINE__], 'query', "UPDATE w_configuracion SET {$columns} WHERE tscript_id = 1")) return true;
    else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') );            
}

 

3 - Abren el inc/php/admin.php y buscan:

   /** MEDALLAS **/
   } elseif($action == 'medals') {

y arriba añaden o reemplazan (solo si lo tienen)

    //SITEMAP BY APERPEN
     } elseif($action == 'sitemap') {
       if(empty($act)) {
           // Obtenemos todas las urls de la base de datos
           $smarty->assign("tsURLs", $tsSiteMap->getURLsBD());
       } elseif($act === 'restaurar') {
           // Restauramos el sitemap
           if($tsSiteMap->CreateSiteMap()) {
               $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true');
           }
       } elseif($act === 'generar') {
           // Generamos el sitemap
           if($tsSiteMap->generateSiteMap()) {
               $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true');
           }
       } elseif($act === 'actual') {
           $smarty->assign("tsURLa", $tsSiteMap->getURLsBD());
       } elseif($act === 'borrar') {
           if($tsSiteMap->removeUrlBD((int)$_GET['id'])) {
               $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true');
           }
       } elseif($act === 'editar') {
         if(!empty($_POST['url'])) {
            if($tsSiteMap->editUrl($_GET['id'], $_POST['url'], $_POST['frecuencia'], $_POST['prioridad'])) {
                $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true');
            }
         } else $smarty->assign("tsURL", $tsSiteMap->getUrl((int)$_GET['id']));
       } elseif($act === 'nueva') {
         if(!empty($_POST['url'])) {
            if($tsSiteMap->addURL($_POST['url'], $_POST['frecuencia'], $_POST['prioridad'])) {
                $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true');
            }
         } 
         } elseif($act === 'config') {
             if(isset($_POST['sm_posts'])) {
                 if($tsAdmin->saveConfigSitemap()) {
                     $tsCore->redirectTo($tsCore->settings['url'].'/admin/sitemap?save=true');
                 }
             }
       }

 

4 - Abren el inc/class/c.posts.php y buscan:

    $tsActividad->setActividad(1, $postID);
    // SUBIR DE RANGO?
    $this->subirRango($tsUser->uid);


y abajo agregan

    // Añadimos al sitemap
    if($tsCore->settings['sm_posts'] === 1) {
        $CatSeo = db_exec('fetch_assoc', db_exec([__FILE__, __LINE__], 'query', 'SELECT c_seo FROM p_categorias WHERE cid = '.(int)$postData['category']))['c_seo'];
        $tsSiteMap->addUrlsm($tsCore->settings['url'].'/posts/'.$CatSeo.'/'.$postID.'/'.$tsCore->setSEO($postData['title']).'.html'); 
    }


En el mismo archivo en la funcion savePost() arriba de 

    // GUARDAR EN EL HISTORIAL    DE MODERACION         
    if(($tsUser->is_admod || $tsUser->permisos['moedpo']) && $tsUser->uid != $data['post_user'] && $_POST['razon']){


añaden esto

    // Añadimos al sitemap
    if($tsCore->settings['sm_update_p'] === 1) {
        $CatSeo = db_exec('fetch_assoc', db_exec([__FILE__, __LINE__], 'query', 'SELECT c_seo FROM p_categorias WHERE cid = '.(int)$postData['category']))['c_seo'];
        $tsSiteMap->updateLM($tsCore->settings['url'].'/posts/'.$CatSeo.'/'.$post_id.'/'.$tsCore->setSEO($postData['title']).'.html'); 
    } 

 

5 - Abren el c.fotos.php de inc/class y buscan:

    // AGREGAR AL MONITOR DE LOS USUARIOS QUE ME SIGUEN
    $tsMonitor->setFollowNotificacion(10, 1, $tsUser->uid, $fid);
    // ACTIVIDAD
    $tsActividad->setActividad(9, $fid);


y agregan debajo

    // Añadimos al sitemap
   if($tsCore->settings['sm_fotos'] === 1) {
      $tsSiteMap->updateLM($tsCore->settings['url'].'/fotos/'.$tsUser->nick.'/'.$fid.'/'.$tsCore->setSEO($fData['titulo']).'.html'); 
   } 


y más abajo en la funcion editFoto() buscan

    // REDIRIGIMOS
   $url = $tsCore->settings['url'].'/fotos/'.$data['user_name'].'/'.$fid.'/'.$tsCore->setSEO($fData['titulo']).'.html';


añaden esto

    // Añadimos al sitemap
   if($tsCore->settings['sm_update_f'] === 1) {
      $tsSiteMap->updateLM($tsCore->settings['url'].'/fotos/'.$data['user_name'].'/'.$fid.'/'.$tsCore->setSEO($fData['titulo']).'.html'); 
   } 

 

6 - Abren el header.php que está en la raíz de su web y buscan:

// Mensajes de usuario
include TS_CLASS.'c.mensajes.php'


y debajo agregan

include TS_CLASS.'c.sitemap.php'; 
$tsSiteMap = new tsSiteMap();
// Instalación automática a través de parámetros
$tsSiteMap->setAuto();

 

7 - Si quieren lo hacen (PASO 5)

 

8 - Abren el themes/TUTEMA/templates/t.admin.tpl y buscan:

    {elseif $tsAction == 'rangos'}
      {include file='admin_mods/m.admin_rangos.tpl'}

y abajo agregan

    {elseif $tsAction == 'sitemap'}
      {include file='admin_mods/m.admin_sitemap.tpl'}

 

9 - Abren el  themes/TUTEMA/templates/admin_mods/m.admin_sidemenu.tpl y buscan:

    <h4>Control de Usuarios</h4>
   <ul class="cat-list">
       <li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/users">Todos los Usuarios</a></span></li>
       <li id="a_sesiones"><span class="cat-title"><a href="{$tsConfig.url}/admin/sesiones">Sesiones</a></span></li>
       <li id="a_nicks"><span class="cat-title"><a href="{$tsConfig.url}/admin/nicks">Cambios de Nicks</a></span></li>
      <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/rangos">Rangos de Usuarios</a></span></li>
   </ul>

y debajo añaden

    <h4>SEO</h4>
   <ul class="cat-list">
       <li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/sitemap">Sitemap</a></span></li>
   </ul>

 

10 - Suben los archivos a sus carpetas correspondientes
c.sitemap.php -> inc/class
m.admin_sitemap.tpl (smarty 3.x) o (smarty 4.x) -> themes/TUTEMA/templates/admin_mods

 

11 - Para acabar, este paso en la v2 esta cambiado, por lo cual no requiere de crea un archivo en la raíz de su web que se llame install.php

Lo pueden ejecutar de 3 formas
Solo crea el Sitemap.xml
https://suweb.com/?sitemap=true&uid=1

 

Solo crea el Robots.txt
https://suweb.com/?robots=true&uid=1

 

Crea el Sitemap.xml y Robots.txt
https://suweb.com/?sitemap=true&robots=true&uid=1

 

Cualquier error dejen el comentario y el tipo de error! 
Sugerencias o dudas también.

Edited by Miguel92
  • Downvote 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Miguel92
      Hola a todos, no se si les interesa, pero les dejó este mod!  (No sé si era la idea que tenía)
       
      Mod iniciado por: KMario19 
      Topic: [Desarrollo] BBCode file para archivos
       
      No lo he encontrado terminado, así que supongo que para usar este mod, deben tener:
      [SECCIÓN] Archivos V1.2
      [SECCIÓN] Archivos V2
       
      [SECCIÓN] Archivos v2.2 (Actualizado a 1.3) [ZIP]
      Topic: Sección archivos v2.2
       
      Iniciamos con la instalación
      1 - Buscamos en .htaccess y buscamos
      RewriteRule ^mod-history/([A-Za-z0-9_-]+)/ inc/php/mod-history.php?ver=$1 [QSA,L] debajo agregaremos
      # Descargar RewriteRule ^download/([0-9_-]+)$ inc/php/download.php?id=$1 [QSA,L]  
      2 - Luego vamos a inc/class/c.core.php y buscamos
      public function setMenciones($html) { arriba de la función (también puede ir arriba de la última })
      # Extraemos el nombre del archivo public function parseFiles($content) {     preg_match_all('/\[file\=(\d+)\]/i', $content, $files);     foreach ($files[0] as $id => $file) {         $dato = db_exec('fetch_assoc', db_exec([__FILE__, __LINE__], 'query', "SELECT file_id, f_nombre, f_descargas, f_ext FROM a_files WHERE file_id = {$files[1][$id]} LIMIT 1"));         if($dato["file_id"] > 0) {             $replace = "<a href=\"{$this->settings["url"]}/download/{$dato["file_id"]}\">{$dato["f_nombre"]}.{$dato["f_ext"]} <span style=\"color:#aaa\">{$dato["f_descargas"]} descargas</span>";         } else $replace = "<span style=\"color:#f00\">Archivo eliminado...</span>";         $content = str_replace($file, $replace, $content);     }     return $content; }  
      3 - Después buscamos en inc/class/c.posts.php 
      $postData['user_firma'] = $tsCore->parseBadWords($tsCore->parseBBCodeFirma($postData['user_firma']),true); arriba agregamos
      $postData['post_body'] = $tsCore->parsefiles($postData['post_body']);  
      4 - Subimos este archivo "download.php" en inc/php
       
      5 - Luego en tema/js/wysibb.js buscan
      smilebox: "Emoticonos", y debajo pegan
      file: "Descargar archivo",
      un poco más abajo buscan
      modal_link_title: "Insertar enlace", y arriba agregan
      modal_link_id: "Inserta el ID del archivo",
      luego buscan
      strike,sup,sub,| y a lado agregan
      ,file
      más abajo buscan
      img : { y arriba pegan (en buttonHTML lo pueden definir ustedes)
      file : {     title: CURLANG.file,     buttonHTML: '<span class="fa-solid fa-paperclip"></span>', // Pueden agregar imagen o lo que deseen     modal: {         title: CURLANG.modal_link_id,         width: "500px",         tabs: [             {                 input: [                     {param: "FILE",title:CURLANG.modal_link_id}                 ]             }         ]     },     transform : {         '<a href="{FILE}">{FILE}</a>':"[file={FILE}]"     } },  
      bueno, eso todo... espero no olvidarme de nada!
    • By Miguel92
      Editar CSS desde la administración
       
      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.
       
      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 * https://www.phpost.net/foro/topic/32471-peque%C3%B1o-ajuste-para-los-botones-del-modal/           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;    } } // admincss 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
      <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 escribalo!</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 Actualizar a Smarty 4.0
         /**      * 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_css, 0, -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($style, 0, -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 descargan este archivo, 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']) ? 1 : 0; /**********************************\ *    (INSTRUCCIONES DE CODIGO)        * \*********************************/          // DEPENDE EL NIVEL     $tsLevelMsg = $tsCore->setLevel($tsLevel, true);     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($backups, 0777);     }     $myBackUp = $backups . '/$1-backup.css';     switch($action){         case 'css-editar':             $file_css = $tsCore->setSecure($_POST['css'], true);             $notExt = substr($file_css, 0, -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', "&#039;", '&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;     }  
    • By Miguel92
      Esto es algo que siempre quise hacer, pero como he mencionado anteriormente "SOY MALíSIMO EN PROGRAMACIÓN PHP", pero estaba buscando algo parecido en el foro...pero no encontré. Así que realice uno desde cero.
       
      1 - En inc/class/c.posts.php buscan
          /*         getCatData()         :: OBTENER DATOS DE UNA CATEGORIA     */ y arriba agregan
         /*       OBTENER LOS TITULOS DE LOS POSTS ANTERIOR/SIGUIENTE    */    function TituloAnterior() {       global $tsCore;       $post_id = intval($_GET['post_id']-1);       $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1');       $data = db_exec('fetch_assoc', $query);       return $data['post_title'];    }    function TituloSiguente() {       global $tsCore;       $post_id = intval($_GET['post_id']+1);       $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1');       $data = db_exec('fetch_assoc', $query);       return $data['post_title'];    }  
      2 - Luego en inc/php/posts.php buscan
                  // COMENTARIOS             /*$tsComments = $tsPosts->getComentarios($tsPost['post_id']);             $tsComments = array('num' => $tsComments['num'], 'data' => $tsComments['data']);             $smarty->assign("tsComments",$tsComments);*/             // PAGINAS y arriba pegan
                  $smarty->assign("tsTituloAnterior",$tsPosts->TituloAnterior());             $smarty->assign("tsTituloSiguente",$tsPosts->TituloSiguente());  
      y en la sección del post donde esta anterior, aleatorio y siguente le agregan 
      {$tsTituloAnterior} o {$tsTituloSiguente}
       
      hasta ahora todo bien, pero cual es el problema
      Ejemplo 1: Llegaste al último post, pero ya no veras ningún nombre de post siguente...Pero lo que quiero es que muestre el nombre del post actual ya que es el último
      Ejemplo 2: Tienes los posts con las id (1,2,3,6) hay falta el 4 y 5, y esto no funcionaría ya que le esta sumando o restando a la ID actual y en este caso:
      ¿Como haría para buscar el ID más cercano?
    • By Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      Una segunda forma de poder hacerlo!
       
      1 -  Ejecutar esta consulta
      ALTER TABLE `c_comunidades` ADD `c_headercom` VARCHAR(255) NOT NULL AFTER `c_nombre_corto`; 2 -  Buscar en c.comunidades.php en la función nueva_comunidad()
                      'fecha' => time(),                 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombre']), true),                 'ncorto' => $tsCore->setSeo($tsCore->setSecure($_POST['ncorto'], true)),
      y debajo agregamos
                      'headercom' => $tsCore->setSecure($tsCore->parseBadWords($_POST['headercom']), true),
      un poco más abajo buscamos
                  // Insertamos             if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO c_comunidades (c_autor, c_nombre, c_nombre_corto,
      y le agregamos a lado 
                   c_headercom,
      un poquito más abajo de
                      VALUES (                     \''.$tsUser->uid.'\',                     \''.$dato['nombre'].'\',                     \''.$dato['ncorto'].'\',
      agregamos
                          \''.$dato['headercom'].'\',
      Luego buscamos la función editar_comunidad($comid)
                          'pais' => $tsCore->setSecure($_POST['pais']),                         'desc' => $tsCore->setSecure($_POST['descripcion']),                     'color' => $tsCore->setSecure($_POST['back_color']),
      y debajo pegamos
                          'headercom' => $tsCore->setSecure($_POST['headercom']),
      más abajo buscamos 
                          c_acceso = \''.(int)$dato['acceso'].'\',                     c_permisos = \''.$dato['permisos'].'\',
      y debajo pegamos
       
                         c_headercom = \''.$dato['headercom'].'\',             
      3 - Después buscamos en c.crear_left.tpl
          <div class="item_form clearfix">         <label>Categoría</label>         <select name="categoria" id="ShowCats" class="required" onChange="com.subcat()" tabindex="3">             <option value="0">Selecciona una categoría</option>             {foreach from=$tsCats item=c}             <option value="{$c.cid}" {if $tsDato.c_categoria == $c.cid}selected="selected"{/if}>{$c.c_nombre}</option>             {/foreach}         </select>     </div>
      y debajo o arriba pegamos (se me olvido quitar los required, ya que no es obligatorio)
          <div class="item_form clearfix">         <label>Cabecera!</label>         <input type="text" name="headercom" tabindex="10" maxlength="180" size="60" class="required input_text https" placeholder="URL de portada (debe tener https://)" pattern="https://.*" value="{$tsDato.c_headercom}">         <small class="mg-lt">Solo admitirá los https!</small>     </div> 4 - Después buscamos c.com_info.tpl [línea 24 y 25]
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info" style="background-image: url({$tsCom.c_headercom});">     <div class="opacity">     <div class="vci_left floatL">
      luego debajo de la línea 61 agregaremos un 
          </div> 5 -  Por último agregaremos esto a comunidades.css
      .ver_com_info {     padding: 0; } .headercom {      background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
    • By Miguel92
      Esto es una mini actualización del

      Lo había incluido en el theme Hydra, pero no lo voy a usar!

      ¿Cual es la diferencia con el original?
      Que solo he agregado una función que he buscado por internet, que en este caso leerá el directorio CSS y obtendrá todos los nombre que existan en dicha carpeta, y es por ello que estan escritas manualmente estilo.css, extras.css y phpost.css en el caso que exista otro css fuera de la carpeta lo tendrán que escribir...
      Todos los achivos encontrados serán mostrados en un select en el cual ustedes puede seleccionar y presionar editar ya que agrega el texto correspondiente en el input

      1 - Ir a js/admin.js y debajo de todo agregar
      /* EDITAR CSS */ var css = { editar: function(){ var e = $('input[name=file-css]').val(); if(css.check(e)){ $.ajax({ type: 'POST', url: global_data.url + '/css.php?ajax=1&pas=0', data: 'css=' + e, success: function(h){ $('textarea[name=css]').html(h).css({ width:'100%', height: '500px', resize: 'vertical' }).show(); $('button[name=savecss]').show(); } }); } else sinCss(); }, save: function(){ var e = $('input[name=file-css]').val(); var t = $('textarea[name=css]').val(); $.ajax({ type: 'POST', url: global_data.url + '/css.php?ajax=1&pas=1', data: 'css=' + t + '&name=' + e, success: function(h){ mydialog.show(); mydialog.title('Guardado...'); mydialog.body('Debes recargar <b>' + global_data.s_title + '</b> para que los cambios realizados en el archivos sean aplicados!'); mydialog.buttons(true, true, 'Regargar', 'admincss()', true, false, true, 'No', 'close', true, true); mydialog.center(); } }); }, check: function(filename){ var ext = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : ''; if(ext && /^(css)$/.test(ext)) return true; else return false; } } // admincss function admincss() { location.href = global_data.url + '/admin/css' } function sinCss() { mydialog.show(); mydialog.title('Error'); mydialog.body('Debes seleccionar o escribir un archivos CSS para poder elegir'); mydialog.buttons(true, true, 'Ya entendi!', 'close', true, true); mydialog.center(); }

      2 - Ir a templates/t.admin.tpl y debajo de
      {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'}
      agregar
      {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 (El diseño esta realizado con bootstrap 4 y Material) por lo que deberán adaptarlo a su theme
      {literal} <script type="text/javascript"> function cambioOpciones() { document.getElementById("mostrarCss").value=document.getElementById("opciones").value; } </script> {/literal} <div class="card-header"> <h3>Editar CSS</h3> </div> <div id="rec" class="card-body"> <span class="d-block">Seleccione un archivo, si no se encuentra escribalo!</span> <div class="row"> <div class="col-4"> <select id="opciones" onchange="cambioOpciones();" size="8" class="custom-select"> <option value=''>Selecciona una opción</option> <option value='estilo.css'>Estilo</option> <option value='extras.css'>Extras</option> <option value='phpost.css'>Phpost</option> {php} $directorio = opendir("../../themes/".TS_TEMA."/css/"); //ruta actual while ($archivo = readdir($directorio)) { if (is_dir($archivo)) { } else { $txtCSS = ucfirst(str_replace('.css', ' ', $archivo)); echo "<option value='css/$archivo'>$txtCSS</option>"; } } {/php} </select> </div> <div class="col-8"> <input type="text" name="file-css" id=mostrarCss" class="d-inline form-control" placeholder="Ej: estilo.css o css/admin.css" size="15" style="width:70%" /> <button class="btn btn-outline-success" onclick="css.editar(); return false;">Editar</button> <textarea name="css" class="prettyprint lang-css" style="display:none;"></textarea> <button class="btn btn-outline-info" onclick="css.save(); return false;" name="savecss" style="display:none;">Guardar</button> </div> </div> </div>
      Veran en el código de m.admin_css.tpl esto
      $directorio = opendir("../../themes/".TS_TEMA."/css/"); //ruta actual
      en donde dice ".TS_TEMA." no funciona, solo le cambian por el nombre de su theme actual

      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 - Por último van a inc/php/ajax y crean un archivo llamado ajax.css.php y pegan esto
      <?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script att Xtatter :P'); /*/ · EDITAR EL CSS EN LA ADMIN BY XTATTER /*/ if($tsUser->uid == 1){ $pas = (int)$_GET['pas']; if($pas == 0) { $file_css = $tsCore->setSecure($_POST['css']); $i = file_get_contents($tsCore->settings['tema']['t_url'] . '/' . $file_css); if(empty($i)) $i = 'Error: el archivo no existe'; die($i); } else { $css = $_POST['css']; $css = str_replace('\\n', '\n', $css); $css = str_replace("&#039;", "'", $css); $css = str_replace('&quot;', '"', $css); $file_css = $_POST['name']; $i = '../../'.$tsCore->settings['tema']['t_url'] . '/'; file_put_contents( '../../themes/'.$tsCore->settings['tema']['t_path'] .'/'. $file_css, $css ); } } else { return false; } ?>
      VISTA PREVIA

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×