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

Search the Community

Showing results for tags 'complementos-mod'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • El núcleo de PHPost
    • Novedades e información
    • Off Topic
    • Presentaciones
  • PHPost Risus
    • Actualizaciones
    • Versión 1.1
    • Versión 1.2
  • La esquina
    • Rincón del PC
    • Rincón del móvil
  • Escuela de Actualización de Risus Phpost's PHP 7.X
  • Escuela de Actualización de Risus Phpost's Smarty
  • Escuela de Actualización de Risus Phpost's EXTRAS
  • Escuela de Actualización de Risus Phpost's Themes
  • Escuela de Actualización de Risus Phpost's Fixes
  • Escuela de Actualización de Risus Phpost's Actualizaciones

Calendars

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Sitio web


ICQ


Yahoo


Jabber


Skype


Localización


Intereses

Found 732 results

  1. 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
  2. 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
  3. 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!
  4. Hola gente en esta ocasión les traigo una nueva versión de mi mod :3 -Aconsejado por @Rengo ., ahora se puede autorizar a los rangos a publicar -Filtrar por usuario -Categorías administrables (esto lo pidieron varios en la versión beta) - Filtrar por Categorías Descargar : http://www.mediafire.com/file/8f3772z45st5a45/Catalogo+v3.zip Demo: http://mundofree.net/catalogo/ Se aceptan ideas para mejorar el complemento saludos
  5. Ultimos Registrados + Paises Aqui les dejo por pedido este mini-mod de ultimos registrados, al igual que el mod que habia solo mostraba la fecha, el avatar con el nombre del registrado. Este mostrara la procedencia de su pais. En c.posts.php al final antes de: } Agregamos arriba: /* getUltreg() */ function getUltreg(){ global $tsCore; // $query = mysql_query('SELECT u.user_id, u.user_name, u.user_registro, u.user_baneado, p.user_id, p.user_pais, v.pid, v.p_opcion, v.p_prefijo, v.p_img FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id LEFT JOIN u_paises AS v ON v.p_prefijo = p.user_pais WHERE u.user_baneado = 0 AND v.pid > 0 ORDER BY u.user_id DESC LIMIT 10'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } En posts.php buscamos: // DO <= PARA EL MENU $smarty->assign("tsDo",$_GET['do']); Y agregamos abajo: // ULTIMOS REGISTRADOS $smarty->assign("tsUltreg",$tsPosts->getUltreg()); Al final de extras.css agregamos: #ultregvell { background:#00CCFF; width:198px; height:auto; margin-bottom:5px; overflow:hidden; } ul.ultregvell { background:#FFF; border:1px solid #CCC; border-top:none; padding-bottom:10px; } ul.ultregvell li { display:block; border-bottom:1px dashed #CCC; padding:5px 0 5px 5px; } ul.ultregvell li:hover { background:#F8F8F8; } ul.ultregvell li a { color:#666; text-decoration:none; position:absolute; margin:-3px 5px 2px 5px; } ul.ultregvell li span { color:#666; position:absolute; margin:-12px 0 0 24px; } .regpais { float:right; margin-right:10px; cursor:pointer; } .regimg { width:20px; height:20px; } En t.home.tpl buscamos: {if $tsConfig.c_fotos_private == 1 && !$tsUser->is_member} {else} {include file='modules/m.home_fotos.tpl'} {/if} Y agregamos arriba: {include file='modules/m.ultimos_registrados.tpl'} Subimos el archivo m.ultimos_registrados.tpl a la carpeta /modules/ subimos la carpeta flags a la caprpeta /images/ Importamos la Tabla u_paises a nuestra Base de Datos. Descarga En los modulos anteriores deje ya la tabla u_paises y la carpeta /flags/ si ya la usaron salten esos pasos porque son los mismos archivos a usar. Espero que les sea de agrado. Hasta la Proxima.
  6. Aqui por pedido de este mini mod de puntos por posts.. El cual se puede otorgrar un valor para dar a los usuarios por posts creados una cantidad de puntos. Ya lo habia dejado, pero al parecer lo eliminaron.. Comenzamos: Hacemos esta consulta Sql ALTER TABLE w_configuracion ADD p_x_posts INT(11) NOT NULL; Ahora en c.posts.php buscamos: $postID = mysql_insert_id(); Y agregamos abajo: // Puntos por posts by Vellenger mysql_query('UPDATE u_miembros SET user_puntos = user_puntos + \''.(int)$tsCore->settings['p_x_posts'].'\' WHERE user_id = \''.(int)$tsUser->uid.'\''); En c.admin.php buscamos: 'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])), Y agregamos despues: 'p_x_posts' => $tsCore->setSecure($_POST['p_x_posts']), Buscamos: '\', `offline_message` = \'' . $c['offline_message']. Y agregamos despues: '\', `p_x_posts` = \'' . $c['p_x_posts']. En el archivo agregar.php buscamos: $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => 'El post <b>'.$_POST['titulo'].'</b> fue agregado. '.(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); Y lo cambiamos por: $smarty->assign("tsAviso",array('titulo' => 'Bien!', 'mensaje' => "El post <b>".$_POST['titulo']."</b> fue agregado.<br/> <i>Has recibido una bonificacion de: <blink><b style='color:#00CCFF;'>{$tsCore->settings['p_x_posts']}</b></blink> Puntos.</i>".(!$tsUser->is_admod && ($tsUser->permisos['gorpap'] == true || $tsCore->settings['c_desapprove_posts'] == 1) ? 'Deber&aacute; esperar su aprobaci&oacute;n' : '').' ', 'but' => 'Acceder al post', 'link' => "{$tsCore->settings['url']}/posts/{$tsCat['c_seo']}/$tsPost/{$tsCore->setSEO($_POST['titulo'])}.html")); En el archivo m.admin_configs.tpl buscamos: <dl> <dt><label for="ai_max_nots">M&aacute;ximo de notificaciones:</label><br /><span>Cuantas notificaciones puede recibir un usuario.</span></dt> <dd><input type="text" id="ai_max_nots" name="max_nots" style="width:10%" maxlength="3" value="{$tsConfig.c_max_nots}" /></dd> </dl> Y agregamos abajo: <dl> <dt><label for="p_x_posts">Puntos por Posts:</label><br /><span>Puntos que recibira como bonificacion un user al subir un posts.</span></dt> <dd><input type="text" id="p_x_posts" name="p_x_posts" style="width:10%" maxlength="3" value="{$tsConfig.p_x_posts}" /></dd> </dl> Eso seria todo.. Espero que les sea de agrado-. Hasta la Proxima..
  7. Que tal a todos comparto esta versión de portadas para los posts que es un poco más completa y que había hecho antes pero para la versión de to-up, así es como quedaría: Para la default: Para esto no deben tener NINGÚN MOD DE ESTE TIPO ya que manejo otra variable en la BD y puede crear confusión a la hora de instalarla.... Bueno la instalación es la siguiente: 1) Crean esta consulta en la BD ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL 2) Abrimos c.posts.php y buscamos: /* getPreview() */ function getPreview(){ global $tsCore; // $titulo = $tsCore->setSecure($_POST['titulo'], true); $cuerpo = $tsCore->setSecure($_POST['cuerpo'], true); // return array('titulo' => $titulo, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } Reemplazamos por: /* getPreview() */ function getPreview(){ global $tsCore; // $titulo = $tsCore->setSecure($_POST['titulo'], true); $imagen = $tsCore->setSecure($_POST['imagen'], true); $cuerpo = $tsCore->setSecure($_POST['cuerpo'], true); // return array('titulo' => $titulo, 'imagen' => $imagen, 'cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } 3) Buscamos un poco mas abajo: 'title' => $tsCore->parseBadWords($tsCore->setSecure($_POST['titulo'], true)),2, Debajo de eso agregamos 'portada' => $tsCore->setSecure($_POST['imagen']), 4) Buscamos un poco mas abajo: // INSERTAMOS $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); } if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = mysql_insert_id(); Reemplazamos por: // INSERTAMOS $_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'] ? $_SERVER['X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if(!filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP)) { die('0: Su ip no se pudo validar.'); } if(mysql_query('INSERT INTO `p_posts` (post_user, post_category, post_title, post_portada, post_body, post_date, post_tags, post_ip, post_private, post_block_comments, post_sponsored, post_sticky, post_smileys, post_visitantes, post_status) VALUES (\''.$tsUser->uid.'\', \''.(int)$postData['category'].'\', \''.$postData['title'].'\', \''.$postData['portada'].'\', \''.$postData['body'].'\', \''.$postData['date'].'\', \''.$postData['tags'].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$postData['private'].'\', \''.(int)$postData['block_comments'].'\', \''.(int)$postData['sponsored'].'\', \''.(int)$postData['sticky'].'\', \''.(int)$postData['smileys'].'\', \''.(int)$postData['visitantes'].'\', '.(!$tsUser->is_admod && ($tsCore->settings['c_desapprove_post'] == 1 || $tsUser->permisos['gorpap'] == true) ? '\'3\'' : '\'0\'').')')) { $postID = mysql_insert_id(); 5) Ahora un poco mas abajo buscamos 'title' => $tsCore->parseBadWords($_POST['titulo'], true), Agregamos debajo: 'portada' => $tsCore->setSecure($_POST['imagen'], true), 6) Mas abajo buscamos: // ACTUALIZAMOS if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){ if(mysql_query('UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or die(mysql_error())) { Lo reemplazamos por: // ACTUALIZAMOS if($tsUser->uid == $data['post_user'] || !empty($tsUser->is_admod) || !empty($tsUser->permisos['moedpo'])){ if(mysql_query('UPDATE p_posts SET post_title = \''.$postData['title'].'\', post_portada = \''.$postData['portada'].'\', post_body = \''.$postData['body'].'\', post_tags = \''.$tsCore->setSecure($postData['tags']).'\', post_category = \''.(int)$postData['category'].'\', post_private = \''.$postData['private'].'\', post_block_comments = \''.$postData['block_comments'].'\', post_sponsored = \''.$postData['sponsored'].'\', post_smileys = \''.$postData['smileys'].'\', post_visitantes = \''.$postData['visitantes'].'\', post_sticky = \''.$postData['sticky'].'\' WHERE post_id = \''.(int)$post_id.'\'') or die(mysql_error())) { 7) Mas abajo buscamos: // ES SU POST EL Q INTENTA BORRAR? $query = mysql_query('SELECT post_id, post_title, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\''); $data = mysql_fetch_assoc($query); mysql_query('UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\''); mysql_query('UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\''); // ES MIO O SOY MODERADOR/ADMINISTRADOR... if(!empty($data['post_id']) || !empty($tsUser->is_admod)){ // SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES if(mysql_query('DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) { if(mysql_query('DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) { if(mysql_query('INSERT INTO `p_borradores` (b_user, b_date, b_title, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')')) return "1: El post fue eliminado satisfactoriamente."; } Lo reemplazamos por: // ES SU POST EL Q INTENTA BORRAR? $query = mysql_query('SELECT post_id, post_title, post_portada, post_user, post_body, post_category FROM p_posts WHERE post_id = \''.(int)$post_id.'\' AND post_user = \''.$tsUser->uid.'\''); $data = mysql_fetch_assoc($query); mysql_query('UPDATE `w_stats` SET `stats_posts` = stats_posts - \'1\' WHERE `stats_no` = \'1\''); mysql_query('UPDATE `u_miembros` SET `user_posts` = user_posts - \'1\' WHERE `user_id` = \''.$data['post_user'].'\''); // ES MIO O SOY MODERADOR/ADMINISTRADOR... if(!empty($data['post_id']) || !empty($tsUser->is_admod)){ // SI ES MIS POST LO BORRAMOS Y MANDAMOS A BORRADORES if(mysql_query('DELETE FROM p_posts WHERE post_id = \''.(int)$post_id.'\'')) { if(mysql_query('DELETE FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\'')) { if(mysql_query('INSERT INTO `p_borradores` (b_user, b_date, b_title, b_portada, b_body, b_tags, b_category, b_status, b_causa) VALUES (\''.$tsUser->uid.'\', \''.time().'\', \''.$tsCore->setSecure($data['post_title']).'\', \''.$tsCore->setSecure($data['post_portada']).'\', \''.$tsCore->setSecure($data['post_body']).'\', \'\', \''.$data['post_category'].'\', \'2\', \'\')')) return "1: El post fue eliminado satisfactoriamente."; } 8) Más abajo buscamos: /*********/ $query = 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\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start); $lastPosts['data'] = result_array($query); Lo reemplazamos por: /*********/ $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_puntos, p.post_hits, 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\'').' '.$c_where.' '.$s_where.' GROUP BY p.post_id ORDER BY '.$s_order.' DESC LIMIT '.$start); $lastPosts['data'] = result_array($query); 9) Casi al final buscamos: $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']); $data['data'] = result_array($query); Lo reemplazamos por: $query = mysql_query('SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_portada, p.post_date, p.post_comments, p.post_favoritos, p.post_puntos, u.user_name, c.c_seo, c.c_nombre, c.c_img FROM p_posts AS p LEFT JOIN u_miembros AS u ON u.user_id = p.post_user LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = \'0\' '.$where_cat.' '.$w_autor.' '.$w_search.' ORDER BY p.post_date DESC LIMIT '.$data['pages']['limit']); $data['data'] = result_array($query); 10) Ahora abrimos c.borradores.php y buscamos: 'title' => $tsCore->setSecure($tsCore->parseBadWords($_POST['titulo']), true), Agregamos debajo: 'portada' => $tsCore->setSecure($_POST['imagen'], true), 11) Más abajito buscamos: // INSERT if(mysql_query('INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.mysql_insert_id(); else return '0: '.mysql_error(); Lo reemplazamos por // INSERT if(mysql_query('INSERT INTO `p_borradores` (`b_user`, `b_date`, `b_title`, `b_portada`, `b_body`, `b_tags`, `b_category`, `b_private`, `b_block_comments`, `b_sponsored`, `b_sticky`, `b_smileys`, `b_visitantes`, `b_status`, `b_causa`) VALUES (\''.$tsUser->info['user_id'].'\', \''.$draftData['date'].'\', \''.$draftData['title'].'\', \''.$draftData['portada'].'\', \''.$draftData['body'].'\', \''.$draftData['tags'].'\', \''.$draftData['category'].'\', \''.$draftData['private'].'\', \''.$draftData['block_comments'].'\', \''.$draftData['sponsored'].'\', \''.$draftData['sticky'].'\', \''.$draftData['smileys'].'\', \''.$draftData['visitantes'].'\', \'1\', \'\')')) return '1: '.mysql_insert_id(); else return '0: '.mysql_error(); 12) Más abajo buscamos: $bid = intval($_GET['action']); $query = mysql_query('SELECT bid, b_user, b_date, b_title, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1'); // Lo reeemplazamos por: $bid = intval($_GET['action']); $query = mysql_query('SELECT bid, b_user, b_date, b_title, b_portada, b_body, b_tags, b_category, b_private, b_block_comments, b_sponsored, b_sticky, b_smileys, b_post_id, b_status, b_causa FROM `p_borradores` WHERE `bid` = \''.(int)$bid.'\' AND `b_user` = \''.$tsUser->info['user_id'].'\' AND b_status = \''.$status.'\' LIMIT 1'); // Guardamos y ahora nos vamos con elde diseño: 13) abrimos m.agregar_from.tpl que esta en templates/modules y buscamos <li> <label>T&iacute;tulo</label> <span style="display: none;" class="errormsg"></span> <input type="text" tabindex="1" name="titulo" maxlength="60" size="60" class="text-inp required" value="{$tsDraft.b_title}" style="width:760px"/> <div id="repost"></div> </li> Agregamos debajo: <li> <label>Portada</label> <span style="display: none;" class="errormsg"></span> <input type="text" tabindex="2" name="imagen" maxlength="180" size="60" class="text-inp required" value="{$tsDraft.b_portada}" /> <p style="color:#999;font-size: 11px;margin: 2px 0 5px 2px;">URL de la imagen como caratula para la home</p> </li> Y un poco más abajo donde dice "Contenido del post" buscamos tabindex y ese "2" lo cambiamos a "3" 14) Abrimos t.buscador.tpl y buscamos: <td title="{$r.c_nombre}" style="background:url({$tsConfig.tema.t_url}/images/icons/cat/{$r.c_img}) no-repeat center center;">&nbsp;</td> Lo reemplazamos por: <td title="{$r.c_nombre}"><a href="{$tsConfig.url}/posts/{$r.c_seo}/{$r.post_id}/{$r.post_title|seo}.html"><img height="47" width="47" style="border: solid 1px gray;" src="{$r.post_portada}"/></a></td> 15) Al final de estilo.css agregamos #ppostc { padding: 5px; float: left; } #listpost { width: 200px; height: 150px; display: inline-block; position: relative; margin: 5px; box-shadow: 0 1px 4px #BBB; border-radius: 4px; float: left; } #listpost a { display: block; position: relative; text-decoration: none; } #listpost .ptitle { display: table-cell; vertical-align: middle; text-align: center; position: relative; max-width: 170px; color: #FFF; background-color: rgba(0,0,0,0.57); padding: 3px 5px; border-radius: 5px; opacity: 1; z-index: 10; top: 4px; text-shadow: 0 1px 0 black; font-size: 10px; font-family: Helvetica,Arial,sans-serif; font-weight: bold; font-style: italic; } #listpost .pimagen { position: absolute; top: 0; left: 0; display: block; border-radius: 4px; width: 200px; height: 150px; background-color: #f7f7f7; background-image: url('images/load-img.gif'); background-position: center center; background-repeat: no-repeat; } #listpost .pimagen:hover { opacity: 0.7; } #listpost .pimagen img { width: 200px; height: 150px; border: 0; border-radius: 4px; -webkit-filter: grayscale(0%); image-rendering: optimizespeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neighbor; } #listpost .pinfo { position: absolute; right: 7px; top: 129px; color: white; background-color: rgba(0,0,0,0.57); font-size: 10px; padding: 3px 5px; border-radius: 5px; z-index: 9; text-shadow: 0 1px 0 black; line-height: 9px; } #listpost .pavatar { top: 114px; left: 5px; border-radius: 4px; position: absolute; } #listpost .pavatar img { width: 30px; border-radius: 4px; box-shadow: 0 0 3px black; } #listpost .pbloq { background-position: -220px -120px!important; background: url(images/p-icons.png) no-repeat; display: block; top: 129px; left: 179px; opacity: 0.5; padding: 0px 18px 16px 0; position: absolute; } #listpost .pstar{ display: block; background: url(images/pstar.png) no-repeat; top: 5px; left: 182px; padding: 0px 24px 24px 0; position: absolute; z-index: 10; } #listpost .pinfo span { background: url(images/p-icons.png) no-repeat; display: inline-block; margin: -1px 2px; width: 14px; height: 9px; text-indent: 17px; } #listpost .pinfo .puntos{ background-position: -160px -217px; } #listpost .pinfo .visitas { background-position: -254px -199px; } #listpost .pinfo .comentarios { background-position: -237px -218px; } Descargan este rar → http://puu.sh/2FezU.zip 16) Ahora guardamos y reemplazamos los siguientes archivos de la carpeta modules m.home_last_posts.tpl m.agregar_javascript.tpl 17) subimos las imágenes a la carpeta images load-img.gif p-icons.png pstar.png Y con eso queda terminado el mod, los borradores funcionan perfectamente y le agregue el titulo y la portada al previsualizar el post: He desactivado la opción de "nuevo" o "popular" Si ven en m.home_last_posts.tpl que he modificado, está la linea: <!--{if $p.post_hits > 5} <span class="pstar qtip" title="Popular"></span> {/if}--> Que, si quieren activarlo para que muestre, si tiene más de 5 visitas, una estrella como titulo de "popular", se lo pueden editar a su gusto para cuantas visitas quieran donde dice $p.post_hits > 5 y simplemente eliminan el bloqueo: <!-- y --> Para que quede normalmente así y activo: {if $p.post_hits > 5} <span class="pstar qtip" title="Popular"></span> {/if} Y como extra se podrá ver también en el buscador de post: Y listo, eso es todo, espero les haya gustado el mod ya que muchos me lo habían pedido hace ya un rato pero no lo había publicado para la V4... el diseño pueden cambiárselo a su gusto o editar simplemente m.home_last_posts.tpl donde se ve las portadas en la home y adapten a otros temas. Nos vemos en otro mod, adios.
  8. Top Fotos en la Home Aqui les dejo ese mini-mod que muestra las top fotos en la home. Es algo simple pero me lo pidieron, asi que se los comparto con Uds. En c.posts.php al final antes de la ultima } Agregamos arriba: /* getTopFotos() */ function getTopFotos(){ global $tsCore; // $query = mysql_query('SELECT f.foto_id, f.f_title, f.f_date, f.f_description, f.f_url, f.f_user, f.f_votos_pos, f.f_votos_neg, f.f_status, u.user_id, u.user_name, u.user_rango, u.user_baneado, r.rango_id, r.r_name, r.r_color FROM f_fotos AS f LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE u.user_baneado = 0 ORDER BY f.f_votos_pos DESC LIMIT 5'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } En posts.php buscmos: // DO <= PARA EL MENU $smarty->assign("tsDo",$_GET['do']); Y agregamos abajo: // TOP FOTOS $smarty->assign("tsTopFotos",$tsPosts->getTopFotos()); En t.home.tpl buscamos: {include file='modules/m.home_stats.tpl'} Y agregamos abajo: {include file='modules/m.home_top_fotos.tpl'} Al final de extras.css agregamos: ul.topf li { display:block; border-bottom:1px solid #CCC; height:62px!Important; color:#666; } ul.topf li:hover { background:#EEE; } ul.topf li img { width:52px; height:52px; padding:1px; margin:5px; border:1px solid #CCC; } ul.topf li img:hover { background:#FFF; opacity:0.70; border:1px solid #00CCFF; } .titf { font-weight:600; position:absolute; float:left; margin:5px; } .autfot { position:absolute; float:left; margin: -45px 0 0 72px; } Subimos el archivo m.home_top_fotos.tpl a la carpeta modules. Descarga Esto fue realizado para el theme default, pero funciona para cualquier theme, el diseño se lo pueden modificar a gusto ya que la mayoria ya saben del tema.. Espero que les sea de utilidad.. Hasta la Proxima..
  9. Hola, traigo esta pequeña modificación, es un dialogo de confirmación para cerrar sesión. Utilizo el plugin "mydialog" que trae por default el script por lo que no hará falta nada más. Este MOD lo vi hace años, lo publicó un usuario llamado mega-lucas ((o algo así (aún mantengo su V5 )) Instrucciones. 1. Abrir el archivo acciones.js y al ultimo del archivo colocar: /* Logout confirm by Altffenser */ function open_logout_box() { mydialog.show(); mydialog.title('Cerrar sesión'); mydialog.body('Estas a punto de salir de tu cuenta. <b>¿Seguro que deseas continuar?</b>'); mydialog.buttons(true, true, 'Cerrar sesión', 'logout_by_now()', true, false, true, 'No, permanecer aquí', 'close', true, true); mydialog.center(); } function logout_by_now(){ $(function (){ window.location.href = global_data.url + "/login-salir.php"; }); } 2. Abrir el archivo head_menu.tpl y buscar: <li class="logout"> <a href="{$tsConfig.url}/login-salir.php" style="vertical-align: middle" title="Salir"> <span class="systemicons logout"></span> </a> </li> a) Reemplazar por: <li class="logout"> <a href="#" onclick="open_logout_box();" style="vertical-align: middle" title="Salir"> <span class="systemicons logout"></span> </a> </li> ¡Has terminado! Con eso lo tendrán, ahora cada que den clic en "salir"; primero aparecerá un dialogo como este: Es muy sencillo el MOD pero a mi parecer, se ve bien Saludos
  10. Top Posts Favorito y Top Visitado Aqui les dejo por pedido de este topic. El cual pedia un bloque de top posts visitados, y tambien pidieron un top posts favoritos, asi que les dejo estos dos mini-mod para que lo pueda usar y lo que lo quieran tambien.. En c.posts.php buscamos: /* lalala */ Y agregamos arriba: /* Top Posts Favoritos por Vellenger ._.*/ function topfav(){ global $tsCore, $tsUser; $query = mysql_query('SELECT c.cid, c.c_nombre, c.c_seo, c.c_img, p.post_favoritos, p.post_id, p.post_title, p.post_category, p.post_status FROM p_categorias AS c LEFT JOIN p_posts AS p ON p.post_category = c.cid WHERE p.post_status = 0 AND p.post_favoritos >0 GROUP BY p.post_id ORDER BY p.post_favoritos DESC LIMIT 15'); $data = result_array($query); // return $data; } /* Top Posts Visitados por Vellenger ._.*/ function topvis(){ global $tsCore, $tsUser; $query = mysql_query('SELECT c.cid, c.c_nombre, c.c_seo, c.c_img, p.post_hits, p.post_id, p.post_title, p.post_category, p.post_status FROM p_categorias AS c LEFT JOIN p_posts AS p ON p.post_category = c.cid WHERE p.post_status = 0 AND p.post_hits >0 GROUP BY p.post_id ORDER BY p.post_hits DESC LIMIT 15'); $data = result_array($query); // return $data; } En posts.php buscamos: $smarty->assign("tsDo",$_GET['do']); Y agregamos abajo: $smarty->assign("tsTopfav",$tsPosts->topfav()); $smarty->assign("tsTopvis",$tsPosts->topvis()); En t.home.tpl buscamos: {include file='modules/m.home_stats.tpl'} Y agregamos abajo: {include file='modules/m.home_top_posts_fav.tpl'} {include file='modules/m.home_top_posts_vis.tpl'} Subimos el archivo m.home_top_posts_fav.tpl y m.home_top_posts_vis.tpl a la carpeta Modules. http://www.mediafire.com/download/7d3uv560buxxh03/Top-Posts.zip Les dejo los archivos con la instalacion en un txt Se realizo sobre la default, asi que Uds. le dan el estilo deacorde al theme que usen... Hasta la Proxima..
  11. Bueno primero antes que nada he visto que este mod es importante para muchos y otro tenerlo actualizado también es importante para los nuevos que quieran tener este grandioso mod, bueno este mod esta para la 1.1 así que créditos al creador por dejarlo aquí La instalación es la misma solo que sube este archivos que dejo yo para la versión 1.2 de PHPost: Mega o sino tenes Mediafire como mas guste: 1- descarguen el archivo y suban a la carpeta inc/php/ 2 - abrán su .htaccess y pongan esto : # sitemap RewriteRule ^sitemap.xml$ inc/php/sitemap.php [L,NC,QSA] # rss RewriteRule ^rss$ inc/php/rss.posts.php [L,NC,QSA] Yo tengo arriba de #NO PERMITIR LA DESCARGA DE ARCHIVOS .TPL Bueno cualquier problema hazme de saber, aunque yo los tengo y no tengo ningún problema y lo uso también para que se auto publique en facebook y todo eso bueno nos vemos amigos. Saludos.-
  12. Hola a todos/as hoy cuando continuando con mi V5 basada en "FullPost" se me ocurrio la idea de crear el mini-mod de Usuarios Online nada mas que este no es envivo pero esta muy bueno Bueno primero le doy creditos a ouch01 me ayudo bastante con algunas cosas, bueno en casi todo les dejo unas caps del mini-mod : Y Cuando no hay nadie conectado Así se ve en la v4 Bueno basta de caps y empecemos con la instalacion (RECOMIENDO HACER BACKUP DE LOS ARCHIVOS A EDITAR) 1) Vamos al C.user.php que esta en (inc/class) y buscamos ... getUsuarios() */ function getUsuarios(){ global $tsCore; // FILTROS || $is_online = (time() - ($tsCore->settings['c_last_active'] * 60)); $is_inactive = (time() - (($tsCore->settings['c_last_active'] * 60) * 2)); // DOBLE DEL ONLINE // ONLINE? if($_GET['online'] == 'true'){ $w_online = 'AND u.user_lastactive > '.$is_online.''; } // CON FOTO if($_GET['avatar'] == 'true'){ $w_avatar = 'AND p.p_avatar = 1'; } Y lo reemplazamos por ... getUsuarios() */ function getUsuarios(){ global $tsCore; // FILTROS || $is_online = (time() - ($tsCore->settings['c_last_active'] * 60)); $is_inactive = (time() - (($tsCore->settings['c_last_active'] * 60) * 2)); // DOBLE DEL ONLINE // ONLINE? if($_GET['online'] == 'true'){ $w_online = 'AND u.user_lastactive > '.$is_online.''; } // CON FOTO if($_GET['avatar'] == 'true'){ $w_avatar = 'AND p.p_avatar = 1'; } 2) Luego Vamos al Posts.php que esta en (inc/php) Y buscamos ... // AFILIADOS $smarty->assign("tsAfiliados",$tsAfiliado->getAfiliados()); // DO <= PARA EL MENU $smarty->assign("tsDo",$_GET['do']); } y lo reemplazamos por ... // AFILIADOS $smarty->assign("tsAfiliados",$tsAfiliado->getAfiliados()); // DO <= PARA EL MENU $smarty->assign("tsDo",$_GET['do']); $_GET['online'] = true; $tsUsers = $tsUser->getUsuarios(); $smarty->assign("tsUsers",$tsUsers['data']); } 3) Vamos a \themes\default\templates\modules y agregamos este archivo m.home_usuarios_on.tpl 4) despues vamos a \themes\default\templates\ y abrimos el archivo t.home.tpl Buscamos... <div id="derecha"> Abajo Agregamos ... {include file='modules/m.home_usuarios_on.tpl'} Bueno eso seria todo, hasta la proxima. Comenten o envien un mensaje si tienen problemas y le doy nuevamente los creditos a ouch01
  13. Estadisticas Usuarios Por Paises y Rangos + MP Masivos Aqui les dejo este complemento por pedido, en si habia una verion para enviar MP internamente, pero solo para rangos, esta vercion tiene la opcion de enviar a rangos por paises, ademas de mostrar una estadistica de todos los usuarios registrados en cada pais, y la cantidad de usuarios por rangos. En .htaccess buscamos: RewriteRule ^admin/news/nueva inc/php/admin.php?action=news&act=nuevo [QSA,L] Y agregamos abajo: RewriteRule ^admin/mp/new inc/php/admin.php?action=mp&act=new [QSA,L] En admin.php buscamos: /** NOTICIAS **/ } elseif($action == 'news'){ Y agregamos arriba: }elseif($action == 'mp'){ if($act == 'new' && !empty($_POST['mpvell']) && !empty($_POST['tipvell'])){ if($tsAdmin->newMp()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/mp?save=true'); } En c.core.php buscamos: $this->settings['categorias'] = $this->getCategorias(); Y agregamos abajo: $this->settings['rangos'] = $this->getRangos(); $this->settings['paises'] = $this->getPaises(); Buscamos: /* getCategorias() */ function getCategorias() { // CONSULTA $query = mysql_query('SELECT cid, c_orden, c_nombre, c_seo, c_img FROM p_categorias ORDER BY c_orden'); // GUARDAMOS $categorias = result_array($query); // return $categorias; } Y agregamos abajo: /* getRangos() */ function getRangos() { // CONSULTA $query = mysql_query('SELECT COUNT(r.rango_id) AS total, u.user_rango, u.user_baneado, r.rango_id, r.r_name, r.r_color, r.r_image FROM u_miembros AS u LEFT JOIN u_rangos AS r ON u.user_rango = r.rango_id WHERE u.user_baneado = 0 GROUP BY r.rango_id ORDER BY r.rango_id ASC'); // GUARDAMOS $rangos = result_array($query); // return $rangos; } /* getPaises() */ function getPaises() { // CONSULTA $query = mysql_query('SELECT COUNT(p.pid) AS total, p.pid, p.p_opcion, p.p_prefijo, p.p_img, v.user_pais FROM u_paises AS p LEFT JOIN u_perfil AS v ON v.user_pais = p.p_prefijo GROUP BY v.user_pais ORDER BY p.pid ASC'); // GUARDAMOS $paises = result_array($query); // return $paises; } En c.admin.php buscamos al final: /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ } Y agregamos arriba: /* newMp() */ function newMp() { global $tsCore, $tsUser; // $mran=(int)$_POST['mran']; $mpais=$tsCore->setSecure($_POST['mpais']); $tipvell=$tsCore->setSecure($_POST['tipvell']); $mpvell=$tsCore->setSecure($_POST['mpvell']); $fecha= time(); if($tsUser->is_admod==1){ if($mran==0 && $mpais=='0'){ $where='WHERE p.user_id != \''.$tsUser->uid.'\''; }elseif($mran!=0 && $mpais!='0'){ $where='WHERE p.user_pais = \''.$mpais.'\' && u.user_rango = \''.$mran.'\' && p.user_id != \''.$tsUser->uid.'\''; }elseif($mran!=0 && $mpais =='0'){ $where='WHERE u.user_rango = \''.$mran.'\' && p.user_id != \''.$tsUser->uid.'\''; }elseif($mran==0 && $mpais !='0'){ $where='WHERE p.user_pais = \''.$mpais.'\' && p.user_id != \''.$tsUser->uid.'\''; } $query = mysql_query('SELECT u.user_id, u.user_rango, p.user_id, p.user_pais FROM u_miembros AS u LEFT JOIN u_perfil AS p ON p.user_id = u.user_id '.$where.''); if(!$query) die(mysql_error()); $data = result_array($query); foreach($data as $dato){ $sql = 'INSERT INTO u_mensajes (mp_to,mp_from,mp_subject,mp_preview,mp_date) VALUES (\''.$dato['user_id'].'\', \''.$tsUser->uid.'\', \''.$tipvell.'\', \''.$mpvell.'\', \''.$fecha.'\')'; $result = mysql_query($sql); $mp_id = mysql_insert_id(); mysql_query('INSERT INTO `u_respuestas` (mp_id, mr_from, mr_body, mr_ip, mr_date) VALUES (\''.(int)$mp_id.'\', \'1\', \''.$mpvell.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.time().'\')'); } } if($result) return true; else return false; } En t.admin.tpl buscamos: {/if} Y agregamos arriba: {elseif $tsAction == 'mp'} {include file='admin_mods/m.admin_mp.tpl'} En m.admin_sidemenu.tpl buscamos: <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/rangos">Rangos de Usuarios</a></span></li> Y agregamos abajo: <li id="a_users"><span class="cat-title"><a href="{$tsConfig.url}/admin/mp">Mensajes Masivos</a></span></li> Al final de extras.css agregamos: .mensajesvell { border-right: solid 1px #C6C6C6; border-left: solid 1px #C6C6C6; border-top: solid 1px #CECECE; border-bottom: solid 1px #A4A4A4; box-shadow: 0 1px 1px lightGrey; -mox-box-shadow: 0 1px 1px #D3D3D3; -webkit-box-shadow: 0 1px 1px lightGrey; padding: 10px 20px; width: 500px; min-height:150px!important; } .mensajesvell:hover { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; } .mensajesvell:focus { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; } .titlv { border-right: solid 1px #C6C6C6; border-left: solid 1px #C6C6C6; border-top: solid 1px #CECECE; border-bottom: solid 1px #A4A4A4; box-shadow: 0 1px 1px lightGrey; -mox-box-shadow: 0 1px 1px #D3D3D3; -webkit-box-shadow: 0 1px 1px lightGrey; padding: 2px 5px; width: 300px; min-height:20px!important; text-align:center; } .titlv:hover { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; } .titlv:focus { box-shadow: 0 0 5px 0 #B5DFF1; -moz-box-shadow: 0 0 5px 0 #B5DFF1; -webkit-box-shadow: 0 0 5px 0 #B5DFF1; border: 1px solid #38B2E5; color:#666; } .mp-vell { padding:10px; height:auto; } div.mp-vell ul { background:#EEE; padding:10px; } div.mp-vell ul li { border-bottom:1px dashed #CCC; margin-top:5px; } div.mp-vell ul li a { float:right; margin-right:20px; } Importamos el archivo u_paises a la BD. Subimos los archivos a sus respectivas carpetas.... Descarga Dentro de los archivos les deje la Instalacion en un txt. Tambien encontraran la carpeta flags que contiene todas las banderas faltantes al script.. solo reemplazar las que ya tienen asi tendran todas las banderitas.. Importante subir la tabla u_paises a su BD. Si ya aplicaron los complementos anteriores que deje con los mismos archivos de la carpete /flags/ y la tabla u_paises salteen el paso xq son los mismos archivos. Espero que les sea de Utilidad.. Cualquier problema me avisan.. Hasta la Proxima..
  14. Primero que nada quiero aclarar que esto funciona igual para cualquier tipo de publicidad, ya sea adsense, o no , inclusive si se quiere usar para otra cosa funciona perfecto, como por ejemplo ponerle un contador enlugar de la publicidad, Esto nos dara talvez mejores resultados / ganancias en nuestra cuenta de adsense. (Tambien hasta donde se, adsense permite el uso de esto) Para colocarlo en nuestros sitio nos dirigimos a la hoja de estilo .css (/themes/default/estilo.css) y pegamos este codigo: #superponer div.adsense {margin: 0; padding: 0; position: absolute;left:52px; bottom:19px;} Buscamos el siguiente codigo en : m.fotos_ver_content.tpl (themes/default/templates/modules/m.fotos_ver_content.tpl) <img class="img" src="{$tsFoto.f_url}" /> y entonces agregamos antes de ese codigo, el siguiente: <div id="superponer"> denuevo otra vez buscamos : <img class="img" src="{$tsFoto.f_url}" /> y colocamos despues de el, este otro codigo: <div class="adsense"> Colocar aqui el codigo de publicidad 468x 60 </div> </div> Solo hay que editar donde dice... Colocar aqui el codigo de publicidad 468x 60 (Esa medida es la mejor para poner en las fotos.) Colocamos ahi el codigo generado por Adsense. Lo probe con usar la variable pero no lo supe hacer funcionar ya que soy nuevo .-. asi que si alguien lo quiere hacer mas automatico haber si encuentra la forma de hacerlo funcionar con esto.. {$tsConfig.ads_160} Perdon yo lo usaba solo con imagenes .-. Resultado... les dejo +Bonus El siguiente codigo puedes ponerlo en lugar del anterior que estaba en la hoja de estilos .css Lo que hace este es agregarle una sombra a la publicidad. #superponer div.adsense {-webkit-box-shadow: 1px 5px 8px 2px black; -moz-box-shadow: 1px 5px 8px 2px black; box-shadow: 1px 5px 8px 2px black;margin: 0; padding: 0; position: absolute;left:52px; bottom:19px;} Resultado final con sombra. Se puede editar todo solo es algo que quize compartir con ustedes. Espero sus opiniones o respuestas sobre la variable,...
  15. Aqui les quiero dejar este Mod que me lo pideron, la ves pasada hice uno que era para mostrar en la Home los comentarios destacados. Esta muestra los comentarios destacados en los posts. Es Administrable, asi que Uds. podran determinar los valores que deseen tener sus comentarios destacados. Hacemos esta consulta SQL ALTER TABLE w_configuracion ADD comoff int(1) NOT NULL DEFAULT '0', ADD cantc int(3) NOT NULL, ADD cantv int(3) NOT NULL; En posts.php buscamos: $smarty->assign("tsPunteador",$tsPosts->getPunteador()); Y agregamos abajo: // COMENTARIOS DESTACADOS EN LOS POSTS $smarty->assign("tsComedest",$tsPosts->com_destacados()); En c.posts.php buscamos: /* lalala */ Y agregamos arriba: /* Comentarios destacado en los posts */ function com_destacados(){ global $tsCore, $tsUser; $post_id = intval($_GET['post_id']); // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT c.cid, c.c_post_id, c.c_user, c.c_date,c.c_body, c.c_votos, c.c_status,c.c_ip, u.user_id, u.user_name,u.user_rango, u.user_activo, u.user_baneado, p.post_id, p.post_title, p.post_category, cat.cid, cat.c_seo, r.rango_id, r.r_color FROM p_comentarios AS c LEFT JOIN u_miembros AS u ON u.user_id = c.c_user LEFT JOIN p_posts AS p ON p.post_id = c.c_post_id LEFT JOIN p_categorias AS cat ON cat.cid = p.post_category LEFT JOIN u_rangos AS r ON r.rango_id = u.user_rango WHERE `post_id` = \''.(int)$post_id.'\' && u.user_activo = \'1\' && u.user_baneado = \'0\' && c.c_status = \'0\' && c.c_votos >= '.$tsCore->settings['cantv'].' ORDER BY c.c_votos DESC LIMIT '.$tsCore->settings['cantc'].''); // COMENTARIOS TOTALES $return['num'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cid FROM p_comentarios WHERE c_post_id = \''.(int)$post_id.'\' '.($tsUser->is_admod ? '' : 'AND c_status = \'0\'').'')); // $comments = result_array($query); $i = 0; foreach($comments as $comment){ if($comment['c_votos'] != 0){ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT voto_id FROM p_votos WHERE tid = \''.(int)$comment['cid'].'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'2\' LIMIT 1'); $votado = db_exec('num_rows', $query); } else $votado = 0; $return['block'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid, b_user, b_auser FROM `u_bloqueos` WHERE b_user = \''.(int)$comment['c_user'].'\' AND b_auser = \''.$tsUser->uid.'\' LIMIT 1')); // $return['data'][$i] = $comment; $return['data'][$i]['votado'] = $votado; $return['data'][$i]['c_html'] = $tsCore->parseBadWords($tsCore->parseBBCode($return['data'][$i]['c_body']), true); $i++; } // return $return; } En c.admin.php buscamos: 'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])), Y agregamos abajo: 'comoff' => empty($_POST['comoff']) ? 0 : 1, 'cantc' => $tsCore->setSecure($_POST['cantc']), 'cantv' => $tsCore->setSecure($_POST['cantv']), Buscamos: '\', `offline_message` = \'' . $c['offline_message'] . Y agregamos al lado: '\', `comoff` = \'' . $c['comoff'] .'\', `cantc` = \'' . $c['cantc'] .'\', `cantv` = \'' . $c['cantv'] . En m.admin_configs.tpl buscamos: <dl> <dt><label for="ai_chat">Chatango ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://chatango.com">Chatango</a> para tu web, solo crea tu grupo he ingresa el nombre. (Dejar vac&iacute;o para usar xat)</span></dt> <dd><input type="text" id="ai_chat" name="chat" maxlength="20" value="{$tsConfig.chat_id}" /> </dd> </dl> Y agregamos arriba: <hr> <dl> <dt><label for="comoff">Comentarios Destacados en los posts</label><br /><span>Aqu&iacute; podras activar los comentarios destacados en los posts. Desea activarlos?</span></dt> <dd> <label><input name="comoff" type="radio" id="ai_offline" value="1" {if $tsConfig.comoff == 1}checked="checked"{/if} class="radio"/> S&iacute;</label> <label><input name="comoff" type="radio" id="ai_offline" value="0" {if $tsConfig.comoff != 1}checked="checked"{/if} class="radio"/> No</label> </dd> </dl> <dl> <dt><label for="cantc">Cantidad de comentarios</label><br /><span>Cantidad de comentarios destacados en los posts.</span></dt> <dd><input type="text" onkeyup="var no_digito = /\D/g; this.value = this.value.replace(no_digito , '');" id="cantc" name="cantc" style="width:10%" maxlength="3" value="{$tsConfig.cantc}" /> </dd> </dl> <dl> <dt><label for="cantv">Cantidad de votos</label><br /><span>Cantidad de <b>votos</b> necesarios.</span></dt> <dd><input type="text" onkeyup="var no_digito = /\D/g; this.value = this.value.replace(no_digito , '');" id="cantv" name="cantv" style="width:10%" maxlength="3" value="{$tsConfig.cantv}" /> </dd> </dl> <hr> En t.posts.tpl buscamos: {include file='modules/m.posts_comments.tpl'} Y agregamos arriba: {include file='modules/m.comentarios_destacados.tpl'} Al final de extras.css agregamos: .box-com{width:763px;height:auto;background:#FFF;border:1px solid #DDD;border-top:none; } .box-com ul{padding:10px;} .box-comentario {float:left;margin-left: 50px;font-size:12px;width:700px;position: relative;} .coment-post {margin-bottom:5px;border-top:1px solid #EEE; padding:7px 0 5px 7px;} .content-com {padding:10px;background:transparent;overflow: hidden} #avat-au{float:left;margin-bottom:-50px;width:48px;height:48px;padding:1px;border:1px solid #CCC;} #avat-au:hover{background:#FFF;opacity:0.80;} .info-com-d {color:#9797A6;padding:3px;font-size:11px;height: 14px;overflow: hidden;} .info-com-d a {text-decoration:none;} Subimos el archivo m.comentarios_destacados.tpl a la carpeta modules http://www.mediafire.com/download/m81htyf4f2w0b3g/Comentarios-destacados.zip Eso seria Todo...... Espero que les sea de Agrado.. Hasta la proxima..
  16. Buenas de nuevo, Estoy revisando los mods que hay publicados y no he visto el de ir al cielo estilo taringa para esta nueva versión, por lo que me he puesto a hacerlo yo mismo. Esta es una captura: Vamos a ello: Abrimos el archivo: /templates/sections/main-header.tpl y antes de la etiqueta: </head> añadimos: <a class="NewCielo" href="#"></a> Ahora editamos el extras.css y al final le añadimos: .NewCielo{ width:40px; height:40px; opacity:0.6; position:fixed; bottom:50px; right:60px; display:none; text-indent:-9999px; background: url(images/cielo.png) no-repeat; } El siguiente es el /js/funciones.js y también al final añadimos: //Ir al Cielo $(window).scroll(function(){ if ($(this).scrollTop() > 100) { $('.NewCielo').fadeIn(); } else { $('.NewCielo').fadeOut(); } }); $('.NewCielo').click(function(){ $("html, body").animate({ scrollTop: 0 }, 1000); return false; }); Y por último descargamos la imagen y la guardamos en /images http://www.mediafire.com/?i95zzpbjg9c18w9 Espero que les haya gustado y les sea útil. Pronto tendré mi web operativa!!!
  17. este mod trata de si algun user en el muro te menciona (@tu) te llega notificacion en c.muro buscan la funcion streampost() y dentro de esa funcion buscamos: $tsMonitor->setNotificacion(12, $pid, $tsUser->uid, $pub_id); agregamos antes: $this->menTi2($pub_id, $pid, $data); ms abajo buscamos: /* streamRepost() */ agregamos antes: function menTi2($pub_id, $pid, $data){ global $tsCore, $tsUser, $tsMonitor; // preg_match_all("/\[email protected]([a-zA-Z0-9_-]{4,16}+)\b/",$data, $users); $menciones = $users[1]; // if(!empty($users[1])) { foreach($menciones as $user){ # COMPROBAR $uid = $tsUser->getUserID($tsCore->setSecure($user)); if(!empty($uid)){ $tsMonitor->setNotificacion(19, $uid, $tsUser->uid, $pub_id); } } } // return true; } abrimos c.monitor y buscamos: 17 => array('text' => 'Tu foto recibi&oacute; una medalla', 'css' => 'medal'), agregamos despues: 19 => array('text' => 'te mencion&oacute; en una', 'ln_text' => 'publicaci&oacute;n', 'css' => 'blue_ball'), mas abajo buscamos: case 17: return 'SELECT f.foto_id, f.f_title, f.f_user, m.medal_id, m.m_title, m.m_image, a.medal_for, u.user_id, u.user_name FROM w_medallas_assign AS a LEFT JOIN f_fotos AS f ON f.foto_id = a.medal_for LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN w_medallas AS m ON m.medal_id = a.medal_id WHERE m.medal_id = \''.(int)$data['obj_uno'].'\' AND f.foto_id = \''.(int)$data['obj_dos'].'\' LIMIT 1'; break; agregamos despues: case 19: return 'SELECT p.pub_id, p.p_user FROM u_muro AS p WHERE p.pub_id = \''.(int)$data['obj_uno'].'\' LIMIT 1'; break; mas abajo buscamos: case 17: $oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>'; break; debajo agregamos: case 19: $oracion['text'] = $this->monitor[$no_type]['text'].$txt_extra; $oracion['link'] = $site_url.'/perfil/'.$tsUser->getUserName($data['p_user']).'/'.$data['obj_uno']; $oracion['ltext'] = ($this->show_type == 1) ? $ln_text : $tsUser->getUserName($data['p_user']); $oracion['ltit'] = ($this->show_type == 1) ? $tsUser->getUserName($data['p_user']) : ''; break; caps: creditos especiales: aperpen y menciones XD
  18. Hola a todos como andan en esta ocasión les traigo una adaptación del mod de @vellenger Sección Crap V2 a Risus 1.2 Bueno Les dejo la instalación del mod en el archivo Instrucciones.txt https://mega.co.nz/#!hI4S0A4Y!9-OETDqd3slEk9J1TSi0-eUNf-1yiE2ZDbtDCrgFFY0 Eso es todo si quieren que adapte otro mod a Risus 1.2 solo comenten el topic o manden privado
  19. Hola gente en este post les comparto las secciones que he desarrollado pero actualizadas a la versión de Risus 1.2 de la misma forma como las he revisado y he encontrado algunos errores y vulnerabilidades que he solucionado por lo cual recomiendo que actualicen para quienes tengan los mods que describiré a continuación. ARCHIVOS [Importante] Actualizado: [SECCIÓN] Archivos V2.1MEGA JUEGOS [Importante] Actualizado: [SECCIÓN] Juegos V2.1 MEGA VERSIÓN MOBILE Actualizado: [MOD] Risus Mobile V2.4 MEGA CALENDARIO [Importante] Actualizado: [MOD] Calendario de eventos V2.1 MEGA Esto es todo por ahora, espero les sirva a muchos que tal vez han intentado actualizar los mods y les ha dado algún error o no les funciona correctamente. Los que tienen el título de [Importante] para quienes tengan esos mods deben actualizarlos SI o SI ya que las anteriores versiones son vulnerables a inyecciones SQL. Ya que no puedo editar mis viejos aportes espero que algún mod de buen corazón pueda actualizar los enlaces de descargas en los respectivos posts. Si me dan privilegios para hacerlo sería mucho mejor e,e Si quieren que actualice algún otro aporte háganmelo saber y lo compartiré en este mismo topic. Que tengan buen día, nos vemos en otro mod Links actualizados 15/09: [MOD] Archivos V2.1 [Kmario19][1.2].zip 64 KB https://mega.nz/#!GoI0jYjY!9607goFbijGGS413IOvCDIjC5kBQW0pm_i9SujKKVnA [MOD] Calendario de eventos V2.1 [Kmario19][1.2].zip 6 KB https://mega.nz/#!b0ARgT7R!oiZPtT_YAJuHX50OjAyfVPR0JDf1GJhOXVkloM4s9pg [MOD] Emoticones Administrables V2 [Kmario19].zip 96 KB https://mega.nz/#!ylRgUTaL!ArAO6KJYJHMc_WM0ARqz5IRqxHRWCZShiKE_TQ9nXfc [MOD] Juegos V2 [Kmario19][1.2].zip 58 KB https://mega.nz/#!y0oxnIQQ!10h_R5DW-lNh5rDzFdgfVTpMZt9H58aLHGcIQV3Hm8Q [MOD] Risus Mobile V2.4 [Kmario19][1.2].zip 518 KB https://mega.nz/#!20pgkSJY!bKiOjE_NH8ktRQrjWyLXoBRFOmVeKlVkAyKZGosIQc4
  20. Hola a todos, este es algo simple y puede ser útil para alguno, se trata de poner un reproductor de música permanente, es decir, que vayas vagando por la web sin que se actualice el reproductor, voy a dejar una demo mas abajo para que prueben mientras muestro la instalaciones y configuraciones.. 1. Vamos a esta web SCM Music Player , bajamos un poco, en Setup Wizard vemos muchos skins, elegimos 1. Hay aproximadamente 4000+ de diseños. 2. Seleccionamos cual queremos, por encima podemos ver como quedaría con el que elegimos y vamos a "Next" el botón de abajo. 3. vamos agregar las canciones que queremos mediante Youtube, el otro no probé, pero creo que por youtube seria mejor, quedaria algo asi, agregue 5 temas: Add more Songs = agregas mas campos para agregar mas temas. Sort Playlist = Quita campos. 4. Vamos a "Next" de nuevo, Acá es a gusto pero recomendaría poner como lo tengo yo: 5. damos en "Done" y tenemos el código para agregar a nuestro .tpl así que copiamos todo el código y vamos a main_header.tpl 6. Abajo de <body> vamos a poner el código pero encerrado con {literal} {/literal} dejo ejemplo el mio: {literal} <!-- SCM Music Player http://scmplayer.net --> <script type="text/javascript" src="http://scmplayer.net/script.js" data-config="{'skin':'','volume':100,'autoplay':true,'shuffle':false,'repeat':1,'placement':'top','showplaylist':false,'playlist':[{'title':'Different Heaven & EH!DE - My Heart [NCS Release]','url':'https://youtu.be/jK2aIUmmdP4?list=PLz8G7dUoAb2yF9bruWXoS3sheL9K7Ptvz'},{'title':'Disfigure - Blank [NCS Release]','url':'https://youtu.be/p7ZsBPK656s?list=PLz8G7dUoAb2yF9bruWXoS3sheL9K7Ptvz'},{'title':'K-391 - Dream Of Something Sweet ft. Cory Friesenhan [NCS Release]','url':'https://youtu.be/R0txiR58lmM?list=PLz8G7dUoAb2yF9bruWXoS3sheL9K7Ptvz'},{'title':'Spektrem - Shine (Gabriel Drew & Bloom Remix) [NCS Release]','url':'https://youtu.be/rWVjht-MIto?list=PLz8G7dUoAb2yF9bruWXoS3sheL9K7Ptvz'},{'title':'Spektrem - Shine [NCS Release]','url':'https://youtu.be/n4tK7LYFxI0?list=PLz8G7dUoAb2yF9bruWXoS3sheL9K7Ptvz'}]}" ></script> <!-- SCM Music Player script end --> {/literal} Guardamos y listo, lo pueden probar acá si quieren: Demo SCM Music Player y una imagen para que vean si no quieren ver la demo.. Saludos.-
  21. Hola gente de phpost como andan... Se que paso mucho tiempo pero aproveche esta semana para terminar un complemento que había dejado a medias y le prometí a algunos que lo terminaría... se que es un poco tarde pero como dice el dicho "Lo prometido es deuda", Esta ves agregue lo mas importante que era poder eliminar y editar... lo demás sigue igual... pero ya empece a trabajar en el tema de las categorías (Que también serán administrables) pero eso sera en la próxima versión del complemento ya con nuevo diseño y características. Por ahora les dejo la versión completa. Capturas Características: -Poder agregar contenido al catalogo desde la admin. -Poder Eliminar. -Poder Editar. -No permite enviar formularios en blanco *Se aceptan ideas para mejorar el complemento* *La instalacion se encuentra en la descarga...* Descargar -> Catalogo Administrable By Air_kpo.zip
  22. Hola, soy Kmario19. tal vez me recuerden de mods para el perfil como... Ó Bueno, esta vez vengo con ÚLTIMOS POSTS VISITADOS EN EL PERFIL!! 1. abrir c.cuenta.php que esta en inc/class y debajo de: $data['p_configs'] = unserialize($data['p_configs']); Agregar: // SEGURIDAD VISITADOS if($data['p_configs']['pvis'] == 0){ $data['can_pvis'] = false; }elseif($data['p_configs']['pvis'] == 3 && ($this->iFollow($user_id) || $tsUser->is_admod)){ $data['can_pvis'] = true; }elseif($data['p_configs']['pvis'] == 4 && ($this->yFollow($user_id) || $tsUser->is_admod)){ $data['can_pvis'] = true; }elseif($data['p_configs']['pvis'] == 5 && $tsUser->is_member){ $data['can_pvis'] = true; }elseif($data['p_configs']['pvis'] == 6){ $data['can_pvis'] = true; } // POSTS VISITADOS if($data['can_pvis'] || $data['user_id'] == $tsUser->uid) { $query = mysql_query('SELECT `last_posts_visited` FROM `u_portal` WHERE `user_id` = \''.(int)$user_id.'\' LIMIT 1'); $dato = mysql_fetch_assoc($query); $visited = unserialize($dato['last_posts_visited']); krsort($visited); foreach($visited as $key => $id){ $query = mysql_query('SELECT p.post_id, p.post_title, c.c_seo FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = 0 AND p.post_id = '.$id.' LIMIT 1'); $data['p_visitados'][] = mysql_fetch_assoc($query); if(count($data['p_visitados']) == 10) break; } } Mas abajo buscamos: $see_hits = ($_POST['last_hits'] == 1 || $_POST['last_hits'] == 2) ? 0 : $_POST['last_hits']; Abajo agregamos: $see_pvis = ($_POST['last_pvis'] == 1 || $_POST['last_pvis'] == 2) ? 0 : $_POST['last_pvis']; Y una linea abajo al lado de: 'hits' => $see_hits Agregar: , 'pvis' => $see_pvis 2. Ahora en m.perfil_sidebar.tpl que está en templates/modules al final agregamos: {if $tsInfo.can_pvis || $tsInfo.user_id == $tsUser->uid} <div class="widget w-medallas clearfix"> <div class="title-w clearfix"> <h3>&Uacute;ltimos posts visitados por {$tsInfo.user_name}</h3> </div> {if $tsInfo.p_visitados} <ul class="clearfix"> {foreach from=$tsInfo.p_visitados item=v key=i} <li> <strong style="color: #36F;">{if $i <= 8}0{/if}{$i+1}. </strong> <a style="" href="{$tsConfig.url}/posts/{$v.c_seo}/{$v.post_id}/{$v.post_title|seo}.html" class="size13" title="{$v.post_title}">{$v.post_title|truncate:45}</a> </li> {/foreach} </ul> {else} <div class="emptyData">{if $tsInfo.user_id == $tsUser->uid}No has{else}{$tsInfo.user_name} no ha{/if} visitado ning&uacute;n post.</div> {/if} </div> {/if} 3. En m.cuenta_config.tpl que está en templates/modules, arriba de: {if !$tsUser->is_admod} {if $tsPerfil.p_configs.rmp != 8} Agregamos: <div class="field"> <label>ver &uacute;ltimos posts visitados?</label> <div class="input-fake"> <select name="last_pvis" class="cuenta-save-7"> {foreach from=$tsPrivacidad item=p key=i} {if $i != 1 && $i != 2}<option value="{$i}" {if $tsPerfil.p_configs.pvis == $i}selected{/if}>{$p}</option>{/if} {/foreach} </select> </div> </div> Y con eso tendremos esto: Espero les guste el detalle, nos vemos en otro aporte, hasta pronto
  23. Hola a todos les traigo este pequeño minimod, es parecido al que hay en Identi para que puedan ver los últimos posts a los que comentaron, bueno es muy simple, solo estos dos pasos: 1. abrir c.cuenta.php que esta en inc/class y debajo de: // MEDALLAS $query = mysql_query('SELECT m.*, a.* FROM w_medallas AS m LEFT JOIN w_medallas_assign AS a ON a.medal_id = m.medal_id WHERE a.medal_for = \''.(int)$user_id.'\' AND m.m_type = \'1\' ORDER BY a.medal_date DESC LIMIT 21'); $data['medallas'] = result_array($query); $data['m_total'] = count($data['medallas']); Agregar: // ULTIMOS COMENTARIOS $query = mysql_query('SELECT cm.cid, cm.c_date, p.post_id, p.post_title, c.c_seo FROM p_comentarios AS cm LEFT JOIN p_posts AS p ON p.post_id = cm.c_post_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE c_user = \''.(int)$user_id.'\' AND p.post_status = \'0\' AND cm.c_status = \'0\' ORDER BY cid DESC LIMIT 10'); $data['com'] = result_array($query); 2. En m.perfil_sidebar.tpl que esta en templates/modules, debajo de: <div style="margin-bottom: 10px"> {$tsConfig.ads_300} </div> Agregar: <div class="widget w-medallas clearfix"> <div class="title-w clearfix"> <h3>&Uacute;ltimos comentarios</h3> <span>{$tsInfo.stats.user_comentarios}</span> </div> {if $tsInfo.stats.user_comentarios > 0} <ul class="clearfix"> {foreach from=$tsGeneral.com item=c key=i} <li> <strong style="color: #36F;">{if $i <= 8}0{/if}{$i+1}. </strong> <a style="" href="{$tsConfig.url}/posts/{$c.c_seo}/{$c.post_id}/{$c.post_title|seo}.html#pp_{$c.cid}" class="qtip size13" title="{$c.c_date|hace}">{$c.post_title|truncate:45}</a> </li> {/foreach} </ul> {else} <div class="emptyData">No ha hecho comentarios.</div> {/if} </div> Y listo, eso es todo. Simple pero útil. Espero les haya gustado, nos vemos en otro mod, adios!
  24. Hola a todos como varios saben hace tiempo vengo desarrollando este mod..., pero como no esta apresurado me tome todo mi tiempo para hacerlo y aprender un poco de cada cosa que le hacia.., Lo que mas me costo es el "insert into" pero ya quedo..., Bueno no quiero dar muchas vueltas..., ¿Que es.? ¿Para que mierda sirve? Bueno algunos no saben para que sirve un catalogo bueno sirva para catalogar xD..., Bueno un ejemplo claros si eres uploaders de juegos y tienes tu sitio con phpost en este mod podrás poner todo los juegos que quieras..., O también puedes catalogar secciones (porno, películas, crap., etc) Bueno empezamos con las capturas ¿V2 y la V1? Bueno mas de uno habrá visto el titulo y se habrá pregustado y la V1 Bueno les cuento la V1 no la encontraran solo era html y css y fue vendida osea no podía liberarla porque ya la había vendido teníamos algo así como una licencia imaginaria xD Bueno como ese usuario no quiso pagar lo que costaba la V2 decidí liberarla., La instalación viene incluida en la descarga.. http://www.vellenger.com/files/353/Catalogo-Administrable-By-Air_kpo-
  25. Hola les traigo este mod que les puede servir , tienen que tener instalado este mod hacen todo menos la parte de agregar : <!--Descripcion--> <META NAME="description" CONTENT="{$tsConfig.descripcion}"> <!--Fin--> <!--Keywords--> <META NAME="keywords" CONTENT="{$tsConfig.keywords}"> <!--fin--> Listo para empezar. 1) Van a c.posts y buscan: // TAGS $postData['post_tags'] = explode(",",$postData['post_tags']); $postData['n_tags'] = count($postData['post_tags']) - 1; y arriba agregan: // DESC $postData['post_desc'] = htmlspecialchars(stripslashes(strip_tags($postData['post_body']))); $postData['post_desc'] = substr($postData['post_desc'], 0, 170) ; $postData['post_desc'] = eregi_replace("[\n|\r|\n\r]", ' ', $postData['post_desc']); Donde dice 170 lo cambian por los caracteres que ustedes quieran que aparezcan Despues va a main_header y buscan <head> y abajo agregan <!--Descripcion--> <META NAME="description" CONTENT="{if $tsPost.post_id}{$tsPost.post_desc}{else}{$tsConfig.descripcion}{/if}" /> <!--Fin--> <!--Keywords--> {if $tsPost.post_tags} <meta name="keywords" content="{$tsConfig.keywords},{foreach from=$tsPost.post_tags key=i item=tag}{$tag},{/foreach}" /> {else} <meta name="keywords" content="{$tsConfig.keywords},{foreach from=$tsConfig.categorias item=c}{$c.c_nombre},{/foreach}" /> {/if} <!--fin--> <meta property="og:image" content="LINK_A_IMAGEN"/> <meta property="og:title" content="{if $tsPost.post_id}{$tsPost.post_title}{else}{$tsTitle}{/if}" /> <meta property="og:description" content="{if $tsPost.post_id}{$tsPost.post_desc}{else}{$tsConfig.descripcion}{/if}" /> <meta property="og:locale" content="es_ES" /> Aca <meta property="og:image" content="LINK_A_IMAGEN"/> ponen una imagen tipo logo de su web. Es todo, si quieren comprobarlo miren el codigo de algun post de wipstter.com y van a ver que funciona. Demo: http://wipstter.com/posts/infoytutoriales/573/-Aporte-Crea-Un-Men-en-Html-con-Css-Parte2.html miren el codigo fuente y esta todo OK
×