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

Kmario19

Ágata
  • Content Count

    1440
  • Posts on chatbox

    20
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by Kmario19

  1. Hola gente salió una nueva versión, sin mas que decir estas son las novedades: Ahora no es necesario copiar el archivo c.config.php ni cambiar el nombre de la carpeta default por el del tema que estas usando.Ahora se pueden compartir posts por Whatsapp.Al hacer un comentario aparece una firma "enviado desde la versión mobile".Header fixed para poder usar el menú sin necesidad de volver hasta el cielo de la página.Los archivos .js y .css fueron comprimidos para agilizar aún más la carga, sin embargo están disponibles los archivos originales para realizar nuevos themes.Al dar click en "Versión de escritorio" lleva a la web con la url actual.Muchos otros pequeños cambios de diseño y funciones php.Instalación: Para tenerlo si ya tienen instalado el mod solo descarguen el zip de este topic y reemplacen los archivos, opcional pueden borrar el archivo config.inc.php ya que esta versión no lo necesita. Si no tienes el mod instalado entra aquí: Realiza los pasos del 1 al 5 y luego usar el zip de este topic. Descarga: https://www.dropbox.com/s/uftnhsuu6bb1cls/[MOD] Risus Mobile V2.5 [Kmario19][1.2].zip?dl=0 Capturas: Demo: PostLand Que lo disfruten amigos, cualquier cosa ya saben, la caja de comentarios. Nos vemos en otro aporte
  2. 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
  3. Kmario19

    Error htaaces

    Se ve bien tu htaccess, puede ser que la extensión mod_rewrite esté deshabilitada. Tendrías que revisar esto en php.ini (si tienes acceso) o decirle a tu proveedor que te habilite el módulo para tu sitio. Saludos.
  4. Kmario19

    credito-vip (KMARIO19)

    Hola, hace rato no pasaba por acá, solo me dio algo de nostalgia ver por dónde empecé y recordar viejos tiempos! Saludos
  5. Hola gente tal vez muchos de nosotros nos hemos topado con este tipo de captcha en alguna web, blog o foro: Pues, les enseño a como instalarlo en su script: 1. Registrar un sitio para usar la aplicación, aquí nos aseguraremos desde qué dominios se usará el captcha para hacerlo bien seguro. https://www.google.com/recaptcha/admin#list Colocar un título, los dominios donde usarás el captcha y uno o varios correos a los cuales se enviaran alertas si algo sospechoso ocurre en su web al usar el captcha. Luego de registrar interesa conservar las claves del sitio como estas: 2. En el archivo inc/class/c.registro.php buscar y eliminar: 'user_captacha_challenge' => $_POST['recaptcha_challenge_field'], 'user_captacha_response' => $_POST['recaptcha_response_field'],Mas abajo buscar: $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&oacute;digo es incorrecto.';Reemplazar por: $secret = "AQUI TU CLAVE SECRETA"; $robot = new ReCaptcha($secret); $robot->verifyResponse($_SERVER["REMOTE_ADDR"], $_POST['g-recaptcha-response']); if(!$robot->success) return 'recaptcha: Hey que pasa? Demuestra que no eres un robot!';En la variable $secret colocar la clave secreta que se creó en el paso anterior. 3. Descargar y reemplazar el archivo inc/ext/recaptchalib.php: https://www.dropbox.com/s/ogmi26w0g8krnwb/recaptchalib.php?dl=0 4. En el archivo js/registro.js buscar: 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;Reemplazar por: case 'g-recaptcha-response': this.datos[campo] = value; //!empty if(!value){ return this.show_status($('#RegistroForm .g-recaptcha'), 'empty', 'Demuestra que no eres un robot'); } return registro.show_status($('#RegistroForm .g-recaptcha'), 'ok', 'OK'); break;Mas abajo buscar: registro.datos['recaptcha_response_field'] = ''; Recaptcha.reload('t');Reemplazar por: registro.datos['g-recaptcha-response'] = ''; grecaptcha.reset();Mas abajo buscar: registro.show_status($('#RegistroForm #recaptcha_response_field'), 'error', h.substring(strpos(h, ':')+2));Reemplazar por: registro.show_status($('#RegistroForm .g-recaptcha'), 'error', h.substring(strpos(h, ':')+2));5. En el archivo templates/t.php_files/p.registro.form.tpl.php buscar: <div class="form-line"> <label for="recaptcha_response_field">Ingresa el c&oacute;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"><span><em></em></span></div> </div>Reemplazar por: <div class="form-line"> <label>Demuestra que no eres un robot:</label> <div class="g-recaptcha" data-sitekey="AQUI TU CLAVE DEL SITIO"></div> <div class="help"><span><em></em></span></div> </div>En el atributo data-sitekey colocar la clave del sitio que se creó en el paso #1. Mas abajo buscar: $.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&oacute;digo de la imagen'); } }); });Reemplazar por: $.getScript("https://www.google.com/recaptcha/api.js?hl=es");Y listo, eso es todo lo que hay que hacer, les quedará algo como esto: Espero les haya gustado, sobretodo a Rengo que sufrió un poco instalando el captcha, que te sirva. Nos vemos en otro aporte
  6. Muy bien! como en la documentación dice que la solicitud se hace vía post por eso usé curl, pero así va de lujo.
  7. Hola a todos, a pedido de SKIDROW en este topic → enseño a como separar los posts de una categoría específica de los últimos posts habituales. es para hacer algo como esto: Para eso abrimos c.posts.php que está en inc/class y debajo de: $lastPosts['data'] = result_array($query); agregamos: /****FILTRO POR CATEGORIA ESPECIAL*****/ $categoria = 1; $sql = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5'); $lastPosts['cat'] = result_array($sql); Antes de pasar al siguiente paso explico como funciona esto. La variable $categoria tendrá un valor entero que es equivalente a la id de la categoría que queremos, en este caso yo puse 1 como ejemplo, en mis categorías de juegos es "acción" Se mostraran solo 5 resultados como máximo, se puede cambiar donde dice LIMIT 5 por la cantidad que quieran. Le he puesto solo eso porque la idea es que si hay mas resultados, aparezca el boton "ver más" que nos mostrará los "últimos posts" con todos los posts de dicha categoría. Si quieren agregar más filtros, dupliquen todo el código anterior y le cambiaran el nombre de la variable $sql por (puede ser cualqiera) $sql2 y en $lastPosts['cat'] = result_array($sql); lo cambian por $lastPosts['cat2'] = result_array($sql2);. Y así copian el código tantas veces quieran y solo le cambiaran los números de las variables (ejemplo $sql3, $sql4, $sql5... etc) Ahora abrimos posts.php y debajo de: $smarty->assign("tsPosts",$tsLastPosts['data']); Agregan (tantas veces quieran mostrar categorías diferentes) $smarty->assign("tsPCat",$tsLastPosts['cat']); Solo recuerden cambiarle el nombre a las lineas siguientes de la siguiente forma: $smarty->assign("tsPCat2",$tsLastPosts['cat2']); y así, le ponen 3, 4, 5 si lo desean... Por último se van a m.home_last_posts.tpl y al final de todo el código (según el theme default) agregan: <div class="clearbeta lastPosts"> {if $tsPCat} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;a Acci&oacute;n</div> <div class="box_rss"> <a href="/rss/ultimos-post"> <span class="systemicons sRss" style="position:relative;z-index:87"></span> </a> </div> <div class="clearBoth"></div> </div> <div class="body"> <ul> {foreach from=$tsPCat item=p key=i} <li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" > <a {if $p.post_status == 3}class="qtip" title="El post est&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a> <span>{$p.post_date|hace} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; Comentarios <strong>{$p.post_comments}</strong></span> <span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span> </li> {if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver m&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> Si lo pueden notar es el mismo codigo que el de "ultimos posts" solo que cambié algunas cosas. {if $tsPCat} → Condicional por si existe o no posts de la categoria (si agregan más no olviden poner el 2, 3, 4, etc en los otros códigos) <div class="box_txt ultimos_posts">Categor&iacute;a Acci&oacute;n</div> → nombre de la categoría seleccionada {if $i > 4} → Condicional que determina el LIMITE menconado anteriormente - 1 (menos 1) para que muestre el botón de ver más de la categoría escogida Repiten este mismo código cuantas veces quieran de las categorías seleccionadas. Ahora les mostrare un ejemplo mostrando 3 categorias diferentes. Acción, Aventura, Deportes: en c.posts.php: /****FILTRO POR CATEGORIA ESPECIAL*****/ $categoria = 1; $sql = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5'); $lastPosts['cat'] = result_array($sql); /****FILTRO POR CATEGORIA ESPECIAL*****/ $categoria = 2; $sql2 = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5'); $lastPosts['cat2'] = result_array($sql2); /****FILTRO POR CATEGORIA ESPECIAL*****/ $categoria = 4; $sql3 = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_puntos, p.post_private, p.post_sponsored, p.post_status, p.post_sticky, u.user_id, u.user_name, u.user_activo, u.user_baneado, c.c_nombre, c.c_seo, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : ' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? 'p.post_id > 0' : 'p.post_status = \'0\' && u.user_activo = \'1\' && u.user_baneado = \'0\'').' AND p.post_category ='.$categoria.' ORDER BY p.post_id DESC LIMIT 5'); $lastPosts['cat3'] = result_array($sql3); En posts.php $smarty->assign("tsPCat",$tsLastPosts['cat']); $smarty->assign("tsPCat2",$tsLastPosts['cat2']); $smarty->assign("tsPCat3",$tsLastPosts['cat3']); Y en m.home_last_posts.tpl <div class="clearbeta lastPosts"> {if $tsPCat} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;a Acci&oacute;n</div> <div class="box_rss"> <a href="/rss/ultimos-post"> <span class="systemicons sRss" style="position:relative;z-index:87"></span> </a> </div> <div class="clearBoth"></div> </div> <div class="body"> <ul> {foreach from=$tsPCat item=p key=i} <li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" > <a {if $p.post_status == 3}class="qtip" title="El post est&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a> <span>{$p.post_date|hace} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; Comentarios <strong>{$p.post_comments}</strong></span> <span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span> </li> {if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver m&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> <div class="clearbeta lastPosts"> {if $tsPCat2} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;a Aventuras</div> <div class="box_rss"> <a href="/rss/ultimos-post"> <span class="systemicons sRss" style="position:relative;z-index:87"></span> </a> </div> <div class="clearBoth"></div> </div> <div class="body"> <ul> {foreach from=$tsPCat2 item=p key=i} <li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" > <a {if $p.post_status == 3}class="qtip" title="El post est&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a> <span>{$p.post_date|hace} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; Comentarios <strong>{$p.post_comments}</strong></span> <span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span> </li> {if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver m&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> <div class="clearbeta lastPosts"> {if $tsPCat3} <div class="header"> <div class="box_txt ultimos_posts">Categor&iacute;a Deportes</div> <div class="box_rss"> <a href="/rss/ultimos-post"> <span class="systemicons sRss" style="position:relative;z-index:87"></span> </a> </div> <div class="clearBoth"></div> </div> <div class="body"> <ul> {foreach from=$tsPCat3 item=p key=i} <li class="categoriaPost" style="background-image:url({$tsConfig.tema.t_url}/images/icons/cat/{$p.c_img}); {if $p.post_status == 3} background-color:#f1f1f1; {elseif $p.post_status == 1}background-color:coral;{elseif $p.post_status == 2} background-color:rosyBrown;{elseif $p.user_activo == 0} background-color:burlyWood;{elseif $p.user_baneado == 1} background-color:orange;{/if}" > <a {if $p.post_status == 3}class="qtip" title="El post est&aacute; en revisi&oacute;n"{elseif $p.post_status == 1}class="qtip" title="El post se encuentra en revisi&oacute;n por acumulaci&oacute;n de denuncias"{elseif $p.post_status == 2}class="qtip" title="El post est&aacute; eliminado"{elseif $p.user_activo == 0}class="qtip" title="La cuenta del usuario est&aacute; desactivada"{elseif $p.user_baneado == 1}class="qtip" title="La cuenta del usuario est&aacute; suspendida"{/if} class="title {if $p.post_private}categoria privado{/if}" alt="{$p.post_title}" title="{$p.post_title}" target="_self" href="{$tsConfig.url}/posts/{$p.c_seo}/{$p.post_id}/{$p.post_title|seo}.html">{$p.post_title|truncate:50}</a> <span>{$p.post_date|hace} &raquo; <a href="{$tsConfig.url}/perfil/{$p.user_name}" class="hovercard" uid="{$p.post_user}"><strong>@{$p.user_name}</strong></a> &middot; Puntos <strong>{$p.post_puntos}</strong> &middot; Comentarios <strong>{$p.post_comments}</strong></span> <span class="floatR"><a href="{$tsConfig.url}/posts/{$p.c_seo}/">{$p.c_nombre}</a></span> </li> {if $i > 4}<a href="{$tsConfig.url}/posts/{$p.c_seo}/" class="floatL">Ver m&aacute;s</a>{/if} {/foreach} </ul> <br clear="left"/> </div> {/if} </div> Resultado: Curiosamente solo tengo 4 posts de cada categoría xD pero limitará solo 5 (o más si lo desean) Cómo pudieron notar repetí el código tres veces en todos los pasos cambiándoles los nombres (en este caso solo puse el numero para no hacerlo tan largo: 2 y 3.) SKIDROW cuando lo instales muestra cap de como quedó para que vean un resultado diferentes con las portadas y en el paso de c.posts.php no olvides agregar la variable p.post_portada al lado de p.post_title para que se puedan ver las imágenes de portada de los posts. Bueno, eso es todo, espero te funcione y les sirva a algún otro user, nos vemos en otro mod
  8. Kmario19

    MOD Risus Mobil 2.5 ayuda

    Debe ser por el https. En c.core.php busca: $current_url = "http://".$current_url_domain.$current_url_path; Reemplaza por: $current_url = "https://".$current_url_domain.$current_url_path; Prueba con eso.
  9. Hola a todos comparto este mod para que puedan ver el fondo de perfil de usuario en su post y tambien su cabecera de perfil en el VCard. Primero debemos tener el mod de Tutan instalado Ahora abrimos c.posts.php que esta en inc/class y buscamos /* getSideData($array) */ function getAutor($user_id){ global $tsUser, $tsCore; // DATOS DEL AUTOR $query = mysql_query('SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.p_socials, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1'); $data = mysql_fetch_assoc($query); Reemplazamos por /* getSideData($array) */ function getAutor($user_id){ global $tsUser, $tsCore; // DATOS DEL AUTOR $query = mysql_query('SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.p_socials, p.p_fondo, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1'); $data = mysql_fetch_assoc($query); Guardamos y ahora abrimos c.user.php en la misma carpeta y buscamos // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_lastactive, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_mensaje, p.p_sitio FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); Reemplazamos por // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_lastactive, u.user_baneado, p.user_sexo, p.user_pais, p.p_fondoper, p.p_nombre, p.p_mensaje, p.p_sitio FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); Guardamos y ahora abrimos t.posts.tpl que está en templates y despues de {include file='sections/main_header.tpl'} Agregamos {if $tsAutor.p_fondo != ''} <body style="background-image:url('{$tsAutor.p_fondo}');background-repeat: repeat;background-position: center"> {/if} Guardamos y ahora abrimos p.live.vcard.tpl que está en templates/t.php_files y buscamos <div class="hovercard-inner"> <div class="bd"> <a href="{$tsConfig.url}/perfil/{$tsData.user_name}" class="profile-pic"><img src="{$tsConfig.url}/files/avatar/{$tsData.user_id}_50.jpg" class="avatar" /></a> <div class="bio"> Reemplazamos por: <div class="hovercard-inner"> <div class="bd"> {if $tsData.p_fondoper != ''}<img src="{$tsData.p_fondoper}" style="height:75px;width:278px;">{/if} <a {if $tsData.p_fondoper != ''}style="margin: -20px 10px;"{/if} href="{$tsConfig.url}/perfil/{$tsData.user_name}" class="profile-pic"><img src="{$tsConfig.url}/files/avatar/{$tsData.user_id}_50.jpg" class="avatar" /></a> <div class="bio" {if $tsData.p_fondoper != ''}style="margin-left: 70px;"{/if}> Y eso es todo... les quedará algo como esto: Para el que no tenga cabecera de perfil se verá normalmente Y el fondo de perfil que se verá en los posts.... Y eso es todo espero que les haya gustado les recuerdo que tienen que instalar el mod de de tutan para que pueda previsualizarse las imagenes: Nos vemos en otro mod en p.live.vcard reemplazamos por esto: <div class="hovercard-inner"> <div class="bd"> {if $tsData.p_fondoper != ''}<img src="{$tsData.p_fondoper}" style="height:75px;width:278px;">{/if} <a {if $tsData.p_fondoper != ''}style="margin: -20px 10px;"{/if} href="{$tsConfig.url}/perfil/{$tsData.user_name}" class="profile-pic"><img src="{$tsConfig.url}/files/avatar/{$tsData.user_id}_120.jpg" class="avatar" {if $tsData.p_fondoper != ''}style="height:60px;width:60px;"{/if}/></a> <div class="bio" {if $tsData.p_fondoper != ''}style="margin-left: 80px;"{/if}> Disculpen no lo había actualizado correctamente, que algun mod edite el tema
  10. Hola a todos les comparto rápidamente este par de fix a unos problemas que se han presentado desde la ultima actualización del bbcode usando ahora JBBCode, el problema es que al bbcode se parsea primero los emoticones y luego a html por lo que si, por ejemplo, un texto se presenta así: [b]Instrucciones:[/b] 1. Descargar... El parser primero realiza los emoticones, como el del vampiro que es :[ y por lo tanto rompe el bbcode para cerrar la etiqueta de negrita B y todo lo demás aparecerá en negrita, así mismo con cualquier otra etiqueta. Hago referencia a este topic publicado por @boltador: Y otro topic más que no recuerdo pero había reportado @fem se puede apreciar en la demo que con un quote también se rompe el bbcode: Entonces para solucionarlo básicamente trata de parsear primero todos los tags del bbocode y después, si es permitido, parsear los emoticones y menciones. Para ello vamos al archivo inc/class/c.core.php y buscamos la función parseBBCode y la reemplazaremos por esta: function parseBBCode($bbcode, $type = 'normal', $smiles = true, $mentions = true) { // Class BBCode include_once(TS_EXTRA . 'bbcode.inc.php'); $parser =& BBCode::getInstance(); // Seleccionar texto $parser->setText($bbcode); // Seleccionar tipo switch ($type) { // NORMAL case 'normal': // BBCodes permitidos $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); break; // FIRMA case 'firma': // BBCodes permitidos $parser->setRestriction(array('url', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler')); break; // NOTICIAS case 'news': // BBCodes permitidos $parser->setRestriction(array('url', 'b', 'i', 'u', 's')); break; // SOLO SMILES (Esta opción se mantiene por compatibilidad con versiones anteriores, pero en su lugar se recomienda utilizar la opción "normal") case 'smiles': $parser->setRestriction(array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li')); break; } // HTML $html = $parser->getAsHtml(); // SMILES if ($smiles) $html = $parser->parseSmiles(); // MENCIONES if ($mentions) $html = $parser->parseMentions(); // Retornar resultado return $html; } Ahora en el archivo inc/ext/bbcode.inc.php buscar: return nl2br($this->text); Reemplazar por: return $this->text = nl2br($this->text); Mas abajo buscar: $this->text = substr($this->text, 0, -1); Reemplazar por: return $this->text = substr($this->text, 0, -1); Casi al final buscar: $this->text = str_replace($bbcode, $html, $this->text); Reemplazar por: return $this->text = str_replace($bbcode, $html, $this->text); Y listo con eso se arreglaría el problema. Ahora el segundo detalle es que la opción de "Sin Smileys" que tienen los posts, no funciona. Para solucionarlo ir al archivo inc/class/c.posts.php y buscar: $tsCore->parseBBCode($postData['post_body'], 'firma') Reemplazar por: $tsCore->parseBBCode($postData['post_body'], 'normal', false) Y con esto ya estaría funcionando la opción de NO parsear emoticones. Les dejo algunas capturas: Post: Antes: Ahora: Sin emoticones: Bueno, eso sería todo por este post. Dejen sus dudas, comentarios sugerencias. Ante cualquier problema no dudes en comentarlo, intentaré ayudarte lo más rápido que pueda. Nos vemos en otro aporte, hasta entonces!
  11. Este aporte lo hago porque el anterior topic no lo puedo editar y tengo muchos detalles que mencionar ademas de un video que les dejo mas adelante. Como verán le he hecho 3 modificaciones importantes y múltiples fix para mejorar la versión mobile. Empecemos... 1. Añadida la opción de enviar mensajes. 2. Añadida opciones de comentarios en posts como votar (positivo negativo) y citar comentarios. 3. Eliminado plugin thimthumb por tener errores apache en algunos hostings y se reemplazo por otro plugin pero esta vez no es php sino jQuery llamado lazyload, este al igual que thimthumb crea las miniaturas de las imágenes pero las carga por medio de jQuery. Y le he agregado múltiples fix como el registro, load more en comentarios, etc. Como ya saben la instalación es la misma, solo reemplacen sus archivos con esta nueva versión. Recomiendo borrar archivos viejos, verifiquen que en la carpeta inc/php no exista la carpeta cache. V1 con la instalación completa: http://www.phpost.net/?showtopic=27955 Descarga v2.3: https://www.dropbox.com/s/t4tvu5xl05dh5z4/risus_mobile%20V2.3.zip
  12. Kmario19

    [MOD] Risus Mobile V2.3

    Que no funciona exactamente?
  13. Kmario19

    No se ven las denuncias Comunidades Kmario

    Ve al archivo moderacion.php que está en inc/php y al lado de: $action == 'fotos' Agrega: || $action == 'temas' || $action == 'comunidades' Esto debe solucionar tu problema ya que este paso me hizo falta indicarlo en las instrucciones de la instalación.
  14. Hola gente, ayer estaba viendo los usuarios on-line del foro y al ver su localizacion en el foro me dieron gaans de hacerlo para el script, bueno, les dejo la instalacion completa de esta V1 + un video para poner nuevas localizaciones si tienen otras secciones instaladas. Esta localización muestra cuando el usuario... Visita la página principal. Visita un post. Está agregando un nuevo post. Visita la sección de fotos. Visita una foto. Viendo el álbum de fotos de un usuario. Está agregando una nueva foto. Está viendo los miembro. Está viendo los miembros on-line. Está viendo los top posts. Está viendo los top usuarios. Visita el perfil de algún usuario. Está en el portal. Está buscando algo. Está en la sección de localización. Más adelante les enseño a como localizar al usuario si está en otras secciones (ejemplo comunidades). Empecemos... 1. Descarguen y suban estos tres archivos y guárdenlos en sus respectivas carpetas c.localizacion.php > inc/class localizacion.php > inc/php t.localizacion.tpl > tutema/templates https://www.dropbox.com/s/ms26ofprb5uhwjy/%5BMOD%5DLocalizacion%5BKmario19%5D.zip 2. Abrir el archivo header.php que está en la raiz de los archivos de su web Debajo de: // Monitor de usuario include TS_CLASS.'c.monitor.php'; agregamos: // Localización del usuario include TS_CLASS.'c.localizacion.php'; Más abajo buscamos: // Monitor $tsMonitor = new tsMonitor(); Agregamos debajo: // Localizacion $tsLoc = new tsLoc(); Guardamos. Lo que acabamos de hacer fue crear la nueva clase global para que en los demás php o secciones del script pueda "llamar" la función para crear la localización del usuario. Vamos ahora a editar los php de cada sección para agregar su respectiva localización. Home y Posts en posts.php arriba de: if(!empty($_GET['post_id'])){ agregamos: /**********LOCALIZACION************/ function Localizacion() { global $tsLoc, $tsUser; if($_GET['post_id']){ $tsLoc->setLocalizacion(2, $_GET['post_id'], $tsUser->uid); } else { $tsLoc->setLocalizacion(1, 0, $tsUser->uid); } } Localizacion(); /*********************************/ En agregar.php antes de: if(is_numeric($action)){ agregamos: /**********LOCALIZACION************/ function Localizacion() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(9, 0, $tsUser->uid); } Localizacion(); /*********************************/ Fotos En fotos.php debajo de: $smarty->assign("tsStats", $q); Agregamos: function Localizacion() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(4, 0, $tsUser->uid); } Localizacion(); Un poco más abajo buscan: case 'agregar': Y debajo de eso agregan: function Localizacion() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(10, 0, $tsUser->uid); } Localizacion(); Abren ahora c.fotos.php y debajo de : function getFotos($user_id){ global $tsCore, $tsUser; agregan: $tsLoc->setLocalizacion(6, (int)$user_id, $tsUser->uid); Arriba de eso donde está global ponen al lado de $tsUser, $tsLoc; queda de esta manera: global $tsCore, $tsUser, $tsLoc; Mas abajo buscan: function getFoto(){ Debajo en global hacen lo mismo que el paso anterior, al lado de $tsUser agregan , $tsLoc Para que quede asi: global $tsCore, $tsUser, $tsLoc; Debajo de eso mismo agregan: $tsLoc->setLocalizacion(5, $_GET['fid'], $tsUser->uid); Tops En top.php esto.. switch($action){ case 'posts': $smarty->assign("tsTops",$tsTops->getTopPosts($fecha, $cat)); break; case 'usuarios': $smarty->assign("tsTops",$tsTops->getTopUsers($fecha, $cat)); break; } (todo lo que está debajo de "instrucciones de código") Lo reemplazamos por esto: switch($action){ case 'posts': $smarty->assign("tsTops",$tsTops->getTopPosts($fecha, $cat)); function tsLocposts() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(7, 0, $tsUser->uid); } tsLocposts(); break; case 'usuarios': $smarty->assign("tsTops",$tsTops->getTopUsers($fecha, $cat)); function tsLocfotos() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(8, 0, $tsUser->uid); } tsLocfotos(); break; } Buscador En Buscador.php debajo de $smarty->assign("tsAutor",$a); Agregamos: /**********LOCALIZACION************/ function Localizacion() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(11, 0, $tsUser->uid); } Localizacion(); /*********************************/ Portal En portal.php debajo de: // AFILIADOS $smarty->assign("tsAfiliados",$tsAfiliado->getAfiliados()); Agregamos: /**********LOCALIZACION************/ function Localizacion() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(13, 0, $tsUser->uid); } Localizacion(); /*********************************/ Usuarios En usuarios.php debajo de : $smarty->assign("tsRangos",result_array($query)); agregamos: /**********LOCALIZACION************/ function Localizacion() { global $tsLoc, $tsUser; if ($_GET['online'] == true) { $tsLoc->setLocalizacion(15, 0, $tsUser->uid); } else { $tsLoc->setLocalizacion(14, 0, $tsUser->uid); } } Localizacion(); /*********************************/ Perfil En c.cuenta.php en la función: function loadGeneral($user_id){ En su global al lado de $tsUser Agregamos $tsLoc para que quede asi: global $tsCore, $tsUser, $tsLoc; Debajo de eso agregamos: $tsLoc->setLocalizacion(3, (int)$user_id, $tsUser->uid); Submenu En head_submenu.tpl que está en tutema/templates/sections arriba del primer <div class="clearBoth"></div> agregamos: <li{if $tsPage == 'localizacion'} class="here"{/if}><a class=vctip title="Localizaci&oacute;n del usuario" href="{$tsConfig.url}/localizacion/">Localizaci&oacute;n</a></li> Consulta Ahora ejecutamos la siguiente consulta en la base de datos: CREATE TABLE IF NOT EXISTS `u_localizacion` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_user` int(11) NOT NULL, `tipo` int(11) NOT NULL, `lugar` int(11) NOT NULL, `titulo` varchar(200) NOT NULL, `url` varchar(250) NOT NULL, `fecha` int(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; Y listo, eso es todo, ahora los dejo con el siguiente vídeo por si quieren agregar más localizaciones, supongo que ya más de uno sabe como funciona este mod. http://www.youtube.com/watch?v=DE91rqwd8RQ Esta es la función "general" para las localizaciones. function Localizacion() { global $tsLoc, $tsUser; $tsLoc->setLocalizacion(16, 0, $tsUser->uid); } Localizacion(); Por si se pasaron la descarga, la vuelvo a colocar: https://www.dropbox.com/s/ms26ofprb5uhwjy/%5BMOD%5DLocalizacion%5BKmario19%5D.zip Aprovecho y hago spam y los invito a mi web, ya terminé el diseño, aún hay un par de bugs por ahí flotando pero son menores, la web como tal está en completo funcionamiento, echenle un vistazo y que opinan de mi theme
  15. Kmario19

    Últimos registrados HOME V.2017/08/09

    Buen aporte. Eso "Live" si funciona? es decir, sin recargar la página? Es que no veo en el código qué parte hace eso ya que por lo general se hace por ajax. Ah otra cosita, en el paso dos está mal escrito exit (exti) xD
  16. Hola a todos les comparto mi nueva creación... Como saben ya había mostrado avances pero les traigo la definitiva, está totalmente terminada y muy fácil de editar! SECCIONES INCLUIDAS Posts recientes Carrousel de 5 posts destacados (los 5 primeros de la semana) Posts destacados (los mejores de los últimos 15 días) Fotos recientes Portal con publicaciones de los seguidores Muro del perfil con las publicaciones de su respectivo usuario Notificaciones recientes Mensajes privados Mantenimiento de la web Suspensión de usuario DE LOS POSTS Votar post (puntos) Recomendar el post (en la página y redes sociales) Agregar a favoritos Comentar DE LAS FOTOS Votar foto (me gusta o no me gusta) Comentar DEL PERFIL Y PORTAL Compartir publicación portal/muro Seguir/Dejar de seguir usuario Me gusta en las publicaciones Comentar publicaciones DE LOS MENSAJES Responder mensajes CARACTERÍSTICAS No tiene logo, es el título de la web con un estilo personalizado Contiene scroll infinito en secciones como últimos posts, fotos, posts relacionados, perfil y portal Se ajusta automáticamente al tamaño de la pantalla del dispositivo detectado Tanto los avatares de los usuarios como los iconos de las categorías los tomará de la versión desktop Se puede volver a la versión de escritorio en cache por un (1) día, al terminar las 24 horas te redirige a la versión mobile o con el botón de "entrada" que te muestra la web en el header Las imágenes de portada de los posts son extraídas del contenido del post automáticamente y comprimidas para ahorrar carga Reducción parcial del paquete de instalación de 0.58Mb versus la de Risus 2.12Mb (Reducción de archivos de un 72%) Reducción de tiempo de carga de un 82% Test de velocidad en Postland vía Pingdom Website Speed Test VERSIÓN DESKTOP VERSIÓN MOBILE Se puede notar la gran diferencia tanto en velocidad de carga como tamaño de página, archivos y peticiones. IMAGENES (Tomadas desde Samsumg Galaxy Spica) INSTALACIÓN Dentro del zip de descarga se encuentra un archivo .html con la instalación completa del mod, sin embargo la colocaré a continuación: 1) Generar la siguiente consulta: ALTER TABLE `w_configuracion` ADD `mobile` TINYTEXT NOT NULL AFTER `url`; 2) En el archivo header.php buscar: // Limpiar variables... cleanRequest(); Agregar debajo: // Salir de version mobil por 1 dia if(isset($_GET['mobile'])){setcookie('mobile', $_GET['mobile'], time() + 86400);} Al final de ese mismo archivo agregar: if($tsCore->settings['isMobile']) { echo '<div style="background: #B8DCFF;width: 100%;overflow: hidden;font-size: 15px;padding: 16px;color: #000;text-align: center;">Navega mejor por '.$tsCore->settings['titulo'].' en nuestra versión mobile <a class="mBtn btnOk" href="'.$tsCore->settings['mobile'].'" onclick="document.cookie = \'mobile=;expires=Thu, 01 Jan 1970 00:00:01 GMT;\'">Entrar</a></div>'; } 3) En c.core.php buscar: function tsCore() Agregar arriba: public function isMobile() { $mobiles = array( "midp", "240x320", "blackberry", "netfront", "nokia", "panasonic", "portalmmm", "sharp", "sie-", "sonyericsson", "symbian", "windows ce", "windows phone", "benq", "mda", "mot-", "opera mini", "philips", "pocket pc", "sagem", "samsung", "sda", "sgh-", "vodafone", "xda", "iphone", "android" ); foreach($mobiles as $mobileClient) { if (strstr(strtolower($_SERVER['HTTP_USER_AGENT']), $mobileClient)) return true; } return false; } Mas abajo buscar: $this->settings['novemods'] = $this->getNovemods(); Agregar debajo: $this->settings['isMobile'] = $this->isMobile(); Mas abajo buscar: function getTema() { Agregar debajo: if($this->isMobile() && !empty($this->settings['mobile']) && empty($_COOKIE['mobile']) && empty($_GET['mobile'])) { header('Location: '.$this->settings['mobile'].$_SERVER['REQUEST_URI']); } 4) En c.admin.php buscar: 'url' => $tsCore->setSecure($tsCore->parseBadWords($_POST['url'])), Agregar debajo: 'mobile' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mobile'])), Mas abajo buscar: `url` = \'' . $c['url'] . '\', Agregar al lado: `mobile` = \'' . $c['mobile'] . '\', 5) En templates/admin_mods/m.admin_configs.tpl buscar: <dl> <dt><label for="ai_url">Dirección del sitio:</label></dt> <dd><input type="text" id="ai_url" name="url" maxlength="32" value="{$tsConfig.url}" /></dd> </dl> Agregar debajo: <dl> <dt><label for="mobile">Dirección del sitio para móviles:</label></dt> <dd><input type="text" id="mobile" name="mobile" maxlength="40" value="{$tsConfig.mobile}" /></dd> </dl> 6) Copiar el archivo config.inc.php de tu web a la carpeta donde se descomprimió los archivos del mod Risus Mobile. Ahora dependiendo de como quieren que se ejecute el mod Risus Mobile, sea en subdominio m.tuweb o lo tengan en una carpeta tuweb/mobile/, deberás descomprimir el zip descargado y dentro encontraras la carpeta themes como si fuera Risus normal, dentro de ella habráotra carpeta llamada default y si el tema que tienes ES DIFERENTE AL DEFAULT tendrás que cambiarle el nombre exactamente igual al nombre de la carpeta del tema que tengas instalado en tu web principal. Ejemplo, si en mi web principal tengo el theme KM-Tronos azul y su carpeta es themes/KM-Tronos_b entonces en la carpeta del mod mobile cambiare el nombre de la carpeta themes/default a themes/KM-Tronos_b para que asi se ajuste cada tema a ambas versiones de la web. Si deseas crear tu propio tema dependiendo del que tengas en la web principal, solo debes duplicar la carpeta default, cambiarle el nombre al del teme que tienes y editar el css y los tpls que quieras para hacer tu diseño acorde al theme que tengas, no está de más recordar que el tema que hice es el de Taringa!. Esa anterior instalación es mas que todo para activar en tu web su versión mobile Obviamente si no hay url, al entrar con un celular o tablet, no redireccionará a ningún lado. CRÉDITOS aperpen Por su función para detectar modelos de los dispositivos. Vellenger Por compartir Timthumb para comprimir las imágenes de portadas de los posts. Me ayudó a optimizar la función de extraer la portada del cuerpo de los posts. kevinzonaa Me ayudó a testear la web en distintos celulares. DEMO Puedes acceder desde tu celular a http://www.postland.com.mx/ que te redirecciona a http://m.postland.com.mx/ ACTUALIZACIONES 22/06/2014 - Etiqueta <meta> para adaptación de diseño a distintas resoluciones. 24/06/2014 - Enlace a sitio desktop (y no mobile) en los shares facebook, twitter y google. 22/07/2014 - Fix vídeos en posts: 26/07/2014 - Fix notificación: "La publicación que has solicitado no existe" DESCARGA risus_mobile V2.3.zip (515Kb) http://www.phpost.net/?showtopic=28313 Espero les guste el mod y comenten sus sugerencias, criticas, recomendaciones y obviamente si encuentran bugs. Nos vemos en otro aporte, disfrútenlo!
  17. Kmario19

    [MOD] Risus Mobile Kmario19

    En la versión 2.3
  18. Kmario19

    Bugs en las Comunidades Kmario

    Seguramente el theme no es compatible con la sección al 100%. No tengo cómo comprobar el diseño ya que no tengo ni el theme ni las secciones instaladas, si puedes subir alguna demo para verificar, sería genial. Por el momento puedes utilizar la función inspeccionar de tu navegador en los botones del editor al agregar posts para ver desde qué archivo se está cargando el diseño (estilos.css o agregar.css, etc.) y verificar que en las comunidades ese mismo archivo esté cargado.
  19. Kmario19

    Donde agregar esto?

    Hola. Para los posts basta con ir al archivo c.posts.php y buscar la función getAutor, luego un par de líneas debajo, más o menos en la línea 412, puedes agregar u.user_vips al lado de cualquiera de los otros atributos separados por comas, por ejemplo u.user_rango. Para usarlo en la plantilla, ve al archivo templates/modules/m.posts_autor.tpl y aquí usarías la variable $tsAutor.user_vips para el condicional (nótese que en este caso no es $tsInfo). Para la hovercard, en el archivo c.users.php busca la funcion getVCard y un poco más abajo en la línea 352 aprox, podrás agregar u.user_vips al lado de u.user_name (o cualquier otro respetando la coma). Ahora irás al archivo templates/t.php_files/p.live_vcard.tpl y acá la variable a usar para el condicional sería $tsData.user_vips. Espero te sirva. Saludos.
  20. Kmario19

    [MOD] Risus Mobile V2.5

    El proceso de instalación esta detallado al inicio del hilo. Funciona en ambas plataformas, de cierta manera es responsive pero es el diseño exclusivo para dispositivos móviles, es decir, al entrar desde una pc se vera como lo tengas actualmente en tu sitio y no así como está en este post.
  21. Muy bueno. Sugiero agregar el filtro de usuarios baneados/suspendidos: //TOTAL USUARIOS REGISTRADOS POR PAIS function getTotalUsuariosPais() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(user_pais) AS total, user_pais FROM u_perfil p, u_miembros u WHERE u.user_id = p.user_id AND user_activo = 1 && user_baneado = 0 GROUP BY user_pais ORDER BY total DESC LIMIT 15'); $data['data'] = result_array($query); // PAISES include(TS_EXTRA."datos.php"); foreach($data['data'] as $i => $dato) { $data['data'][$i]['pais'] = $tsPaises[$dato['user_pais']]; } return $data; } +1
  22. Kmario19

    Problemas con el Editor

    No debería darte error ya que lo que me temía es que cargaras primero acciones.js y luego wysibb.js que eso te mostraría el mismo error o cuando no existe el archivo pero como este no es el caso, me atrevería a culpar a esa mezcla cargada que tienes de js xD prueba dejando únicamente la última versión de jQuery sin migrador a ver ya que es la primera vez que veo que no funciona y la diferencia es que estas "actualizando" jquery.
  23. Kmario19

    Como instalar un tema

    @Cuarteteros Te ha dado una respuesta acertada
  24. Kmario19

    Como instalar un tema

    Hola @lautele, bienvenido a PHPost. Por lo general en cada hilo de descarga de un tema o skin para el script viene una breve instrucción de cómo instalarse correctamente, incluso en la descarga de los archivos suele tener un .txt con las instrucciones. Si lo anterior no es el caso, puedes descomprimir el archivo en la carpeta themes de tu script, verificas que dentro de la nueva carpeta este el archivo install.php, luego de esto ve al sitio, en la sección de administración, temas. Y aquí instalas el nuevo tema con el nombre que tiene la carpeta que se descomprimió, si se instala correctamente, puedes aplicarlo sin problemas a tu sitio. Por último te recomiendo vaciar la carpeta cache de tu web para evitar conflictos con el diseño. Si aún tienes problemas con la instalación del tema, deja el link del hilo del cual lo descargaste para brindarte un mejor soporte.
×