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

Leaderboard


Popular Content

Showing content with the highest reputation since 05/26/19 in all areas

  1. 7 points
    Hola a todos, soy Kmario19. Tal vez me recuerden de mods como la portada de los posts, o secciones como las de juegos y las comunidades. Esta vez vengo con un fix para aquellos sitios que tengan millones de visitas y la tabla w_visitas esté afectando la carga de un post ya que es la tabla que más registros genera. Junto a @Rengo estuvimos analizando por qué los posts cargaba tan lento, después de un rato noté que una consulta en particular era la culpable: db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_visitas` SET `date` = \''.time().'\', ip = \''.$tsCore->getIP().'\' WHERE `for` = \''.(int)$post_id.'\' && `type` = \'2\' && `user` = \''.$tsUser->uid.'\' LIMIT 1'); Esta línea está en c.posts.php en la función getPost. (esta consulta actualiza la fecha de visita del usuario logueado al post) El problema es que después de que el sitio tenga suficiente tiempo online o muchísimas visitas, esta tabla w_visitas llega a tener millones de registros y cuando una tabla así no está indexada tiende a hacer una consulta "FULL SCAN" por lo que básicamente tiene que recorrer todos los registros para poder finalizar su tarea, y en el caso del sitio de pruebas tiene más de 2 millones de registros. Entonces, para todos aquellos que quieran evitar este pequeño problema de rendimiento a futuro cuando tengan muchas visitas o si ya se les presenta el caso, la solución es ir a su base de datos y ejecutar la siguiente consulta: ALTER TABLE `w_visitas` ADD INDEX (`for`, `type`, `user`); Y listo, eso soluciona el problema. Para que se hagan una idea de los resultados, esta es una consulta antes de agregar el indice: Y esta es la misma consulta después de agregar el índice: Estamos hablando de una absurda reducción de 91150% de acuerdo al tiempo de ejecución de MySQL pero realmente pasamos a un tiempo de carga del sitio de unos 6 segundos aprox. a menos de 1 segundo. Bueno, es un índice que debería ir por defecto en el .sql con el que se instala el script para evitar ese inconveniente a futuro. Seguramente algunas otras secciones críticas del script con el pasar del tiempo y vayan creciendo necesitarán de estos índices para mejorar los tiempos de consulta de la base de datos. Bueno no siendo más, me despido. Hasta otra ocasión... espero no tan tardía xD
  2. 6 points
    Buenas gente de PhPost Hace mas de un año que no aporto nada por aqui, veo que el foro esta muerto, no se si es demasiado tarde para comparitr este diseño pero en fin. Hoy les traigo un nuevo tema en base a mi diseño anterior Carbon. Se presenta un diseño fresco, se corrigen varios errores del anterior tema y se aplican las actualizaciones necesarias para su funcionamiento Características: 100% responsive (Gracias al framework bulma.io) Se incluye la sección Fotos Rediseño de las principales secciones (Portal, Home, Post, Tops, Perfil) Actualización del framework Bulma a la version 0.7.1 Cambio de libreria de iconos Fontawesome a Feather Icons Añadido editor Wysiwyg Acualización reCAPTCHA v2 Requiere RISUS 1.3 Imagenes Tambien dejo una demo DEMO User: demo1 Contraseña: demo123 Instalación Primero realiza la siguiente consulta en tu base de datos ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL Después descarga el diseño y remplaza los archivos necesarios Instala el diseño desde el panel de administración Listo ya lo tienes Descarga Este tema en un principio estaba destinado a ser vendido, sin embargo, ante la poca actividad en el foro esto ya no me es posible por lo que decidí dejar la descarga de forma gratuita. En el siguiente enlace lleva a una página donde están dos links (uno con la descarga directa y el otro con un acortador de publicidad). Si en verdad aprecias mi esfuerzo te pido que utilices el link que contiene el acortador con publicidad, estare muy agradecido. DESCARGA Bueno eso seria todo, espero disfruten del diseño. Pido un chilion de "Me gustas" para sacar una versión oscura
  3. 5 points
    Hola a [email protected], dejo la V6 en versión oscura, es la misma que compartí en este post, a esta aparte de hacerla oscura le he añadido y cambiado algunas cosas, el footer, tab, tienda... Lo que no os guste se puede modificar quitar... ya es a gusto de cada uno. Los que usen la otra y os gusta algo de esta, se le puede poner, si no sabes deja tu web y un usuario demo y te lo explico. En las capturas que dejo, en el menú no aparece el link de las comunidades, es solo en las imágenes, en el archivo y la demo lo tiene. Si falta algún sitio o algo coméntalo aquí detallando el sitio o lo que sea, para ponérselo y explicarte como hacerlo. La he instalado en la otra demo, mañana o pasado cuando tenga otro rato la subo y dejo las 2. Bueno espero que os guste y saludos. Demo https://pruev6.lucky-forum.com/ Google Drive https://drive.google.com/file/d/15neCCTyK96u9F8KDelEI8e-4_lF9Dt5d/view Mediafire https://www.mediafire.com/file/iuqau641ve2irdp/V6DarkOscuro13ACTFIX2019L2.rar/file
  4. 5 points
    Hola a [email protected], primero, lo siento por mi larga ausencia, ahora vivo en otro sitio y se me ha echo imposible tener un rato para conectarme y contestar a los problemas que tiene el theme que comparti en este post. Ahora he tenido un rato la he instalado y comprobado, le he fixeado los errores que tenia, uno de ellos es en la instalación que no pasaba del paso 2, y era porque me había comido un paréntesis de cierre } en una consulta del archivo database. Los otros errores que he visto y he leído, son por la versión de php, le he actualizado otra vez todos los archivos (Manual), la he estoy probando con la version 7.1 y me funciona bien, no le encuentro ningún error. Dejo una web demo para que la prueben, no dejo usuario demo, para que se registren y vean que funciona, si encuentran algo, repórtalo aquí en el foro para ver lo que es y solucionarlo. Y nada, espero que os valla bien y suerte en vuestros proyectos. Saludos - Corregido vulnerabilidad bbcode - Actualizado a 1.3 - Mejorado compatibilidad con PHP 7 (Comprobado en Versión 7.1) - Actualizado reCaptcha (V2) (En el foro han dejado la V3, por si la quieren instalar) - Añadido el editor WYSIWYG para todo. - Corregido errores en instalación, registro... - Le he creado otro footer, le podéis poner el color que queráis. Si no os gusta, el original está en el mismo archivo renombrado. Importante: - Si os sale un error, mirar si la web demo que dejo lo tiene. - Para pedir ayuda, deja tu web y un usuario demo para poder ver mejor el error y solucionarlo más rápido. https://pruev6.lucky-forum.com/ Instalación Al terminar la instalación va a salir este error, ejecutan y suben las consultas que están en el archivo de descarga en tu base de datos y ya desaparece ese error. Demo https://pruev6.lucky-forum.com/ Mediafire https://www.mediafire.com/file/uy8326x9y80d4o8/V61.3ACTFIX20192.rar/file Mega https://mega.nz/#!hQ5SUKDY!cQD-Wqyx3sT4F-nURsmgUiqBwksFvXDeJIWPgF4uwgA
  5. 4 points
    Bueno he terminado con el theme Spectre, aún que le hace falta pulir un poco...pero está listo para usar. Lo pueden descargar directamente desde el repositorio en github, ya que si tengo que hacer cambios los subo directamente allí y es fácil buscar los cambios realizados. DESCARGAR SPECTRE V.1.0 RC-0.0.1 Detalles: Jquery 3.4.1 Smarty 3.1.32 PHP 7.+ PHPMailer 6.+ Componentes usados: Framework css - Spectre Spectre-Icons (36 iconos) LineIcons (460 iconos) Tienen 2 maneras: 1 - Instalar como si fuera un script desde cero, lo descargan, lo instalan y eso ya sería todo, no hay más...no hace falta que mires este topic! 2 - Es copiar el theme a su carpeta respectiva e instalarlo como Spectrev1.0 y poner la carpeta "Modulos" a la raíz de su sitio si seguir los siguientes paso: GUIA: Si instalaste la versión que realice con ambos recaptcha v2 y v3 no realices la consulta pero sigue los pasos y cabe destacar que algunas cosas las he tomado de la versión de Taringa V5: ALTER TABLE `w_configuracion` ADD `c_recaptcha` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `pkey3` varchar(55) NOT NULL; ALTER TABLE `w_configuracion` ADD `skey3` varchar(55) NOT NULL; Editar header.php Buscan estas líneas // Mensajes $smarty->assign('tsMPs',$tsMP->mensajes); y debajo pegan esta include 'modulos/spectre.php'; Luego buscan config.inc.php y borrar estas líneas define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha ¿Para qué es el archivo spectre.php? Es un mini-archivo de configuración, en el que se puede hacer configuraciones globales y así evitar que busquen cada archivo para poder cambiar. EJ: quieren cambiar el header, simplemente buscan este archivo y modifican, sin tener que ir a templates/section/main_header.tpl. ANALIZANDO EL CONTENIDO DE SPECTRE.PHP Es la versión del theme y no deben tocarlo. define('VersionTheme', '1.0'); Este es el icono que se verá en el explorador define('LogoIco', $tsCore->settings['url'] . '/modulos/img/favicon.ico'); define('LogoPng', $tsCore->settings['url'] . '/modulos/img/favicon.png'); Para cambiar el header 1000 x 363 que sea más o menos con esa dimensión, si es PNG, JPG o JPEG es mejor que la conviertan a .WEBP para que esta sea más rápido al cargar (si no me equivo) define('Header', $tsCore->settings['url'] . '/modulos/img/header.webp'); Convertidores online gratuitos, use ambos y son buenos: https://convertio.co/es/png-webp/ https://imagen.online-convert.com/es/convertir-a-webp PONER FOTOS EN TOPS 1 - Ir a inc/class/c.tops.php y buscan /* getStats() : NADA QUE VER CON LA CLASE PERO BUENO PARA AHORRAR ESPACIO... : ESTADISTICAS DE LA WEB */ Arriba pegan lo siguiente 2 - Buscar en inc/php/top.php y buscan case 'usuarios': $smarty->assign("tsTops",$tsTops->getTopUsers($fecha, $cat)); break; Y debajo pegan case 'fotos': $smarty->assign("tsTops", $tsTops->getTopFotos($fecha, $desc)); break; 3 - Buscan en inc/class/c.posts.php y buscan la última llave } y arriba pegan lo siguiente 5 - En inc/php/posts.php buscan } else { // PAGINA $tsPage = "home"; y la reemplazan por } else if ($_GET['cate'] == 'categorias') { $tsPage = "categorias"; $tsTitle = $tsTitle.' - Categorías!'; $smarty->assign("tsTopcat",$tsPosts->topcat()); $smarty->assign("tsPostsAzar",$tsPosts->getPostsAzar()); } else { // PAGINA $tsPage = "home"; luego buscan // ULTIMOS COMENTARIOS $smarty->assign("tsComments",$tsPosts->getLastComentarios()); y debajo pegan //POSTS AL AZAR $smarty->assign("tsPostsAzar",$tsPosts->getPostsAzar()); //POSTS POPULARES $smarty->assign("tsPopular",$tsPosts->PostsPopular()); PD: Deben copiar el archivo ajax.feed.php que se encuentra en inc/php/ajax/ajax.feed.php, ya que allí sabrán si hay nueva versión o cambios en el theme porque esto es lo que verán en el panel de la administración GUIA CONFIGURAR PHPMAILER Para configurar visiten el repositorio de PHPMailer, allí explica cómo deben hacer para que este funcione correctamente, ya esta actualizado el PHPMailer Eso es todo, espero no olvidarme de nada! cualquier cosa avisen! Como siempre la demo: https://mozzfirev4x.skn1.com/Spectre/ USUARIO: Demo CONTRASEÑA: demouser
  6. 4 points
    Hoy traeré algo para que no se sientan tan viejos Fuera rodeos. Archivo : inc/c.registro.php Buscar : 'user_captcha' => $_POST['g-recaptcha-response'], Reemplazar: 'user_captcha' => $_POST['captcha'], Archivo : themes/{Tutema}/templates/t.php_files/p.registro.form.tpl Buscar: <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div> Reemplazar : <div class="form-line"> <input type="hidden" name="recaptcha_response" id="recaptchaResponse" class="g-recaptcha"> <div class="help"><span><em></em></span></div> </div> Buscar : <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> {/literal} Añadir Abajo: <script> var keyv3 = "{RC_PUK}"; grecaptcha.ready(function () { grecaptcha.execute(keyv3, { action: 'contact' }).then(function (token) { var recaptchaResponse = document.getElementById('recaptchaResponse'); recaptchaResponse.value = token; }); }); </script> Archivo : /templates/sections/main_header.tpl Agregamos antes de </head> <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> Archivo : {tutheme}/js/registro.js Buscar : case 'dia': case 'mes': case 'anio': //Almaceno el dato this.datos['dia'] = $('#RegistroForm #dia').val(); this.datos['mes'] = $('#RegistroForm #mes').val(); this.datos['anio'] = $('#RegistroForm #anio').val(); Reemplazar : /* nacimiento */ case 'dia': case 'mes': case 'anio': case 'captcha': //Almaceno el dato this.datos['dia'] = $('#RegistroForm #dia').val(); this.datos['mes'] = $('#RegistroForm #mes').val(); this.datos['anio'] = $('#RegistroForm #anio').val(); this.datos['captcha'] = $('#RegistroForm #recaptchaResponse').val(); Buscar (Linea 418 Aprox): // Estado case 'estado': if (this.no_requerido[campo]) { Ingresar Arriba : /* reCAPTCHA */ case 'recaptcha_response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; // Estado Buscamos : /* reCAPTCHA */ case 'g-recaptcha-response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; y lo eliminamos Buscamos show_status: function(el, status_aux, text, no_cache_data) { var campo = $(el).attr('name'); var status = (status_aux == 'empty') ? 'error' : status_aux; //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response_field') el = $('#RegistroForm .pasoDos .help.recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).removeClass('ok').removeClass('error').removeClass('info').removeClass('loading').addClass(status).show().children().children().html(text); if (!no_cache_data) { this.datos_status[campo] = status_aux; this.datos_text[campo] = text; } return (status == 'ok'); }, hide_status: function(el, status, text) { var campo = $(el).attr('name'); //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response_field') el = $('#RegistroForm .pasoDos .help.recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).hide(); this.datos_status[campo] = status; this.datos_text[campo] = text; return (status == 'ok'); }, Reemplazamos show_status: function(el, status_aux, text, no_cache_data) { var campo = $(el).attr('name'); var status = (status_aux == 'empty') ? 'error' : status_aux; //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response') el = $('#RegistroForm .pasoDos .g-recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).removeClass('ok').removeClass('error').removeClass('info').removeClass('loading').addClass(status).show().children().children().html(text); if (!no_cache_data) { this.datos_status[campo] = status_aux; this.datos_text[campo] = text; } return (status == 'ok'); }, hide_status: function(el, status, text) { var campo = $(el).attr('name'); //Si es reCAPTCHA, lo busco directamente if (campo == 'recaptcha_response') el = $('#RegistroForm .pasoDos .g-recaptcha'); else { //Paso al siguiente elemento hasta encontrar un .help do { el = $(el).next(); } while (!$(el).is('.help')); } $(el).hide(); this.datos_status[campo] = status; this.datos_text[campo] = text; return (status == 'ok'); }, Buscar función submit: //Envio los datos y completo el registro submit: function() { //Compruebo datos del paso actual (PasoDos) if (!this.check_paso()) return false; //Oculto todos los mensajes informativos $('#RegistroForm .help').hide(); var params = ''; var amp = ''; for (var campo in this.datos) { params += amp + campo + '=' + encodeURIComponent(this.datos[campo]); amp = '&'; } if (this.dialog) mydialog.procesando_inicio('Enviando...', 'Registro'); //return false; //Envio los datos $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/registro-nuevo.php', data: params, success: function(h) { //Si hubo algun error, recargo recaptcha var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } switch (h.substring(0, strpos(h, ':'))) { case '0': //Error generico break; case 'nick': //Error nick registro.change_paso(1, true); registro.show_status($('#RegistroForm #nick'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'password': //Password registro.change_paso(1, true); registro.show_status($('#RegistroForm #password'), 'error', h.substring(strpos(h, ':') + 2)); registro.datos['password'] = ''; break; // case 'email': //Email registro.change_paso(1, true); registro.show_status($('#RegistroForm #email'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'nacimiento': //Dia|Mes|Anio registro.change_paso(1, true); registro.show_status($('#RegistroForm #anio'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'sexo': //Sexo registro.change_paso(2, true); registro.show_status($('#RegistroForm #sexo_f'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'pais': //Pais registro.change_paso(2, true); registro.show_status($('#RegistroForm #pais'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'estado': //Estado registro.change_paso(2, true); registro.show_status($('#RegistroForm #estado'), 'error', h.substring(strpos(h, ':') + 2)); break; /*case 'ciudad': //Ciudad registro.change_paso(2, true); registro.show_status($('#RegistroForm #ciudad'), 'error', h.substring(strpos(h, ':')+2)); break;*/ case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':') + 2)); break; case '1': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'mydialog.close()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; case '2': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'redireccionar()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; } $('#loading').fadeOut(350); }, error: function() { mydialog.error_500("registro.submit()"); $('#loading').fadeOut(350); }, complete: function() { if (registro.dialog) mydialog.procesando_fin(); $('#loading').fadeOut(450); } }); } } Reemplazamos : //Envio los datos y completo el registro submit: function() { //Compruebo datos del paso actual (PasoDos) if (!this.check_paso()) return false; //Oculto todos los mensajes informativos $('#RegistroForm .help').hide(); var params = ''; var amp = ''; for (var campo in this.datos) { params += amp + campo + '=' + encodeURIComponent(this.datos[campo]); amp = '&'; } if (this.dialog) mydialog.procesando_inicio('Enviando...', 'Registro'); //return false; //Envio los datos $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/registro-nuevo.php', data: params, success: function(h) { console.log(h); //Si hubo algun error, recargo recaptcha switch (h.substring(0, strpos(h, ':'))) { case '0': //Error generico break; case 'nick': //Error nick registro.change_paso(1, true); registro.show_status($('#RegistroForm #nick'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'password': //Password registro.change_paso(1, true); registro.show_status($('#RegistroForm #password'), 'error', h.substring(strpos(h, ':') + 2)); registro.datos['password'] = ''; break; // case 'email': //Email registro.change_paso(1, true); registro.show_status($('#RegistroForm #email'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'nacimiento': //Dia|Mes|Anio registro.change_paso(1, true); registro.show_status($('#RegistroForm #anio'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'sexo': //Sexo registro.change_paso(2, true); registro.show_status($('#RegistroForm #sexo_f'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'pais': //Pais registro.change_paso(2, true); registro.show_status($('#RegistroForm #pais'), 'error', h.substring(strpos(h, ':') + 2)); break; case 'estado': //Estado registro.change_paso(2, true); registro.show_status($('#RegistroForm #estado'), 'error', h.substring(strpos(h, ':') + 2)); break; /*case 'ciudad': //Ciudad registro.change_paso(2, true); registro.show_status($('#RegistroForm #ciudad'), 'error', h.substring(strpos(h, ':')+2)); break;*/ case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm #recaptchaResponse'), 'error', h.substring(strpos(h, ':')+2)); break; case '1': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'mydialog.close()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; case '2': if (registro.dialog) { mydialog.body(h.substring(strpos(h, ':') + 2)); mydialog.buttons(true, true, 'Aceptar', 'redireccionar()', true, true); mydialog.center(); } else { $('.reg-login .registro #RegistroForm').html(h.substring(strpos(h, ':') + 2)); $('.reg-login .registro #buttons').remove(); } break; } $('#loading').fadeOut(350); }, error: function() { mydialog.error_500("registro.submit()"); $('#loading').fadeOut(350); }, complete: function(data) { if (registro.dialog) mydialog.procesando_fin(); $('#loading').fadeOut(450); console.log('complete ?'); } }); } } Demo : https://zendfire.com Opcional Recaptcha completamente invisible Añadan en su css: .grecaptcha-badge { display: none !important; } Importante : Reemplazar private y public key en config.inc.php Con claves recaptcha v3
  7. 4 points
    Quiero comprar y levantar este sitio, con quien tengo que hablar?
  8. 3 points
    Hola a [email protected], dejo aquí la Zona Vip Administrable de Vellenger adaptada a la V6, solo tenéis que reemplazar los archivos, si tienen algún mod instalado en esos archivos, lo tenéis que volver a poner. Si tienen algún problema comentalo aquí explicandolo y dejando un usuario demo. Zona Vip Administrable V6 Sustituir todos los archivos y ejecutar estas 2 consultas en tu base de datos. (Hacer copia de los archivos a sustituir) ALTER TABLE `p_posts` ADD `post_vip` int(11) NOT NULL; ALTER TABLE `u_miembros` ADD `user_vip` int(11) NOT NULL, ADD `rango_vip` int(11) NOT NULL; ALTER TABLE `u_miembros` ADD `user_vips` INT( 1 ) NOT NULL DEFAULT '0'; Google Drive https://drive.google.com/open?id=1eYD1eq-0r1DLVHTPRSm1oDIpOO7WxKYQ Mediafire https://www.mediafire.com/file/z2wagyx80bf9l4q/ZonaVIPV6.rar/file V6 Con la Zona Vip Administrable instalada Instalación completa desde cero. Google Drive https://drive.google.com/open?id=1sjPhW8aC-Y8OOCkRnzftP6t09fv-2P5x Mediafire https://www.mediafire.com/file/sd0q9fef47egzsx/V61.3ACTFIX2019MVT.rar/file
  9. 3 points
    Lo que se hará es agregar las opciones para que se pueda elegir entre el recaptcha v2 y el recaptcha v3. 1 - Ejecutar estas consultas ALTER TABLE `w_configuracion` ADD `c_recaptcha` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `pkey3` varchar(55) NOT NULL; ALTER TABLE `w_configuracion` ADD `skey3` varchar(55) NOT NULL; 2 - Buscar en inc/class/c.registro.php /** reCAPTCHA **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['skey'] . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); y la reemplazamos por /** reCAPTCHA **/ if($tsCore->settings['c_recaptcha'] == 0) { $R_KEY = $tsCore->settings['skey']; } else { $R_KEY = $tsCore->settings['skey3']; } $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $R_KEY . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); 3 - En config.inc.php que se encuentra en la raíz buscamos y la borramos define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha 4 - En header.php buscamos // Mensajes $smarty->assign('tsMPs',$tsMP->mensajes); y debajo pegamos if($tsCore->settings['c_recaptcha'] == 0) { define('RC_PUK',$tsCore->settings['pkey']); define('RC_PIK',$tsCore->settings['skey']); } else { define('RC_PUK',$tsCore->settings['pkey3']); define('RC_PIK',$tsCore->settings['skey3']); } 5 - Luego buscan en templates/sections/main_header.tpl </head> <body> <!--JAVASCRIPT--> y arriba agregan esto {if !$tsUser->is_member && $tsConfig.c_recaptcha == 1} <script src="https://www.google.com/recaptcha/api.js?render={RC_PUK}"></script> {/if} 6 - Luego buscan en js/registro.js /* Terminos */ case 'terminos': var value = $(el).is(':checked'); y arriba agregan /* ReCaptcha V3 */ case 'recaptcha_response_field': this.datos['g-recaptcha-response'] = $('#RegistroForm #recaptchaResponse').val(); break; y un poco más abajo buscan var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } y lo reemplazan por if(SelectR == 0){ var rnum = h.substring(0, strpos(h, ':')); if (rnum != '1' || rnum != '2') { registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset(); } } 7 - Luego buscan en t.php_files/p.registro.form.tpl (en el caso del mod de registro buscan en t.registro.tpl) <div class="form-group"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div> y la reemplazan por {if $tsConfig.c_recaptcha == 0} <div class="form-group"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{RC_PUK}"></div> <div class="help"><span><em></em></span></div> </div> {else} <div class="form-group"> <input type="hidden" name="g-recaptcha-response" id="response" class="g-recaptcha"> <div class="help"><span><em></em></span></div> </div> {/if} luego más abajo buscan <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> {/literal} y lo reemplazan por {if $tsConfig.c_recaptcha == 0} <script src="https://www.google.com/recaptcha/api.js" async defer></script> {/if} <script type="text/javascript"> const SelectR = '{$tsConfig.c_recaptcha}'; $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> {/literal} {if $tsConfig.c_recaptcha == 1} <script type="text/javascript"> var keyv3 = '{RC_PUK}'; grecaptcha.ready(function () { grecaptcha.execute(keyv3{literal}', {action: 'homepage'}).then(function (token) { var response = document.getElementById('response'); response.value = token; }); }); {/literal} </script> {/if} 8 - Por último en templates/admin_mods/m.admin_configs.tpl y buscan <dl> <dt> <label for="ai_xat">Xat ID:</label> <br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd> <input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> y debajo agregan <hr /> <fieldset class="selectRecaptcha"> <legend>Seleccionar el reCaptcha</legend> <span>Puedes elegir entre el Recaptcha v2 o el Recaptcha v3</span> <select name="recaptcha" id="recaptcha"> <option value="0"{if $tsConfig.c_recaptcha == 0} selected="selected"{/if}>Recaptcha v2</option> <option value="1"{if $tsConfig.c_recaptcha == 1} selected="selected"{/if}>Recaptcha v3</option> </select> <div id="recaptchav2"> <h4>Recaptcha V2</h4> <dl> <dt> <label for="pkey">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="pkey" name="pkey"{if !$tsConfig.pkey}placeholder="Sin clave" {/if}value="{$tsConfig.pkey}" /></dd> </dl> <dl> <dt> <label for="skey">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="skey" name="skey"{if !$tsConfig.skey}placeholder="Sin clave"{/if} value="{$tsConfig.skey}" /></dd> </dl> </div> <div id="recaptchav3"> <h4>Recaptcha V3</h4> <dl> <dt> <label for="pkey3">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="pkey3" name="pkey3"{if !$tsConfig.pkey3}placeholder="Sin clave" {/if}value="{$tsConfig.pkey3}" /></dd> </dl> <dl> <dt> <label for="skey3">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd><input type="text" id="skey3" name="skey3"{if !$tsConfig.skey3}placeholder="Sin clave"{/if} value="{$tsConfig.skey3}" /></dd> </dl> </div> </fieldset> <hr /> y por último en el mismo archivo agregar <script>{literal} var rv3 = '{/literal}{$tsConfig.c_recaptcha}{literal}'; (rv3 == '1') ? $('#recaptchav2').hide() : $('#recaptchav3').hide(); $("select[name=recaptcha]").change(function(){ var reCaptcha = $(this).val(); (reCaptcha == '1') ? $('#recaptchav2').slideUp(),$('#recaptchav3').slideDown() : $('#recaptchav2').slideDown(),$('#recaptchav3').slideUp(); }); {/literal}</script> Y creo que eso sería todo, cualquier problema avisen!
  10. 2 points
    Que tal gente semi muerta de phpost la verdad no pude llegar a subir el video de como scrapear por un problema que tengo al importar el contenido desde phpmyadmin, el problema es que al pasar los 10mil post el sitio web se sobrecarga,no creo que el problema sea por que el post sea formato html mi gran problema es el generar una post_cache a cada post scrapeado. Habria una solucion a esto aki dejo una base de 17mil post de albums de boxalbums.com si algien me ayuda a solucionar ese problema al importar contenido y no se sobrecargue la web y se ponga lag publicare el contenido mientras les muestro una imagen de como se tiene que exportar . Yo creo que el problema es que al no generar post_cache Tutorial como subir post scrapeados formato .csv no lo carguen en su web por que tendran problemas solo testeenlo y compartan una solucion primero que nada hay que cambiar la extructura de p_post para definir que usuario subira los post en post_id y en que categoria lo subiremos en post_category mas definir post_date para saber cuando lo subimos en en post_cache lo dejaremos asi por que es donde tengo complicaciones y no se que puedo hacer Tiene que quedar asi ahora tendremos que importar en columnas poner post_title,post_body,post_tags,post_portada tienes que tener post_portada para que se muestre imagen de portada en tu web adjunto enlace de los datos obtenidos de boxalbums https://drive.google.com/file/d/1pj3Qgx05LjbPur1H-qFRcNB9WBOPmQig/view?usp=sharing deven utilizar notepad++ para editar enlaces que quieran remplazar o cambiar masivamente con solo un click me imagino que lo saben usar espero una solucion a esto de las cache post_cache, no creo que el problema sea por que sean post en html cualquier ayuda deje un tutorial aqui y compartire el video de como scrapear
  11. 2 points
    Para cuando la actualizacion de risus ya está demorando demaciado. En el estado de emergencia hay que aprovechar el tiempo en casa para que Isidro termine la actualizacion.
  12. 2 points
    Hola, te aconsejo que no gastes dinero en hacerle cosas a este script, espera que te ayuden gratis, esta muy desactualizado en código, es echar dinero a una cosa vieja. Cuando lo actualice, el que la tiene que actualizar al tiempo que estamos, si merecerá la pena. El diseño de esa página no es muy difícil, si usas un framework de css viendo la documentación la pones igual, de funciones solo tendrías que ponerle el mod de portadas. Cuando este libre de trabajo y tenga tiempo si no te lo han hecho te lo hago yo.
  13. 2 points
    Hola, para poner el color negro o el color que quieras tienes que tocar los archivos css, inspeccionas la parte que quieres cambiar con el navegador y te dice el color que tiene y donde esta. La demo la he cambiado entera para ponerle el mismo diseño y tamaño a todas las páginas, para eso ya hay que tocar otros archivos y crearle nuevas cosas, que también lo puedes hacer, tardaras mas pero seguro que lo haces. Le voy a terminar unas páginas en administración, los fix que han publicado y la voy a compartir esta semana nada más que coja otro rato libre, si te esperas te ahorras de hacer todo eso. https://pruev6.lucky-forum.com/
  14. 2 points
  15. 2 points
    Me maté con el nombre XD, simplemente lo llame como el framework css del mismo nombre, este theme estará conformado de 2 maneras: 1 - Es todo el script completo desde cero con instalador 2 - Es parte del script en el caso que sea una web con información. (vea las consultas al final de este topic) Es un framework que está en desarrollo, pero por el momento no utilizaremos todos los componentes. NOTA: Solo falta "Moderación" Descargar desde GitHub Spectre -> Smarty 3.1.31 | Jquery 3.4.1 | Php 7+ | PHPMailer 6.+ Spectre Framework Spectre Icons 36 Iconos LineIcons 460 Iconos El theme tendrá una carpeta adicional: Módulos - |-- css |-- LineIcons.min.css |-- spectre-exp.min.css |-- spectre-icons.min.css |-- spectre.min.css |-- fonts |-- Acme-Regular.woff2 |-- LineIcons.eot |-- LineIcons.svg |-- LineIcons.ttf |-- LineIcons.woff |-- img |-- favicon.ico |-- favicon.png |-- header.png |-- spectre-logo.png |-- js |-- spectre.js -- spectre.php CAPTURA: DEMO: SpectreDemo Usuario: Demo Contraseña: demouser Editar header.php Buscan estas líneas // Mensajes $smarty->assign('tsMPs',$tsMP->mensajes); y debajo pegan esta include 'modulos/spectre.php'; Como se incluyó el PHPMailer deben ver este mini tutorial Ver configuración del phpmailer Solo si ya tienen una web funcional (ya instalada): Buscar en config.inc.php y borran esto define('RC_PUK',"6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L"); // public key recaptcha define('RC_PIK',"6LcXvL0SAAAAAEg1zizOxJPTjlD0ZtbbzubF2NjE"); // private key recaptcha Deben instalar el theme como Spectrev1.0 Ejecutar consultas: ALTER TABLE `w_configuracion` ADD `c_recaptcha` int(1) NOT NULL DEFAULT '0'; ALTER TABLE `w_configuracion` ADD `pkey3` varchar(55) NOT NULL; ALTER TABLE `w_configuracion` ADD `skey3` varchar(55) NOT NULL;
  16. 2 points
    Gracias por actualizarlo amigo, a más de alguno le servirá jaja Saludos
  17. 2 points
    Hola, ese error es por verificar usuario, los archivos que te he pasado son los mios que estan en la demo y le puse eso, no me acordaba. Para solucionarlo solo te tienes que ir a tu base de datos y ejecutar esta consulta ALTER TABLE `u_miembros` ADD `user_vips` INT( 1 ) NOT NULL DEFAULT '0'; Para que se te vea la portada que subes en el slider que te he puesto, sube el archivo que te he mandado por MP, se me ha olvidado ponerselo a la función del slider. Lo acabo de probar en la demo y funciona, se lo he dejado por si lo quieres ver. Nota: La descarga del post no tiene lo de verficar usuarios.
  18. 2 points
    De nada. Si la vas a usar y la quieres versión poringa, me lo dices y te la pongo igual. Saludos.
  19. 2 points
    Esto es lo que se va a hacer: Es muy fácil de realizar. 1 - Buscamos en js/live.js y lo borramos $(document).attr('title', global_data.s_title + ' (' + total_notis + ') - ' + global_data.s_slogan); 2 - Buscamos en sections/main_header.tpl $(document).ready(function(){ // {/literal} {if $tsNots > 0} notifica.popup({$tsNots}); {/if} {if $tsMPs > 0 && $tsAction != 'leer'} mensaje.popup({$tsMPs}); {/if} debajo agregamos {if $tsNots + $tsMPs + $tsAvisos} // {literal} var favicon = new Favico({ animation:'pop' }); // {/literal} favicon.badge({$tsNots + $tsMPs + $tsAvisos}) {/if} Aunque no es necesario que usemos el IF ya que el complemento si ve que es 0 no mostrará nada! Si tienes la versión v5/v6 que tiene $Shouts y $Posts lo puedes agregar tranquilamente var favBadge = {$tsNots + $tsMPs + $tsAvisos + $Shouts + $Posts}; 3 - Vamos a js/jquery.plugins.js y abajo de todo colocaremos esto: Ver código NOTA: Si quieres cambiar de color, posición, forma, efecto visita la página oficial del plugin Favico.js
  20. 2 points
    Hola a [email protected],os dejo como hacer funcionar el sistema de captcha en las V5,V6,lo acabo de probar y funciona bien. Ejecutar esta consulta: ALTER TABLE `w_configuracion` ADD `pkey` VARCHAR(55) NOT NULL AFTER `offline_message`, ADD `skey` VARCHAR(55) NOT NULL AFTER `pkey`; En c.admin.php --> inc/class/c.admin.php Buscar: 'newr' => empty($_POST['newr']) ? 0 : 1); Cambiar por: 'newr' => empty($_POST['newr']) ? 0 : 1, 'pkey' => $tsCore->setSecure($_POST['pkey']), 'skey' => $tsCore->setSecure($_POST['skey']), Buscar: '\', `offline_message` = \'' . $c['offline_message'] . Añadir al lado: '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] . Tiene que quedar así: '\', `offline_message` = \'' . $c['offline_message'] . '\', `pkey` = \'' . $c['pkey'] . '\', `skey` = \'' . $c['skey'] . En c.registro.php --> inc/class/c.registro.php Buscar: 'user_captacha_challenge' => $_POST['recaptcha_challenge_field'], 'user_captacha_response' => $_POST['recaptcha_response_field'], Cambiar por: 'user_captcha' => $_POST['g-recaptcha-response'], Buscar: 'captacha' => 'El código es incorrecto' Cambiar por: 'captcha' => 'Validación incorrecta', Buscar: // CAPTACHA require(TS_EXTRA . 'recaptchalib.php'); $robot = recaptcha_check_answer(RC_PIK,$_SERVER["REMOTE_ADDR"],$tsData['user_captacha_challenge'],$tsData['user_captacha_response']); if(!$robot->is_valid) return 'recaptcha: El código es incorrecto.'; Cambiar por: /** reCAPTCHA **/ $recaptcha = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $tsCore->settings['skey'] . '&response=' . $tsData['user_captcha'] . '&remoteip=' . $tsCore->getIP(); // Obtener respuesta $response = file_get_contents($recaptcha); // Extraer resultado $ext1 = explode('"success":', $response); $ext2 = explode(',', $ext1[1]); // Comprobar resultado $valid = trim($ext2[0]); // Devolver respuesta si es incorrecta if ($valid == 'false') { return 'recaptcha: No hemos podido validar tu humanidad'; } registro.js --> default/js/registro.js registro.js --> V6/js/registro.js Buscar: /* reCAPTCHA */ case 'recaptcha_challenge_field': return true; break; case 'recaptcha_response_field': //Si ya paso por aca y no hubieron cambios, devuelvo el mismo status if(!force_check && this.datos[campo] === value && this.datos['recaptcha_challenge_field'] == $('#RegistroForm .pasoDos #recaptcha_challenge_field').val()) if(this.datos_status[campo]=='empty') return no_empty ? this.show_status(el, this.datos_status[campo], this.datos_text[campo]) : this.hide_status(el, this.datos_status[campo], this.datos_text[campo]); else return this.show_status(el, this.datos_status[campo], this.datos_text[campo]); //Almaceno el dato this.datos[campo] = value; this.datos['recaptcha_challenge_field'] = $('#RegistroForm .pasoDos #recaptcha_challenge_field').val(); //!empty if(empty(value)){ var status = 'empty'; var text = 'El campo es requerido'; if(no_empty) return this.show_status(el, status, text); else return this.hide_status(el, status, text); } return registro.show_status(el, 'ok', 'OK'); break; } }, Cambiar por: /* reCAPTCHA */ case 'g-recaptcha-response': this.datos[campo] = value; //!empty if (!value) { return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que eres humano'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break; } }, Buscar: case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm #recaptcha_response_field'), 'error', h.substring(strpos(h, ':')+2)); break; Cambiar por: case 'recaptcha': //reCAPTCHA registro.change_paso(2, true); registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':') + 2)); break; t.registro.tpl --> default/templates/t.registro.tpl t.registro.tpl --> V6/templates/t.registro.tpl Buscar: <div class="form-line"> <label for="recaptcha_response_field">Ingresa el código de la imagen</label> <div id="recaptcha_ajax"> <div id="recaptcha_image"></div> <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" /> </div> <div class="help recaptcha" id="nubex"><span id="puy"></span><span><em></em></span></div> </div> Cambiar por: <div class="form-line"> <label>Confirme humanidad:</label> <div class="g-recaptcha" data-sitekey="{$tsConfig.pkey}"></div> <div class="help"><span><em></em></span></div> </div> Buscar: <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); //Load recaptcha $.getScript("http://www.google.com/recaptcha/api/js/recaptcha_ajax.js", function(){ Recaptcha.create('6LcXvL0SAAAAAPJkBrro96lnXGZ56TBRExEmVM3L', 'recaptcha_ajax', { theme:'custom', lang:'es', tabindex:'13', custom_theme_widget: 'recaptcha_ajax', callback: function(){ $('#recaptcha_response_field').blur(function(){ registro.blur(this); }).focus(function(){ registro.focus(this); }).attr('title', 'Ingrese el código de la imagen'); } }); }); </script> Cambiar por: <script type="text/javascript"> // $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ //Seteo el pais seleccionado //registro.datos['pais']='MX'; //registro.datos_status['pais']='ok'; //registro.datos_text['pais']='OK'; // registro.change_paso(1); //Genero el autocomplete de la ciudad /*$('#RegistroForm .pasoDos #ciudad').autocomplete('/registro-geo.php', { minChars: 2, width: 298 }).result(function(event, data, formatted){ registro.datos['ciudad_id'] = (data) ? data[1] : ''; registro.datos['ciudad_text'] = (data) ? data[0].toLowerCase() : ''; if(data) $('#RegistroForm .pasoDos #terminos').focus(); });*/ mydialog.procesando_fin(); }); </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> $.getScript("{$tsConfig.js}/registro.js{literal}", function(){ registro.change_paso(1); mydialog.procesando_fin(); }); </script> m.admin_configs.tpl --> default/templates/admin_mods/m.admin_configs.tpl m.admin_configs.tpl --> V6/templates/admin_mods/m.admin_configs.tpl Buscar: <dl> <dt><label for="ai_xat">Xat ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd><input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> <hr /> Añadir debajo: <dl> <dt> <label for="pkey">reCaptcha pública</label> <br /><span>Clave pública de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="pkey" name="pkey" value="{$tsConfig.pkey}" /> </dd> </dl> <dl> <dt> <label for="skey">reCaptcha secreta</label> <br /><span>Clave privada de <a href="https://www.google.com/recaptcha/admin">reCatpcha</a>.</span> </dt> <dd> <input type="text" id="skey" name="skey" value="{$tsConfig.skey}" /> </dd> </dl> <hr /> Y con eso ya la tienen funcionando,saludos.
  21. 2 points
    c.posts.php $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(id) as total FROM w_visitas'); $data = db_exec('fetch_assoc', $query); $time = time() - 1440*60; if($data['total']>100){ db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM w_visitas WHERE date < \''.$time.'\' '); } c.user.php $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(session_user_id) as total FROM u_sessions'); $data = db_exec('fetch_assoc', $query); if($data['total']>100){ $time = time() - 1440*60; db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_sessions WHERE session_time < \''.$time.'\' '); }
  22. 2 points
    Eliminando funciones obsoletas Los constructores de estilo PHP 4 (métodos que tienen el mismo nombre que la clase en la que están definidos) están en desuso y se eliminarán en el futuro. PHP 7 se emitirá E_DEPRECATED, si un constructor de PHP 4 es el único constructor definido dentro de una clase. Las clases que implementan un método __construct() no se ven afectadas. Página: Migración 7.0+ deprecated.php Luego ir a Raíz/header.php Línea 28 error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ^ E_DEPRECATED ); y la reemplazan por error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING ); Al hacer esto les saldrá arriba de su web estos mensajes.. Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; tsCore has a deprecated constructor in C:\XAMPP\htdocs\PhpostAct\inc\class\c.core.php on line 8 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; tsUser has a deprecated constructor in C:\XAMPP\htdocs\PhpostAct\inc\class\c.user.php on line 8 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; tsMensajes has a deprecated constructor in C:\XAMPP\htdocs\PhpostAct\inc\class\c.mensajes.php on line 8 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; tsSmarty has a deprecated constructor in C:\XAMPP\htdocs\PhpostAct\inc\class\c.smarty.php on line 12 Para eliminarlos buscamos es Raíz/header.php // Cargamos el nucleo $tsCore =& tsCore::getInstance(); // Usuario $tsUser =& tsUser::getInstance(); // Monitor $tsMonitor = new tsMonitor(); // Actividad $tsActividad =& tsActividad::getInstance(); // Mensajes $tsMP = new tsMensajes(); // Definimos el template a utilizar $tsTema = $tsCore->settings['tema']['t_path']; if(empty($tsTema)) $tsTema = 'default'; define('TS_TEMA', $tsTema); // Smarty $smarty =& tsSmarty::getInstance(); y la reemplazamos por // Cargamos el nucleo $tsCore = new tsCore(); // Usuario $tsUser = new tsUser(); // Monitor $tsMonitor = new tsMonitor(); // Actividad $tsActividad = new tsActividad(); // Mensajes $tsMP = new tsMensajes(); // Definimos el template a utilizar $tsTema = $tsCore->settings['tema']['t_path']; if(empty($tsTema)) $tsTema = 'default'; define('TS_TEMA', $tsTema); // Smarty $smarty = new tsSmarty(); Luego vamos a inc/class/c.core.php y eliminamos // INSTANCIA DE LA CLASE public static function &getInstance(){ static $instance; if( is_null($instance) ){ $instance = new tsCore(); } return $instance; } luego en function tsCore() { la reemplazamos por function __construct() { Luego vamos a inc/class/c.mensajes.php y reemplazamos function tsMensajes(){ por function __construct(){ Luego vamos a inc/class/c.smarty.php y reemplazamos function tsUser(){ por function __construct(){ Luego vamos a inc/class/c.user.php y reemplazamos function tsSmarty(){ por function __construct(){ AVISO: No es obligatorio que lo hagan, el que lo quiere hacer que lo haga y el que no, la verdad no sé que hace viendo este tema jajajaja
  23. 1 point
  24. 1 point
    Hola,vale para cualquier theme,pueden poner cualquier contenido,chat,videos,música... lo que quieran.Para poner el contenido,tienen que poner su código en el archivo m.caja_contenido.tpl , donde dice Aquí contenido 1 que sería el contenido del primer botón,despues sigue así contenido 2,3 y hacen lo mismo con otro código de lo que quieran poner.Se adapta a cualquier ancho,lo pueden poner en cualquier parte de la web. En main_header.tpl themes/tutheme/templates/sections/main_header.tpl Arriba de </head> poner: <script type='text/javascript'> {literal} $(document).ready(function() { $(".contenido_tab").hide(); $("ul.tabs li:first").addClass("activa").show(); $(".contenido_tab:first").show(); $("ul.tabs li").click(function() { $("ul.tabs li").removeClass("activa"); $(this).addClass("activa"); $(".contenido_tab").hide(); var activatab = $(this).find("a").attr("href"); $(activatab).fadeIn(); return false; }); }); {/literal} </script> estilo.css themes/tutheme/estilo.css Añadir: ul.tabs{width:100%;max-width:800px;margin:0 auto;padding:0;list-style:none;height:32px;font-size:0;line-height:0;} ul.tabs li{display:inline-block;width:33.33%;margin:0;padding:0;height:32px;line-height:32px;background:#003750;overflow:hidden;position:relative;border:1px solid #333;border-bottom:0;box-sizing:border-box;border-radius:7px 7px 0 0;} ul.tabs li a{display:block;padding:0 5px;text-decoration:none;color:#fff;font-size:14px;text-align:center;border:1px solid #CCC;box-sizing:border-box;border-radius:7px 7px 0 0;} ul.tabs li a:hover{background:#025881;} ul.tabs li.activa,ul.tabs li.activa a,ul.tabs li.activa a:hover{color:#333;font-weight:700;background:#ccc;} .contenedor_tab{width:100%;max-width:800px;margin:-1px auto 0;padding:0;background:#FFF;border:1px solid #CCC;border-top:0;box-sizing:border-box;border-radius:0 0 7px 7px;} .contenido_tab{padding:10px;font-size:14px;box-sizing:border-box;} Este código lo ponen donde quieran que se vea: {include file='modules/m.caja_contenido.tpl'} Y suben el archivo m.caja_contenido.tpl a: themes/tutheme/templates/modules m.caja_contenido.tpl Pass:Tronlar Pongo un ejemplo en la página principal t.home.tpl
  25. 1 point
    Hola,las consultas no la tienes que subir con el filezilla,borra esa carpeta que has subido al servidor. Para ejecutar las consultas haz esto 1-Abres la carpeta que te dice CONSULTAS,en la carpeta tienes 3 archivos 2-Abres el que dice consultas taringa V5,ejecutas las consultas en tu base de datos cpanel --> phpmyadmin --> sql en ese cuadrado pones las consultas y le das a continuar,con eso ya has ejecutado las consultas de ese archivo. 3-En la misma página donde has ejecutado las consultas,seleccionas la pestaña importar,seleccionas el archivo de las consultas del archivo juegos y comunidades,una por una,y ya con eso tienes la web funcionando.Saludos
  • Patrocinador



    ×