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

Search the Community

Showing results for tags 'mod'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • El núcleo de PHPost
    • Novedades e información
    • Off Topic
    • Presentaciones
  • PHPost Risus
    • Actualizaciones
    • Versión 1.1
    • Versión 1.2
  • La esquina
    • Rincón del PC
    • Rincón del móvil
  • Actualizaciones individuales de PHPost Risus's PHP 7/8
  • Actualizaciones individuales de PHPost Risus's Smarty
  • Actualizaciones individuales de PHPost Risus's EXTRAS
  • Actualizaciones individuales de PHPost Risus's Fixes
  • Actualizaciones individuales de PHPost Risus's Actualizaciones
  • Actualizaciones individuales de PHPost Risus's Complementos

Calendars

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Sitio web


ICQ


Yahoo


Jabber


Skype


Localización


Intereses

Found 6 results

  1. [MOD] Sitemap Administrable v2 Mod original: [Mod] Sitemaps Administrable v1 Autor: @aperpen ¿Qué tiene de nuevo? Administración completa (v1) Administración modificada (v2) Inserción en robots.txt, para google detecte tu sitemap (v1) # Configuraciones: Opción de insertar de forma automática los posts y las fotos que se crean (v1) 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: Agregar, Editar, Borrar URLs (v1) 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) Sitemap completo (Url, frecuencia, ultima modificación, prioridad) (v1) URLs principales de tu web, incluídas por defecto. (v1) Restaurar URLs que vienen por defecto en cualquier momento. (v1) # Generar la creación de archivos Sitemap.xml (v2) 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&iacute;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.
  2. 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!
  3. Bueno aqui les dejo a pedido de un user.. La verdad que no me quedo muy claro lo que me pedia. Ya que era poder poner los modulos d elos top user, tops posts, comentarios, No se si lo queria que sea dentro de los post ya que no hay mucho espacio.. Hasi que lo agregue en el lado lateral.. Use el theme de gonzalo V5 asi que para otros temas esto puede cambiar el estylo.. Comenzamos.. En el archivo c.posts.php buscamos : /* lalala */ Y agregamos arriba: /* Top Post General*/ function act_tpost(){ global $tsUser, $tsCore; $query = mysql_query("SELECT p.post_id, p.post_category, p.post_title, p.post_puntos, c.c_seo FROM p_posts AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = 0 ORDER BY p.post_puntos DESC LIMIT 10"); $data = result_array($query); // return $data; } /* Top User General*/ function act_tuser(){ global $tsUser, $tsCore; $query = mysql_query("SELECT SUM(p.post_puntos) AS total, u.user_id, u.user_name, u.user_baneado, u.user_posts, u.user_activo FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id WHERE p.post_status = 0 AND u.user_activo = 1 AND u.user_baneado = 0 GROUP BY p.post_user ORDER BY total DESC LIMIT 10"); $data = result_array($query); // return $data; } /* Ultimos TOP comentarios General*/ function act_cuser(){ global $tsUser, $tsCore; $query = mysql_query("SELECT SUM(p.post_comments) AS total, u.user_id, u.user_name, u.user_baneado, u.user_posts, u.user_activo FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id WHERE p.post_status = 0 AND u.user_activo = 1 AND u.user_baneado = 0 GROUP BY p.post_user ORDER BY total DESC LIMIT 10"); $data = result_array($query); // return $data; } /* Ultimos comentarios*/ function act_comuser(){ global $tsUser, $tsCore; $query = mysql_query("SELECT * FROM p_comentarios AS c LEFT JOIN u_miembros AS u ON c.c_user = u.user_id LEFT JOIN p_posts AS p ON p.post_id = c.c_post_id LEFT JOIN p_categorias AS ca ON ca.cid = p.post_category WHERE p.post_status = 0 AND u.user_baneado = 0 AND u.user_activo = 1 ORDER BY c.cid DESC LIMIT 10"); $data = result_array($query); // return $data; } EN el Archivo posts.php Buscamos: // DATOS DEL AUTOR $smarty->assign("tsAutor",$tsPosts->getAutor($tsPost['post_user'])); Y Agregamos abajo: // DATOS TOP POSTS, TOP USUARIOS, TOP COMENTADOR, ULTIMOS COMENTARIOS... $smarty->assign("tsPostpv",$tsPosts->act_tpost()); $smarty->assign("tsUserpv",$tsPosts->act_tuser()); $smarty->assign("tsCompv",$tsPosts->act_cuser()); $smarty->assign("tsComupv",$tsPosts->act_comuser()); En el archivo m.posts_autor.tpl buscamos al final: {/if} y Agregamos despues {include file='modules/m.top_posts_general.tpl'} Agregamos esto a su extras.css #box-top-post{width:100%;height:auto;overflow: hidden; border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;} .top-p-g h3{padding: 5px 0 5px 0;color:#FFF;font-weight:bold;font-size:16px;border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;} #box-top-post ul li{font-family: Helvetica,Arial;display:block;padding:3px 0 3px 0;}.top-p-g{width:100%;background:#00608A;text-align:center;} #box-top-post ul li a{font-weight: 600;color:#A6A6A6;}.ver-mas-v{background:#EAF7FF;text-align:center;padding: 3px 0 3px 0;border-top:1px solid #81BBE0;}.ver-mas-v a{color:#005CA5;} Y Subimos el archivo m.top_posts_general.tpl a modules/ http://www.mediafire.com/?mkomrn866tmf2k8 Les dejo el archivo + las instruciones en txt para los que lo necesiten.. Espero que les sea de utilidad.. (Los tops son con los datos genrales) Hasta la Proxima..
  4. Hola a todos de PHPost les traigo un nuevo complemento bastante útil, es similar al que hay en Taringa, les muestra los últimos 7 posts favoritos que agregaron para tenerlos más accesibles que cargar la sección favoritos y solo los tengan en el monitor de usuario y que Kmario adapto para la Risus pero en este caso en vez de ser los favoritos en el monitor este mod muestra los ultimos 7 borradores en el monitor del usuario.Bueno este mod esta basado enteramente en el que posteo Kmario asi que la mayoria de los creditos van para el que por cierto ¡¡¡¡Felicitaciones!!!! por ser parte del E.P Bueno empezamos con el mods aqui os dejo para la 1.1 (rc2) y para la 1.2 la unica diferencia esta en la funcion que añadiremos a c.posts.php asi que elijan que funcion les corresponde segun la version de su script. 1º Deben al archivo c.posts.php (esta en inc/class/)y buscamos: /* getFavoritos() */Arriba de eso agregamos: (Para la version 1.1) /* * listBorradores() * Borradores en el monitor * ReModWrite */ function listBorradores(){ global $tsCore, $tsUser; // $query = mysql_query('SELECT p.post_id, p.post_title, c.c_seo, c.c_img FROM p_borradores AS b LEFT JOIN p_posts AS p ON p.post_id = b.bid LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE b.b_user = \''.$tsUser->uid.'\' AND p.post_status = \'0\' ORDER BY b.b_date DESC LIMIT 7'); $data['data'] = result_array($query); // $data['total'] = mysql_num_rows(mysql_query('SELECT bid FROM p_borradores WHERE b_user = \''.$tsUser->uid.'\'')); // return $data; }Arriba de eso agregamos: (Para la version 1.2) /* * listBorradores() * Borradores en el monitor * ReModWrite */ function listBorradores(){ global $tsCore, $tsUser; // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_title, c.c_seo, c.c_img FROM p_borradores AS b LEFT JOIN p_posts AS p ON p.post_id = b.bid LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE b.b_user = \''.$tsUser->uid.'\' AND p.post_status = \'0\' ORDER BY b.b_date DESC LIMIT 7'); $data['data'] = result_array($query); // $data['total'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid FROM p_borradores WHERE b_user = \''.$tsUser->uid.'\'')); // return $data; }Con eso terminamos en el archivo c.posts.php 2º Ahora vamos a ajax.borradores.php (está en inc/php/ajax/) y debajo de: 'borradores-get' => array('n' => 2, 'p' => ''),Agregamos: 'borradores-lista' => array('n' => 2, 'p' => 'lista'),En el mismo archivo un poco mas abajo buscamos: // CLASE require('../class/c.borradores.php'); $tsDrafts =& tsDrafts::getInstance();Debajo de eso agregamos // CLASE require('../class/c.posts.php'); $tsPosts =& tsPosts::getInstance();Ahora al final del mismo archivo buscamos: case 'borradores-eliminar': //<-- echo $tsDrafts->delDraft(); //--> break;Y debajo de eso agregamos: case 'borradores-lista': // <!-- $smarty->assign("tsBorradores",$tsPosts->listBorradores()); // --> break;Con eso ya terminamos en el archivo ajax.borradores.php 3º Ahora nos vamos al archivo acciones.js (está en tutema/js/) y buscamos: mensaje.close();Debajo de eso agregamos: borrador.close();Un poco más abajo buscamos: notifica.close();Debajo de eso agregamos: borrador.close();Para finalizar buscamos: var timelib = {Arriba de eso agregamos: var borrador = { cache: {}, last: function () { notifica.close(); mensaje.close(); // if ($('#bor_list').css('display') != 'none') { $('#bor_list').slideUp(); $('a[name=Borradores]').parent('li').removeClass('monitor-notificaciones'); } else { if (($('#bor_list').css('display') == 'none') || typeof borrador.cache.last == 'undefined') { $('a[name=Borradores]').children('span').addClass('spinner'); $('a[name=Borradores]').parent('li').addClass('monitor-notificaciones'); $('#bor_list').slideDown(); borrador.ajax(function (r) { borrador.cache['last'] = r; borrador.show(); borrador.total(); notifica.close(); mensaje.close(); }); } else borrador.show(); } }, ajax: function(fn){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/borradores-lista.php', success: function(h){ fn(h); $('#loading').fadeOut(350); } }); }, show: function () { if (typeof borrador.cache.last != 'undefined') { $('a[name=Borradores]').parent('li').addClass('monitor-notificaciones'); $('a[name=Borradores]').children('span').removeClass('spinner'); $('#bor_list').show().children('ul').html(borrador.cache.last); $('#bor_list > ul > li > a[title]').tipsy({ gravity: 's' }); } }, total: function () { var total = parseInt($('#BTotal').text()); if(total > 0) { $('#BorrTotal').html('Borradores <span class="floatR">' + total + '</span>'); } }, close: function(){ $('#bor_list').hide(); $('a[name=Borradores]').parent('li').removeClass('monitor-notificaciones'); } }Con eso ya terminamos en el archivo acciones.js 4º Ahora vamos y abrimos head_menu.tpl (está en tutema/templates/secciones/) y buscamos: <li> <a title="Mis Borradores" href="{$tsConfig.url}/borradores.php"> <span class="systemicons borradores"></span> </a> </li>Y Lo reemplazaremos por: <li class="borradores" style="position:relative"> <a href="{$tsConfig.url}/borradores.php" onclick="borrador.last(); return false" title="Posts borradores" name="Borradores"> <span class="systemicons borradores"></span> </a> <div class="notificaciones-list" id="bor_list" style="width:270px"> <div style="padding: 10px 10px 0 10px;font-size:13px"> <strong style="cursor:pointer" onclick="location.href='{$tsConfig.url}/borradores.php'" id="BorrTotal">Borradores</strong> </div> <ul> </ul> <a href="{$tsConfig.url}/borradores.php" class="ver-mas">Ver todos los posts borradores</a> </div> </li> Con eso ya terminamos en el archivo head_menu.tpl 5º Y por ultimo subimos el siguiente archivo a la carpeta p.php_files (esta en tutema/templates/p.php_files). p.borradores.lista.tpl Y listo eso es todo con esto terminamos el mod. Nos quedaria algo como esto pero con los posts que tengamos en borradores. P.D La captura muestro la del mod de favoritos en el monitor de Kmario ya que el mio lo adapte directamente para el tema km-tronos tambien de kmario pero este mod no muestra los favoritos sino los borradores en el monitor Un saludo espero les sea de utilidad y agradezcan el aporte p.borradores.lista.tpl
  5. Alucard

    [MOD] Sitemap

    Hace unos meses cree este simple sitemap, y ahora que tengo datos de la consola de google search puedo liberarlo. Caps: Su instalación es muy simple, en .htaccess después de: RewriteRule ^mod-history/([A-Za-z0-9_-]+)/ inc/php/mod-history.php?ver=$1 [QSA,L] Agregan: # SITEMAP RewriteRule ^sitemap.xml$ inc/php/sitemap.php [L,NC,QSA] RewriteRule ^sitemap([0-9]+).xml$ inc/php/sitemap.php?pagina=$1 [L,NC,QSA] Y suban sitemap.php a /inc/php/ y xsl.xsl a la carpeta raíz de su tema en uso. Descarga por dropbox o en el archivo adjunto del topic. Algunas capturas de console search: Sitemap by Alucard.zip
  6. 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; }
×