Clasificación


Contenido popular

Showing most liked content since 26/04/17 en Posts

  1. 7 likes
    Hola a todos, quisiera compartir con todos este mod que ya van varias personas que están interesadas en él y nada, para mí esto fue como una práctica, sé que algún día llegaré a tener el nivel de conocimientos que me he impuesto. En fín, este MOD lo que hace es limitar a los usuarios el numero de posts que pueden publicar, es decir, el administrador impone a cada usuario o rango un límite de posts por día; ésto nos ayudará a disminúir el spam en usuarios novatos (por ejemplo). Sin más, les dejo las instrucciones. Aviso: la instalación es sólo para el tema default, aunque el código (PHP) sea el mismo la estructra de cada tema puede cambiar. 1. Abrir el archivo c.admin.php y busca: 'cant' => $row['r_cant'], Debajo coloca: 'post_cant' => $row['r_posts'], a) Busca: 'cant' => empty($_POST['global-cantidadrequerida']) ? 0 : $tsCore->setSecure($_POST['global-cantidadrequerida']), Añadir debajo: 'post_cant' => empty($_POST['global-postsforday']) ? 0 : $tsCore->setSecure($_POST['global-postsforday']), b ) Busca (unas cuantas líneas abajo): 'gopfd' => $_POST['global-pointsforday']); Borra el ); y pon en su lugar una coma , Presiona la tecla Intro para hacer un saldo de línea, luego, añade lo siguiente: 'golpd' => $_POST['global-postsforday']); Deberá quedar de la siguiente manera: 'gopfd' => $_POST['global-pointsforday'], 'golpd' => $_POST['global-postsforday']); c) Busca (unas cuantas líneas abajo); if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_rangos` SET r_name = \'' . $tsCore->setSecure($r['name']) . '\', r_color = \'' . $r['color'] . '\', r_image = \'' . $tsCore->setSecure($r['img']) . '\', r_cant = \'' . (int)$r['cant'] . '\', r_allows = \'' . $tsCore->setSecure($permisos) . '\', r_type = \'' . $r['type'] . '\' WHERE rango_id = \'' . (int)$rid . '\'')) Reemplazar por: if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_rangos` SET r_name = \'' . $tsCore->setSecure($r['name']) . '\', r_color = \'' . $r['color'] . '\', r_image = \'' . $tsCore->setSecure($r['img']) . '\', r_cant = \'' . (int)$r['cant'] . '\', r_posts = \'' . (int)$r['post_cant'] . '\', r_allows = \'' . $tsCore->setSecure($permisos) . '\', r_type = \'' . $r['type'] . '\' WHERE rango_id = \'' . (int)$rid . '\'')) d) Busca: 'cant' => empty($_POST['global-cantidadrequerida']) ? 0 : $tsCore->setSecure($_POST['global-cantidadrequerida']), Añadir debajo: 'post_cant' => empty($_POST['global-postsforday']) ? 0 : $tsCore->setSecure($_POST['global-postsforday']), e) Busca: 'gopfd' => $_POST['global-pointsforday'], Info: Hacer lo mismo que en el inciso b ). f) Busca (unas cuantas líneas abajo): if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_rangos` (`r_name`, `r_color`, `r_image`, `r_cant`, `r_allows`, `r_type`) VALUES (\'' . $tsCore->setSecure($r['name']) . '\', \'' . $r['color'] . '\', \'' . $tsCore->setSecure($r['img']) . '\', \'' . (int)$r['cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\', \'' . (int)$r['type'] . '\')')) return 1; Reemplazar por: if (db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO `u_rangos` (`r_name`, `r_color`, `r_image`, `r_cant`, `r_posts`, `r_allows`, `r_type`) VALUES (\'' . $tsCore->setSecure($r['name']) . '\', \'' . $r['color'] . '\', \'' . $tsCore->setSecure($r['img']) . '\', \'' . (int)$r['cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\', \'' . (int)$r['post_cant'] . '\', \'' . $tsCore->setSecure($permisos) . '\', \'' . (int)$r['type'] . '\')')) return 1; g) Buscar: $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT `user_name`, `user_email`, `user_password` FROM u_miembros WHERE user_id = \'' . (int)$user_id . '\''); Y donde está `user_password` añadir a un lado: , `user_limiteposts` Quedará de la siguiente manera: `user_password`, `user_limiteposts` h) Buscar (unas cuantas lineas abajo): $pointsxdar = empty($_POST['pointsxdar']) ? $data['user_puntos'] : $_POST['pointsxdar']; Añadir debajo: $postsxdia = empty($_POST['poststodo']) ? $data['user_limiteposts'] : $_POST['poststodo']; i) Buscar: return 'Los puntos para dar no se reconocen'; Añadir debajo: if ($postsxdia >= 0) { $ptodo = ', user_limiteposts = \''. (int)$postsxdia . '\''; } else { return "El límite de posts no se reconocen"; } j) Buscar: if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET user_email = \'' . $tsCore->setSecure($email) . '\' ' . $changedis . ' ' . $new_nick . ' ' . $pxd . ' ' . $apoints . ' ' . $db_key . ' WHERE user_id = \'' . (int)$user_id . '\'')) Reemplazar por: if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `u_miembros` SET user_email = \'' . $tsCore->setSecure($email) . '\' ' . $changedis . ' ' . $new_nick . ' ' . $pxd . ' ' . $ptodo . ' ' . $apoints . ' ' . $db_key . ' WHERE user_id = \'' . (int)$user_id . '\'')) 2. Abrir el archivo c.user.php y... a) Buscar: $this->actualizarPuntos(); Añadir debajo: $this->actualizarPost(); b ) Buscar: function actualizarPuntos() { // HORA EN LA CUAL RECARGAR PUNTOS 0 = MEDIA NOCHE DEL SERVIDOR $ultimaRecarga = $this->info['user_nextpuntos']; $tiempoActual = time(); // SI YA SE PASO EL TIEMPO RECARGAMOS... if($ultimaRecarga < $tiempoActual){ // OPERACION SIG RECARGA A LAS 24 HRS $horaActual = date("G",$tiempoActual); $minActuales = date("i",$tiempoActual) * 60; $segActuales = date("s",$tiempoActual); $sigRecarga = 24 - $horaActual; $sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales); $sigRecarga = $tiempoActual + $sigRecarga; // LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR // db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_puntosxdar = '.($tsCore->settings['c_keep_points'] == 0 ? $this->permisos['gopfd'] : 'user_puntosxdar + '.$this->permisos['gopfd']).', user_nextpuntos = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\''); // VAMONOS return true; } } Añadir debajo: function actualizarPost() { // HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR $ultimaRecarga = $this->info['user_nextlimiteposts']; $tiempoActual = time(); // SI YA SE PASO EL TIEMPO RECARGAMOS... if($ultimaRecarga < $tiempoActual){ // OPERACION SIG RECARGA A LAS 24 HRS $horaActual = date("G",$tiempoActual); $minActuales = date("i",$tiempoActual) * 60; $segActuales = date("s",$tiempoActual); $sigRecarga = 24 - $horaActual; $sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales); $sigRecarga = $tiempoActual + $sigRecarga; // LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR // db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\''); // VAMONOS return true; } } Esta función no la he testeado como se debe, por lo que no he comprobado su funcionalidad al 100%. 3. Abrir el archivo c.posts.php y... a) Buscar: else { $postData['sponsored'] = empty($_POST['patrocinado']) ? 0 : 1; $postData['sticky'] = empty($_POST['sticky']) ? 0 : 1; } Añadir debajo: if($tsUser->info['user_limiteposts'] == 0) return 'Has alcanzado el l&iacute;mite de posts por d&iacute;a'; b ) Buscar: // ULTIMO POST db_exec(array( __FILE__, __LINE__ ) , 'query', 'UPDATE u_miembros SET user_lastpost = \'' . $time . '\' WHERE user_id = \'' . $tsUser->uid . '\''); Añadir debajo: // RESTAR POSTS DISPONIBLES db_exec(array( __FILE__, __LINE__ ) , 'query', 'UPDATE u_miembros SET user_limiteposts = user_limiteposts - 1 WHERE user_id = \'' . $tsUser->uid . '\''); 4. Ejecutar las siguientes consultas SQL: ALTER TABLE `u_miembros` ADD `user_limiteposts` INT(2) UNSIGNED NOT NULL DEFAULT '0' AFTER `user_puntosxdar`; ALTER TABLE `u_rangos` ADD `r_posts` INT(5) NOT NULL AFTER `r_cant`; ALTER TABLE `u_miembros` ADD `user_nextlimiteposts` INT(10) NOT NULL DEFAULT '0' AFTER `user_nextpuntos`; 5. Abrir el archivo m.admin_rangos.tpl y... a) Buscar: <th>Puntos por post</th> Añadir debajo: <th>Límite de posts</th> Hacer lo mismo para las dos 2 coincidencias b ) Buscar: <td>{$r.max_points}</td> Añadir debajo: <td>{$r.post_cant}</td> Hacer lo mismo para las dos 2 coincidencias c) Buscar: <dl> <dt><label for="gopfp">Puntos por post</label><br /><span>Puntos que puede dar en cada post.</span></dt> <dd><input type="text" id="gopfp" name="global-pointsforposts" value="{$tsRango.permisos.gopfp}" style="width:30%"/></dd> </dl> Añadir debajo: <dl> <dt><label for="golpd">Límite de posts</label><br /><span>Posts que puede crear al día</span></dt> <dd><input type="text" id="golpd" name="global-postsforday" value="{$tsRango.permisos.golpd}" style="width:30%"/></dd> </dl> 6. Abrir el archivo m.admin_users.tpl y... a) Buscar: <dl> <dt><label>Puntos para dar:</label></dt> <dd><input type="text" name="pointsxdar" id="pointsxdar" value="{$tsUserD.user_puntosxdar}" style="width:10%" /></dd> </dl> Añadir debajo: <dl> <dt><label>Límte de posts a crear:</label></dt> <dd><input type="text" name="poststodo" id="poststodo" value="{$tsUserD.user_limiteposts}" style="width:10%" /></dd> </dl> Nota: Si quieres mostrar los posts que restan; en el perfil del usuario, has lo siguiente: (sólo lo verá el dueño del perfil, administrador o moderador) En m.perfil_headinfo.tpl Busca: <li> <strong>{$tsInfo.stats.user_fotos}</strong> <span>Fotos</span> </li> Añadir debajo: {if $tsUser->uid == $tsInfo.uid && $tsUser->is_member || $tsUser->is_admod} <li class="qtip" title="Tu rango tiene un límite de posts por día, asegúrate de postear algo interesante"> <strong>{$tsInfo.stats.user_limiteposts}</strong> <span>Posts restantes</span> </li> {/if} ¡Has terminado! Y bien, como dije al inicio, este mod es 100% administrable, puedes otorgarle a cierto usuario o rango un límite de posts. Dejaré losarchivos editados por si alguien gusta descargarlos y evitarse el trabajo de modificar los archivos. Descargar archivos Capturas Avisar de cualquier error en los comentarios. a { text-decoration: none !important; }
  2. 6 likes
    Hola a todos Después de una búsqueda de algunas horas logré dar con los iconos que Taringa! V4 (y anteriores versiones) y el tema default de Risus utiliza o utilizó (en el caso de T!) por lo que me es buena idea compatirlos aquí pues son y serán de buena utilidad. Yo los utilicé en el Theme Zero-Time y hasta ahora recordé que los tenía... Y bien aquí estan. Los primeros son los FamFamFam que cuenta con dos versiones; Mint Icons y Silk Icons además de las banderas que son las que actualmente utiliza Risus. FAMFAMFAM Descargar desde la web del autor Los siguientes son de p.yusukekamiyamane (Lo sé, difícil de pronunciar ) éstos, T! los usó para sus categorías principalmente, este Japonés sí que invirtió tiempo en hacer 3,570 iconos. Tiene dos versiones, Fuge Icons y Diagona Icons. ADEMÁS, él fue el creador de las fuentes originales del logo de Taringa!, sólo basta con dar clic en la sección de "Fonts" para descargarlas. p.yusukekamiyamane Descargar dede la web del autor. Preview Muchos también debemos conocer los iconos de FatCow, un servicio de web hosting que también diseñó estos iconos, al igual que los de p.yusukekamiyamane son demasiados y cuando descargues todos tendrás un mundo de iconos . Descargar desde la web del autor Espero y les guste el aporte, aunque este tipo de iconos ya hayan pasado de moda, dejan muy bonito aspecto a nuestras webs.
  3. 5 likes
    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
  4. 5 likes
    Hola a todos, hoy les voy a compartir creo que mi penúltimo aporte a esta gran comunidad. Se trata del theme de Reset que ya había presentado. No está terminado, le falta cambiar código, arreglar css, js y demás, pero yo diría que se puede usar perfectamente. Es 80% responsive, y 90% bootstrap. En mi opinión está un 75% acabado. Les dejo las capturas: Y la descarga: [CLICK] Y si alguien quiere instalarlo para dejar demo, se lo agradecería bastante. Gracias
  5. 3 likes
    Muy buenas gente de Phpost . Pues después de un mes de estar sin pc, por fin he podido terminar el theme Carbon. En esta versión están todas las paginas rediseñadas y se adaptan a diferentes tamaños de pantalla. El theme carbon, es un theme que utiliza como base el framework Bulma css. Con diseño simple, elegante, 100% adaptable a cualquier tamaño de pantalla (responsive), ademas de servir como base para nuevos diseños que podrían ser diseñados por la comunidad de Phpost. Características: 100% responsive (Gracias al framework bulma.io) Reemplazo de los iconos default, por la libreria de iconos fontawesome.io Portadas para cada post en la Home Ligero, pesa tan solo 1.93mb (En comparacion del theme default 2.56mb) Cambios v.1.0 Administración y moderación 100% responsive Arreglo de errores de diseño en las secciones: Tops, Cuenta, Buscador, Portal Arreglo de errores de diseño en las ventanas modal (Responsive) Nuevo diseño del editor de post y comentarios Rediseño del footer Pequeñas mejoras en la home Incluido Lazyload en las portadas (se utilizo la librería bLazy.js) Agradecimiento especial a @Rengo por ayudarme a corregir algunos errores. Y a @zkreations por el tutorial de como implementar el librería bLazy, la verdad me cayo como anillo al dedo, ya que pase horas y horas intentando implementar dicha librería hasta que me tope con su tutorial . Lo puedes encontrar en su blog zkreations.com lo recomiendo ya que hay bastantes artículos de diseño y son simples de implementar, ademas de tener consejos,etc. Imagenes Vista desde un teléfono móvil También dejo una demo DEMO User: demo Pass: demo123 Instalación Primero realiza la siguiente consulta en tu base de datos ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL Después descarga el theme y remplaza los archivos necesarios LINK Instala el theme desde el panel de administración Listo ya lo tienes Bueno eso es todo, espero disfruten el theme, cualquier sugerencia o duda los responderé en este tema. Te pido ademas que no retires mi copyright, fue bastante trabajoso editar todo desde la default y volverlo responsive. No olvides dejar tu me gusta para seguir compartiendo diseños y aumentar mi ego (Es mi único alimento ) Un saludo ..
  6. 2 likes
    En c.post.php busca: function getLastComentarios(){ global $tsUser, $tsCore; // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cm.cid, cm.c_status, u.user_name, u.user_activo, u.user_baneado, p.post_id, p.post_title, p.post_status, c.c_seo FROM p_comentarios AS cm LEFT JOIN u_miembros AS u ON cm.c_user = u.user_id 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 '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'WHERE p.post_status = \'0\' AND cm.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY cid DESC LIMIT 10'); if(!$query) exit( show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db') ); $data = result_array($query); // return $data; } y reemplaza por: function getLastComentarios(){ global $tsUser, $tsCore; // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT cm.cid, cm.c_status, u.user_name, u.user_activo, u.user_baneado, p.post_id, p.post_category, p.post_title, p.post_status, c.c_seo FROM p_comentarios AS cm LEFT JOIN u_miembros AS u ON cm.c_user = u.user_id 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 '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'WHERE p.post_status = \'0\' AND cm.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY cid DESC LIMIT 10'); if(!$query) exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); $data = result_array($query); // return $data; } Y usa la variable así: {$c.post_category}
  7. 2 likes
    Hola! Es cierto que PHPost lleva un tiempo bastante apagado, y quizá la razón principal es que no haya ninguna novedad. Actualmente todos los "encargados", por decirlo de alguna manera, estamos bastante ocupados, pero cuando podemos avanzar un poco en algo lo hacemos, y no quiero decir que ya haya algo nuevo en desarrollo, es más que nada un "plan de futuro", que no sabemos si finalmente se hará, pero al menos por mi parte deseo que así sea, simplemente requiere tiempo que es algo que ahora mismo dedicamos a otras cosas, en mi caso estudios... que vendrán bien.
  8. 1 like
    Hola amigos Hoy me registre en este foro debido a que recién lanzo una web con este Script (nada nuevo hay muchas de todos tipos y colores) Pero estoy teniendo problemas para modificar el Logo y los Avatar Ya subí las imágenes para que se reemplazaran, borre el cache y modifique el CSS pero nada Alguien que me oriente si es que estoy haciendo algo mal http://descargaspro.com Saludos a toda la comunidad
  9. 1 like
    sabes lo básico de una base de datos? para que cheques en el servidor si realmente existe la consulta, ya que muchas veces esta mal redactada la instrucción y por eso no se crea al principio
  10. 1 like
    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..
  11. 1 like
    Me parece que no esta haciendo la consulta a la db INSERT INTO `c_categorias` (`cid`, `c_nombre`, `c_seo`, `c_img`) VALUES (1, 'Arte y Literatura', 'arte-literatura', 'c_arte-literatura.png'), (2, 'Deportes', 'deportes', 'c_deportes.png'), (3, 'Diversi&oacute;n y Esparcimiento', 'diversion-esparcimiento', 'c_diversion-esparcimiento.png'), (4, 'Econom&iacute;a y Negocios', 'economia-negocios', 'c_economia-negocios.png'), (5, 'Entretenimiento y Medios', 'entretenimiento-medios', 'c_entretenimiento-medios.png'), (6, 'Grupos y Organizaciones', 'grupos-organizaciones', 'c_grupos-organizaciones.png'), (7, 'Inter&eacute;s General', 'interes-general', 'c_interes-general.png'), (8, 'Internet y Tecnolog&iacute;a', 'internet-tecnologia', 'c_internet-tecnologia.png'), (9, 'M&uacute;sica y Bandas', 'musica-bandas', 'c_musica-bandas.png'), (10, 'Regiones', 'regiones', 'c_regiones.png'); -- -------------------------------------------------------- -- -- Estructura de tabla para la tabla `c_subcategorias` -- CREATE TABLE IF NOT EXISTS `c_subcategorias` ( `sid` int(11) NOT NULL AUTO_INCREMENT, `s_type` int(11) NOT NULL, `s_nombre` varchar(32) NOT NULL, `s_seo` varchar(32) NOT NULL, PRIMARY KEY (`sid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=128 ; -- -- Volcado de datos para la tabla `c_subcategorias` -- INSERT INTO `c_subcategorias` (`sid`, `s_type`, `s_nombre`, `s_seo`) VALUES (1, 1, 'Fotograf&iacute;as', 'fotografias'), (2, 1, 'Artes Plasticas', 'artes-plasticas'), (3, 1, 'Artes Visuales', 'artes-visuales'), (4, 1, 'Poes&iacute;a y Narraci&oacute;n', 'poesia-narracion'), (5, 1, 'Escritores', 'escritores'), (6, 1, 'Pensamientos', 'internet-tecnologia'), (7, 1, 'General y Otros', 'musica-bandas'), (8, 1, 'Fotograf&iacute;s', 'fotografias'), (9, 1, 'Artes Pl&aacute;sticas', 'artes-plasticas'), (10, 2, 'Automovilismo y Carreras', 'autos-carreras'), (11, 2, 'Ajedrez', 'ajedrez'), (12, 2, 'Artes Marciales', 'artes-marciales'), (13, 2, 'Futb&oacute;l', 'futbol'), (14, 2, 'Basquet', 'basquet'), (15, 2, 'Deportes Extremos', 'deportes-extremos'), (16, 2, 'Deportes de Invierno', 'deportes-invierno'), (17, 2, 'Deportes Ol&iacute;mpicos', 'deportes-olimpicos'), (18, 2, 'Deportes Acu&aacute;ticos', 'deportes-acuaticos'), (19, 2, 'Deportes al aire Libre', 'deporte-aire-libre'), (20, 2, 'Golf', 'golf'), (21, 2, 'Rugby', 'rugby'), (22, 2, 'Boxeo', 'boxeo'), (23, 2, 'Tenis', 'tenis'), (24, 2, 'Atletismo y Aerobic', 'atletismo-aerobic'), (25, 2, 'Instituciones y Clubes', 'instituciones-club'), (26, 2, 'Ciclismo', 'ciclismo'), (27, 3, 'Vida Nocturna', 'vida-nocturna'), (28, 3, 'Bares y Caf&eacute;s', 'bar-cafe'), (29, 3, 'Baile', 'baile'), (30, 3, 'Humor', 'humor'), (31, 3, 'Paseos', 'paseos'), (32, 3, 'Parques', 'parques'), (33, 3, 'Salidas', 'salidas'), (34, 3, 'General y Otros', 'general-otros'), (35, 4, 'Empresas y Negocios', 'empresa-negocio'), (36, 4, 'Empleo y Trabajo', 'empleo-trabajo'), (37, 4, 'Investigaciones Econ&oacute;nomi', 'investigacion-economica'), (39, 4, 'Inversiones y Finanzas', 'inversion-finanza'), (40, 4, 'Marketing y Publicidad', 'marketing-pubicidad'), (41, 4, 'Emprendimientos', 'emprendimientos'), (42, 4, 'Management y Administraci&oacute', 'management-admin'), (43, 4, 'Defensa del Consumidor', 'defensa-consumidor'), (44, 4, 'Contabilidad e Impuestos', 'contabilidad-impuestos'), (45, 4, 'General y Otros', 'general-otros'), (46, 5, 'Series de TV', 'series-tv'), (47, 5, 'Televisi&oacute;n', 'television'), (48, 5, 'Cine y Pel&iacute;culas', 'cine-peliculas'), (49, 5, 'Espect&aacute;culos', 'espectaculos'), (50, 5, 'Teatros', 'teatros'), (51, 5, 'Celebridades y Famosos', 'celebridad-famosos'), (52, 5, 'Diarios y Revistas', 'diarios-revistas'), (53, 5, 'General y Otros', 'general-otros'), (54, 6, 'Organizaciones sin fines de Lucr', 'organizaciones-sin-fines-de-lucr'), (55, 6, 'Organizaciones de Profecionales', 'organizaciones-profecionales'), (56, 6, 'Organizaciones de Voluntarios', 'organizaciones-voluntarios'), (57, 6, 'Organizaciones de Defensas', 'organizaciones-defensas'), (58, 6, 'Organizaciones Religiosas', 'organizaciones-religiosas'), (59, 6, 'Organizaciones Pol&iacute;ticas', 'organizaciones-politicas'), (60, 6, 'Grupos de Estudios', 'grupos-estudios'), (61, 6, 'Dormitorios y Residencias', 'dormitorios-residencias'), (62, 6, 'Estudiantes Secundarios', 'estudiantes-secundarios'), (63, 6, 'Estudiantes de Univercidades', 'estudiantes-univercidades'), (64, 6, 'Postgrados', 'postgrados'), (65, 6, 'Ex-alumnos', 'ex-alumnos'), (66, 6, 'Clubes y Sociedades', 'clubes-sociedades'), (67, 6, 'General y Otros', 'general-otros'), (68, 7, 'Actividades, Encuentros y Juntad', 'actividades-encuentros-juntadas'), (69, 7, 'Actualidad', 'actualidad'), (70, 7, 'Amantes de los Motores', 'amantes-motores'), (71, 7, 'Cultura Retro', 'cultura-retro'), (72, 7, 'Edades y Vivencias', 'edades-vivencias'), (73, 7, 'Coleccionistas', 'coleccionistas'), (74, 7, 'Manga y Anime', 'manga-anime'), (75, 7, 'Comics e Historietas', 'comics-historietas'), (76, 7, 'Belleza y Est&eacute;tica', 'belleza-estetica'), (77, 7, 'Modas y Tendencias', 'modas-tendencias'), (78, 7, 'Citas, Relaciones y Amor', 'citas-relaciones-amor'), (79, 7, 'Familias', 'familias'), (80, 7, 'Comidas, Recetas y Cocina', 'comidas-recetas-cocina'), (81, 7, 'Bebidas y Vinos', 'bebidas-vino'), (82, 7, 'Amigos', 'amigos'), (83, 7, 'Jardiner&iacute;a', 'jardineria'), (84, 7, 'Salud y Bienestar', 'salud-bienestar'), (85, 7, 'Historia', 'historia'), (86, 7, 'Pasatiempos y Manualidades', 'pasatiempos-manualidades'), (87, 8, 'Computadoras y Hadware', 'computadoras-hadware'), (88, 8, 'Celulares', 'celulares'), (89, 8, 'Gadgets', 'gadgets'), (90, 8, 'Software y Aplicaciones', 'software-aplicaciones'), (91, 8, 'Linux y GNU', 'linux-gnu'), (92, 8, 'Windows', 'windows'), (93, 8, 'Mac', 'mac'), (94, 8, 'Juegos', 'juegos'), (95, 8, 'Multimedia', 'multimedia'), (96, 8, 'Programaci&oacute;n y Lenguajes', 'programacion-lenguajes'), (97, 8, 'Comunidades 2.0 y Cultura online', 'comunidades-cultura-online'), (98, 8, 'Sitios webs y Blogs', 'sitios-webs-blogs'), (99, 8, 'Aparatos Electr&oacute;nicos', 'aparatos-electronicos'), (100, 8, 'Noticias y Novedades', 'noticias-novedades'), (101, 8, 'General y Otros', 'general-otros'), (102, 9, 'Blues', 'blues'), (103, 9, 'Cl&aacute;sica', 'clasica'), (104, 9, 'Compositores', 'compositores'), (105, 9, 'Country', 'country'), (106, 9, 'Cumbia', 'cumbia'), (107, 9, 'Dance', 'dance'), (108, 9, 'Electr&oacute;nica', 'electronica'), (109, 9, 'Folklore', 'folklore'), (110, 9, 'Indie', 'indie'), (111, 9, 'Instrumental', 'Instrumental'), (112, 9, 'Jazz', 'jazz'), (113, 9, 'Latina', 'latina'), (114, 9, 'Metal', 'metal'), (115, 9, 'Pop', 'pop'), (116, 9, 'R&B/Solud', 'rb-sould'), (117, 9, 'Rap y Hip Hop', 'rap-hip-hop'), (118, 9, 'Reggae', 'reggae'), (119, 9, 'Reggeaton', 'reggeaton'), (120, 9, 'Religiosa', 'religiosa'), (121, 9, 'Rock', 'rock'), (122, 9, 'General y Otros', 'general-otros'), (123, 10, 'Pa&iacute;ses', 'paises'), (124, 10, 'Provincias y Estados', 'provincias-estados'), (125, 10, 'Barrios', 'barrios'), (126, 10, 'Lugares', 'lugares'), (127, 10, 'General y Otros', 'general-otros'); -- -------------------------------------------------------- Recorda de importar la sql a tu db
  12. 1 like
    jeje tampoco es que tutan haya hecho gran cosa, cualquiera que le a dedicado un rato a ver el código del script llegaria a lo mismo al darse cuenta de como funciona el plugin de las ventanas modeles que maneja phpost de forma nativa, en fin que bien que ya estés manejando algo del script así comenzamos todos con pequeña cosas y biendo como funciona lo que ya existe, espero sogas avanzando con esto y les des mas cosas a estos parásitos, hay que recordar que todo aporte toma tiempo algunos mas algunos menos pero es tiempo de vida que se regala para bien o para mal por minimo que sea el aporte cuenta siempre y cuando no solo se copie o se hagan los dueños de las cosas de otros en todo caso vas bien, ya saldran mejores cosas y mas utiles con el tiem
  13. 1 like
    Hola,lo único que cambia es el paso de c.posts.php,aquí tienes el código actualizado c.posts.php /* Top Posts Favoritos por Vellenger ._.*/ function topfav(){ global $tsCore, $tsUser; $query = db_exec(array(__FILE__, __LINE__), '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 = db_exec(array(__FILE__, __LINE__), '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; }
  14. 1 like
    24 jajaaja. Respecto a lo que dices y muchos opinan la mayoría ya casi no tenemos tiempo yo terminé la facultad y enseguida entre a trabajar por la necesidad de dinero, pero estoy sumando todos mis refuerzos y con el permiso de Isidro retomando una nueva rama de desarrollo de PP!, en el cual se actualice casi todo y dejar la esencia de lo que aun es, yo le tengo un gran cariño a PP porque gracias a el aprendí mucho y ahora parte de lo que soy se lo debo (hablando profesionalmente) yo estoy aportando mi granito solo que voy a a mi ritmo. Pronto tendremos nuevas noticias, pero no quiero estar publicando temas e irme de vacaciones 2 años como en cierto foro de un cierto proyecto similar, aprovechemos Risus, y esperemos la nueva versión saludos!!!
  15. 1 like
    Ya lo logre y he agregado cierta opcion de enviar invitacion me falta algo de diseno manana lo acabo me canse son las 2:35 am hora peruana
  16. 1 like
    El error está en la consulta que se hace para recargar los posts cada día. Aquí está la forma correcta de ponerlo: Abre c.user.php y busca: function actualizarPost() { // HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR $ultimaRecarga = $this->info['user_nextlimiteposts']; $tiempoActual = time(); // SI YA SE PASO EL TIEMPO RECARGAMOS... if($ultimaRecarga < $tiempoActual){ // OPERACION SIG RECARGA A LAS 24 HRS $horaActual = date("G",$tiempoActual); $minActuales = date("i",$tiempoActual) * 60; $segActuales = date("s",$tiempoActual); $sigRecarga = 24 - $horaActual; $sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales); $sigRecarga = $tiempoActual + $sigRecarga; // LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR // db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = '.($tsCore->settings['c_keep_posts'] == 0 ? $this->permisos['golpd'] : 'user_limiteposts + '.$this->permisos['golpd']).', user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\''); // VAMONOS return true; } } Reemplaza por esta: function actualizarPost() { // HORA EN LA CUAL RECARGAR LOS POSTS QUE PUEDE CREAR 0 = MEDIA NOCHE DEL SERVIDOR $ultimaRecarga = $this->info['user_nextlimiteposts']; $tiempoActual = time(); // SI YA SE PASO EL TIEMPO RECARGAMOS... if($ultimaRecarga < $tiempoActual){ // OPERACION SIG RECARGA A LAS 24 HRS $horaActual = date("G",$tiempoActual); $minActuales = date("i",$tiempoActual) * 60; $segActuales = date("s",$tiempoActual); $sigRecarga = 24 - $horaActual; $sigRecarga = ($sigRecarga * 3600) - ($minActuales + $segActuales); $sigRecarga = $tiempoActual + $sigRecarga; // LA SIGUIENTE RECARGA SE HARA A MEDIA NOCHE DEL SIGUIENTE DIA LA HORA DEPENDE DEL SERVIDOR // db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_limiteposts = user_nextlimiteposts = '.$sigRecarga.' WHERE user_id = \''.$this->uid.'\''); // VAMONOS return true; } }
  17. 1 like
    Y lo podes agregar con un div en bbcode.inc.php y despues en c.core.php y con eso ya estaria.. Seria algo asi: en bbcode.inc.php buscas: array('tag' => 'success', 'replace' => '<div class="bbcmsg success">{param}</div>') Y arriba agregas: array('tag' => 'ads1', 'replace' => '<div class="ads1"> ( AQUI VA EL CODIGO DE LA PUBLICIDAD ) </div>'), Donde ves que dice, " Aqui va el codigo de la publicidad" lo debes de agregar en una sola linea, quedando asi: array('tag' => 'ads1', 'replace' => '<div class="ads1"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><!-- Adaptable --><ins class="adsbygoogle"style="display:block"data-ad-client="ca-pub-767660080710422"data-ad-slot="5128837194"data-ad-format="auto"></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div>'), Recorda que se le dio de nombre ads1 y la class que se usa para darle el estilo de su ubicación es la misma ads1 estas tienen en mismo nombre, pero no afecta en nada. Ahora en c.core.php buscas: // 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')); Al final de esa linea veras que sale: , 'success' Agregas al lado: , 'ads1' Y con esto ya estaria para que lo agregues de manera manual con el bbcode de esta manera: [ads1][ads1] Eso lo agregas cuando estes creando un posts y veras que saldra la publicidad, se podria hacer para que agregues al editor directamente pero es mas extenso hacerlo. Para darle la ubicacion simplemente agregas el css .ads1{ AQUI EL ESTILO PARA LA UBICACIÓN DEL BANERS } Y asi podes agregar mas codigos para otras publis de diferentes tamaños, ahi otras formas, pero te pase esta que la tenia a mano.
  18. 1 like
    Lo mismo pedi yo
  19. 1 like
    Resulta que apliqué este MOD pero lo adapté sólo para 1 url de la fuente Tengo este MOD http://www.vellenger.com/posts/complementos/33/Fuente-de-Informacion-Multiple-V5.html Me gustaría adaptarlo para las 5 fuentes de información /* Obtener_Title() :: OBTENER TITLE DE UNA URL */ function Obtener_Title($www) { $html = file_get_contents($www); $inicio = strpos ($html, '<title>'); $fin = strpos ($html, '</title>'); $largo = $fin - $inicio - 7; $titulo = substr ($html, ($inicio+7),$largo); return $titulo; } function Obtener_Titulo() { global $tsCore; $post_id = intval($_GET['post_id']); $query = mysql_query('SELECT p_fuente FROM p_posts WHERE post_id = \''.(int)$post_id.'\' LIMIT 1'); $data = mysql_fetch_array($query); $url = $data['p_fuente']; $resultado = $this->Obtener_Title($url); return $resultado; } Qué debería cambiar en esta parte: supongo lo que selecciona de la base de datos que seleccione las cinco fuentes y en la parte de $data dependiendo de cual fuente es (fuente 1 fuente 2 fuente 3...) que devuelva el titulo de la url correspondiente {if $tsPost.p_fuente == '' } {else} <hr class="divider" /> <span><b><font size="2">Fuente de Informacion</font></b></span><br> <img src="{$tsConfig.url}/files/avatar/{$tsAutor.user_id}_120.jpg" style="width:16px;height:16px;" align="absmiddle" /><span style="margin-left:10px;">El contenido de la entrada es de mi auditor&#237;a, y/o , es una recopilaci&#243;n de diferentes fuentes.</span><br> <img src="http://g.etfv.co/{$tsPost.p_fuente}" style="width:16px;height:16px;" align="absmiddle" /><span style="margin-left:10px;"><a target="blank" href="{$tsPost.p_fuente}" style="color:#888;">{$tsTitulo}</a></span> {/if} {$tsTitulo} quedaría igual ya que la función dependiendo de cual fuente es devolvería el título
  20. 1 like
    Pinta muy bueno! te dejo 10 bits
  21. 1 like
    oie pero que bien espero lo termines e.e +1
  22. 1 like
  23. 1 like
    Lo tengo terminado solo tengo que tener ganas de publicarlo y adaptarlo para todos :v
  24. 1 like
    Hola a todos, hoy les traigo este mod para tener notificaciones de escritorio en vuestra web. Notas: -Las imágenes y títulos como (Nueva Notificación -- Nuevo Mensaje -- Nuevo Aviso) se pueden cambiar desde los archivos que se suben a modules. -El mod no funciona si el usuario no esta logeado. -Si hay nuevas versiones, se les avisará a los administradores. Futuras versiones: -La nueva version permitirá al usuario manejar si quiere ver las notificaciones, avisos o los mensajes desde /cuenta/. -La parte de notificaciones está un poco bugeada ya que al cargar la notificación y actualizar la pagina se marcan todas como leídas, eso vendrá parcheado en la próxima version. -Se está solucionando el problema de los textos en UTF-8, en próximas versiones vendrá parcheado. -Se está solucionando el problema del bucle infinito al actualizar la página. -Se agregaran los avisos también. Todo esto vendrá corregido y agregado en la version 1.0, por falta de tiempo, no pude terminarlo, mis disculpas XD. Si no saben que es/son aquí les dejo esto: Bien, después de todo esto, vamos a la instalación. Vamos al header.php (gracias @MagicInventor) y buscamos: // Nofiticaciones $smarty->assign('tsNots',$tsMonitor->notificaciones); y abajo pegamos: //Mod Notificaciones De Escritorio para NOTS $notificaciones = $tsMonitor->getNotificaciones(); $smarty->assign("tsDeskNotsNots",$notificaciones['data']); //Mod Notificaciones de Escritorio para MPS $smarty->assign("tsDeskNotsMPs",$tsMP->getMensajes(1, false, 'monitor')); Vamos al main_footer.tpl y pegamos antes de: </body> </html> Esto: {if $tsUser->is_member} {include file='modules/m.desknots_nots.tpl'} {include file='modules/m.desknots_mps.tpl'} {include file='modules/m.desknots_checking.tpl'} {/if} Ahora subimos estos archivos a themes/TU_TEMA/templates/modules/: [Descarga] Y eso sería todo. [Demo]
  25. 1 like
    Ve a la "inc/ext/bbcode.inc.php En ese archivo busca: array('tag' => 'url', 'replace' => '<a href="{param}" target="_blank">{param}</a>', 'parse' => false, 'validParam' => $urlValidator), y ahí añade ese atributo, hay dos coincidencias, hazla en las dos (debajo de esa línea)
  26. 1 like
    Lo único que pasará es que el sistema ya no comprobará si es una imagen sino un enlace "x", por lo tanto los usuarios podrán insertar "http://www.facebook.com" en el campo donde se supone que debe ir el anlace a una imagen.png/jpg.
  27. 1 like
  28. 1 like
    No Prueba esto: Ve a \inc\ext\bbcode.inc.php y edita esto: array('tag' => 'img', 'replace' => '<img src="{param}" onload="if(this.width > 735) {this.width=735}"/>', 'parse' => false, 'validParam' => $imgValidator), Al final veras: $imgValidator cambia por: $urlValidator
  29. 1 like
    No entendía a lo que te referías. Y no, no estás mal -yao Se refiere a que en vez de colocar la imagen coloques el enlace. a la imagen. Puedes poner un modal que cargue la imagen sin salir del post. EJ. https://puu.sh/vBMyP/889d78e7de.png Yo lo he hecho con Bootstrap en el portal, además de que yo sí cargo la imagen. Lo que tú debes hacer es sólo insertar el enlace de la imagen y que al dar clic se abra un modal mostrando la imagen. EDITO. Lo puse con enlaces para que te sea más claro. https://puu.sh/vBMQm/b7f62221b3.png Como puedes ver, sólo muestro el enlace y la carga es demasiado rápida y con un simple clic al enlace se abre un modal y carga la imagen para mostarla. https://puu.sh/vBMYU/19d848e05e.png
  30. 1 like
    cada imagen pasa por el validador y el validador tiene usa getimagesize y eso descarga la imagen para obtener sus datos y verificar si es imagen, y si un post contiene 10 imagenes con un peso promedio de 5mb... imaginate nomas hahaah o estoy mal ?
  31. 1 like
  32. 1 like
    Por que ya viene así por defecto, hay mini mod para poner la noticia en el home, muy fácil de hacer, por que solo apareces ingresando a web.com/post/ o /portal/
  33. 1 like
    Me dieron ganas de hacer un theme y bueno salio esto ^^ Vi una web y me gusto, la investigue y bueno así salio este theme, es de un script si lo quieren ver se llama como el theme. Diseñado en base del theme carbon, créditos para @nittox y mods utilizados. Lo hice de varios colores por si alguien no le gustaba, nos enumere y dejo como quedan en cada imagen.. #1: #2: #3 Deberán instalar el mod de portadas para visualizarlo en la home y para post relacionados, de igual manera deje c.posts.php y c.borradores.php ya editados desde 0, osea sin ninguna modificación, ni mods apartes.. dejo un texto en los archivos.. Se instala con el nombre de: youtunes Link MEGA: https://mega.nz/#F!B90jUYjA!_9P7qbfdTFS8SwVvNcKfzQ Link Mediafire: https://www.mediafire.com/#f754o12pix7dv Demo temporal: http://youtunes.hol.es/ Cualquier consulta, duda o queja me dejan en comentarios. es posible que falten algunos toques, me avisan Hasta Luego
  34. 1 like
    Hola gente! acá les dejo este pequeño añadido que muestra las ultimas fotos en la Home en modo slider con botones ''prev'' y ''next'' pero que a su vez tiene autoplay. Antes que nada agradecer a quienes colaboraron: Tuente , Tronlar , bits4me , CalmBefPhp , MagicInventor en éste topic de soporte... En t.home.tpl justo despues de {include file='sections/main_header.tpl'} agregar : <!DOCTYPE html> <html> <title>W3.CSS</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="http://www.killeringa.org/themes/default/css/KSlider.css"> <body> <div class="w3-content"> {foreach from=$tsImages.data item=im key=i} <li id="img_{$i}"> <a href="{$tsConfig.url}/fotos/{$im.user_name}/{$im.foto_id}/{$im.f_title|seo}.html" title="{$im.f_caption}"> <center><img class="mySlides" src="{$im.f_url}" style="height:250px"></center> </a> </li> {/foreach} <button class="btn1" onclick="plusDivs(-1)">❮</button> <button class="btn2" onclick="plusDivs(1)">❯</button> </div> {literal} <script type="text/javascript"> var slideIndex = 1; showDivs(slideIndex); function plusDivs(n) { showDivs(slideIndex += n); } function showDivs(n) { var i; var x = document.getElementsByClassName("mySlides"); if (n > x.length) {slideIndex = 1} if (n < 1) {slideIndex = x.length} for (i = 0; i < x.length; i++) { x[i].style.display = "none"; } x[slideIndex-1].style.display = "block"; } var slideIndex = 0; carousel(); function carousel() { var i; var x = document.getElementsByClassName("mySlides"); for (i = 0; i < x.length; i++) { x[i].style.display = "none"; } slideIndex++; if (slideIndex > x.length) {slideIndex = 1} x[slideIndex-1].style.display = "block"; setTimeout(carousel, 4000); // Change image every 2 seconds } </script> {/literal} </body> </html> Noten que donde dice: <link rel="stylesheet" href="http://www.killeringa.org/themes/default/css/KSlider.css"> Deberán poner la ruta de donde suban el CSS,el CSS es el siguiente: .btn1 { background: #3498db; background-image: -webkit-linear-gradient(top, #3498db, #2980b9); background-image: -moz-linear-gradient(top, #3498db, #2980b9); background-image: -ms-linear-gradient(top, #3498db, #2980b9); background-image: -o-linear-gradient(top, #3498db, #2980b9); background-image: linear-gradient(to bottom, #3498db, #2980b9); -webkit-border-radius: 28; -moz-border-radius: 28; border-radius: 0px; font-family: Arial; color: #ffffff; font-size: 50px; /*padding: 10px 20px 10px 20px;*/ text-decoration: none; position: inherit; margin-top: -150; cursor: pointer; } .btn1:hover { background: #3cb0fd; background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db); background-image: -moz-linear-gradient(top, #3cb0fd, #3498db); background-image: -ms-linear-gradient(top, #3cb0fd, #3498db); background-image: -o-linear-gradient(top, #3cb0fd, #3498db); background-image: linear-gradient(to bottom, #3cb0fd, #3498db); text-decoration: none; } .btn2 { background: #3498db; background-image: -webkit-linear-gradient(top, #3498db, #2980b9); background-image: -moz-linear-gradient(top, #3498db, #2980b9); background-image: -ms-linear-gradient(top, #3498db, #2980b9); background-image: -o-linear-gradient(top, #3498db, #2980b9); background-image: linear-gradient(to bottom, #3498db, #2980b9); -webkit-border-radius: 28; -moz-border-radius: 28; border-radius: 0px; font-family: Arial; color: #ffffff; font-size: 50px; /*padding: 10px 20px 10px 20px;*/ text-decoration: none; position: inherit; margin-top: -150; cursor: pointer; margin-left: 96%; } .btn2:hover { background: #3cb0fd; background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db); background-image: -moz-linear-gradient(top, #3cb0fd, #3498db); background-image: -ms-linear-gradient(top, #3cb0fd, #3498db); background-image: -o-linear-gradient(top, #3cb0fd, #3498db); background-image: linear-gradient(to bottom, #3cb0fd, #3498db); text-decoration: none; } .w3-content { background-color: #ECECEC; } Captura: Bueno amigos eso es todo! Ahora en base a esto agradeceria si alguien puede aplicar algunas mejoras y publicarlas en este topic ,como por ejemplo que muestre avatar,nombre de user y descripcion si la hubiere,no vendría mal algun efecto de transición entre una imagen y otra.... (Aclaro que el theme es V5)
  35. 1 like
    como edito lo que dice, pequeña descripcion de tu pagina aqui?
  36. 1 like
    vuelve instalar con una base de datos nueva y con nombre legible
  37. 1 like
    Hola este es mi primer tema en phpost (asi que no me maten xD) actualmente esta en desarrollo pero lo comparto para lo que quieran ayudarme xD. Funciones: Registro de usuario login de usuario agregar post mensaje de usuario buscador categoria agregar imagen (Desabilitado por que no me gusto xD) agregar afiliado (en desarrollo) bbcode(en desarrollo) caja de comentario slider(funcional terminado no estatico) ya se que falta mucho pero la idea inicial era solamente dejar que el usuario solo se registre y publique contenido, y por otro lado estoy leyendo la documentación de smarty ya que phpost no te explica en la documentación que hacer cada variable o función del sistema xD Descargar: original: http://www.zkreations.com/2017/01/plantilla-anime-responsive-blogger.html Licencia: http://www.safecreative.org/work/1701260448173-anime
  38. 1 like
    Publico este tema rápidamente para que los usuarios que tengan tiempo puedan probar y buscar errores del complemento Páginas modulares que, como algunos ya habrán visto en el chat, he estado desarrollando en mis tiempos libres. Por supuesto, se otorgarán créditos a los usuarios que me ayuden a detectar errores. ¿En qué consiste este mod? Es un complemento que permite crear, editar, instalar, eliminar y organizar mods y páginas desde la administración para facilitar la gestión de la web y para que no sea necesario acceder al servidor FTP. Debido a mi falta de tiempo, no podré publicarlo tan completo y organizado como quería, pero al menos ya es totalmente funcional y estable, aunque prefiero publicarlo primero en fase de pruebas para garantizar. De momento, la instalación solo está disponible de modo automático y solo para los themes que se basen en el default: http://www.mediafire.com/?g9hhy8up8a99oez Para instalarlo solo tenéis que extraer el contenido del zip en inc/php/ y acceder a www.tuweb.com/install/. Y también dejo mi mod RChat estilo Whatsapp 1.2 en versión modular para que lo instaléis (se instala en Admin > Páginas > Instalar página) y entendáis el funcionamiento de este mod: http://www.mediafire.com/?d9mx5knadyog81t Capturas
  39. 1 like
    Bueno amigos hace unos dias les deje un avance de la plantilla LiDesign v4 que estoy desarrollando y hoy me decidi a publicarla por que no podre usar el computador por unos dias y prefiero dejarla publicada a tenerla ahi guardada por mas tiempo. La plantilla no esta al 100% completa, se que tiene algunos bugs y agradecería que me dejaran en comentarios o por mensaje privado los errores que encuentren. Bueno sin mas que decir, las capturas: Bueno como les dije anteriormente este diseño consta de dos versiones, una la normal y la otra con la estructura de foro. Para los que quieren la de foro deben instalar este complemento omitiendo los pasos de la carpeta themes. Se instala como la plantilla default, es recomendable hacer una copia de su tema default antes de instalar este. Luego de instalar borrar el contenido de la carpeta cashe. y listo, ahora solo queda probarla. Descarga: LiDesign v4 Normal LiDesign v4 Foro Cualquier duda, problema o comentario dejarlo aqui o por mensaje privado. Saludos PD: Porfavor no retiren el copyright, me costo mucho trabajo hacer la plantilla y agradecería que no cambien el copy.
  40. 1 like
    Pues pública mis "rastros"... ¿Qué tienes? ¿mi ip? ¿mi dirección de mi casa? jajaja ¿eres uno de los fracasados de "lapaginacuartetera"? ¿también eres el que me amenazo en twitter? Lo peor que "Esteban" ni es mi nombre, ni idea de donde lo sacaste, encima, es muy fácil obtener mi nombre real si tienes un poco de cerebro. En segundo lugar aunque encuentres mi nombre "real", no vas a encontrar ningun rastro sobre mi en internet, suerte "amenazador". No me voy a quedar en una "cueva", como tu dices, voy a seguir (si me cuerdo y tengo tiempo) dejando defaces en esa web de mierda y sí todo vuelve pero para mi no. PD: también recuerda que estas hablando con alguien que tiene una cantidad de contactos que aparte de yo, te podrán hacer la vida imposible, no te estoy diciendo, de joderte por internet sino en la vida real. Ni idea quien eres, ni que edad tienes, pero lo que estoy seguro si estas laburando, a tus jefes no les va a gustar nada esto y mira que conozco gente que me puede hacer llegar a ellos y yo lo podría hacer personalmente. Porque acá, el que esta cometiendo delito eres tú y esa web en la cual se pública contenido con derechos de autor. Piensa lo que haces y con quien te metes. ~ MagicInventor, 2016
  41. 1 like
    AYUDAAA EL LINK DE DESCARGA NO FUNCIONA PON MF O MEGA PERO NO FILE DRIVE PORFAVOR!! Hola aquí teneis el archivo
  42. 1 like
    No existe tal cosa como un ''estado islamico'' con esas palabras solo buscan demonizar una religion,lo que habria que ''hackear'' en todo caso es al estado terrorista de USA mas precisamente a la NSA ._. PD.: No e sla primera vez que inventan estas cosas,con el unico proposito d eluego justificar toneladas de ''democracia'' cayendo desde el cielo... me dan asco.
  43. 1 like
    Hola amigos, hace ya mucho tiempo les traje una tienda automática, cuya administración era muy pobre. Como he visto que bastante gente lo usaba he desarrollado una v2 mas manejable. ¿Que tiene? - Administración completa de los productos de la tienda - Sección tienda - Instalación más sencilla que la v1 - Código más optimizado Próximamente más productos 1) Suben todos estos archivos como se indica: https://www.mediafire.com/?8rx9r8mk3ou7fa7 m.admin_tienda.tpl -> themes/TUTEMA/templates/admin_mods m.tienda.tpl -> themes/TUTEMA/templates/modules t.tienda.tpl -> themes/TUTEMA/templates tienda.php -> inc/php c.tienda.php -> inc/class 2) Hacen esta SQL en su BD: CREATE TABLE IF NOT EXISTS `t_productos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` int(1) NOT NULL, `precio` int(4) NOT NULL, `obj` int(5) NOT NULL DEFAULT '0', `obj_2` int(5) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 3) Abren el t.admin.tpl de themes/TUTEMA/templates y buscan: {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'} Y abajo agregan: {elseif $tsAction == 'tienda'} {include file='admin_mods/m.admin_tienda.tpl'} 4) Abren el admin.php de inc/php y buscan: } elseif($action == 'configs'){ // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } Y justo debajo añaden: /** TIENDA **/ } elseif($action == 'tienda'){ include('../class/c.tienda.php'); $tsTienda = new tsTienda; if(empty($act)){ $productos = $tsTienda->getProductos(); if(is_array($productos)) $smarty->assign("tsProductos", $productos); else $smarty->assign("tsError", $productos); }elseif($act == 'nuevo' && !empty($_POST['type'])){ $producto = $tsTienda->nuevoProducto(); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else $smarty->assign("tsError", $producto); } elseif($act == 'editar'){ if(!empty($_POST['type'])){ $producto = $tsTienda->editProducto((int)$_GET['id']); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else{ $smarty->assign("tsError", $producto); $producto = $tsTienda->getProducto((int)$_GET['id']); if(is_array($producto)) $smarty->assign("tsProducto",$producto); else $smarty->assign("tsError", $producto); } } else{ $producto = $tsTienda->getProducto((int)$_GET['id']); if(is_array($producto)) $smarty->assign("tsProducto",$producto); else $smarty->assign("tsError", $producto); } } elseif($act == 'borrar'){ $producto = $tsTienda->delProducto(); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else $smarty->assign("tsError", $producto); } 5) Abren el c.user.php de inc/class y buscan: // NOMBRE $this->nick = $this->info['user_name']; $this->uid = $this->info['user_id']; $this->is_banned = $this->info['user_baneado']; Abajo añaden: $this->puntos = $this->info['user_puntos']; 6) Abren el m.admin_sidemenu.tpl de themes/TUTEMA/templates/admin_mods y buscan: <li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/cats">Categor&iacute;as</a></span></li> Abajo añaden: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/tienda">Tienda</a></span></li> 7) Para acabar, abren el head_menu.tpl de themes/TUTEMA/templates/sections y buscan: <li class="tabbed {if $tsPage == 'tops'}here{/if}" id="tabbedtops"> <a title="Ir a TOPs" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/top/">TOPs <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y abajo añaden: <li class="tabbed {if $tsPage == 'tienda'}here{/if}" id="tabbedtops"> <a title="Ir a Tienda" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/tienda/">Tienda <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y listo!! Caps: Demo: http://programu.net/tienda/ User: demo Pass: demo1234 Espero que les guste P.D: Proximamente nuevos productos, si desean algún producto en concreto no duden en pedirlo
  44. 1 like
    Noticias para el Staff Aqui les comparto este complemento que me lo pidieron, el cual consiste que el primer admin pueda dejar un mensaje en la moderacion, asi lo podran ver los demas admin y moderadores. Hacemos esta consulta SQL CREATE TABLE IF NOT EXISTS `w_nstaff` ( `n_id` int(11) NOT NULL AUTO_INCREMENT, `n_body` text NOT NULL, `n_date` int(10) NOT NULL, `n_active` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`n_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; En c.admin.php al final buscamos: /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ } Y agregamos arriba: /* getNotistaff() */ function getNotistaff() { global $tsCore; // $n_id = $tsCore->setSecure($_GET['nid']); // $query = mysql_query('SELECT `n_id`, `n_body`, `n_date`, `n_active` FROM w_nstaff WHERE n_id = \'' . (int)$n_id . '\' LIMIT 1'); $data = mysql_fetch_assoc($query); // return $data; } /* getNstaff() */ function getNstaff() { // $query = mysql_query('SELECT * FROM w_nstaff WHERE n_id >0 ORDER BY n_id DESC'); $data = result_array($query); // return $data; } /* newNstaff() */ function newNstaff() { global $tsCore, $tsUser; // $n_body = $tsCore->setSecure($tsCore->parseBadWords(substr($_POST['n_body'], 0, 300))); $n_active = empty($_POST['n_active']) ? 0 : 1; if (!empty($n_body)) { if (mysql_query('INSERT INTO `w_nstaff` (`n_body`, `n_date`, `n_active`) VALUES (\'' . $n_body . '\', \'' . time() . '\', \'' . $n_active .'\')')) return true; } // return false; } /* editNstaff() */ function editNstaff() { global $tsCore, $tsUser; // $n_id = intval($_GET['nid']); $n_body = $tsCore->setSecure($tsCore->parseBadWords(substr($_POST['n_body'], 0, 300))); $n_active = empty($_POST['n_active']) ? 0 : 1; // if (!empty($n_body)) { if (mysql_query('UPDATE `w_nstaff` SET `n_body` = \'' . $n_body . '\', n_active = \'' . $n_active . '\' WHERE n_id = \'' . (int) $n_id . '\'')) return true; } } /* delNstaff(); */ function delNstaff() { $n_id = $_GET['nid']; if (!mysql_num_rows(mysql_query('SELECT `n_id` FROM `w_nstaff` WHERE `n_id` = \'' . (int)$n_id . '\' LIMIT 1'))) { return 'El id ingresado no existe.'; } mysql_query('DELETE FROM `w_nstaff` WHERE `n_id` = \'' . (int)$n_id . '\''); } function setNstaff() { global $tsUser; $nstaff = $_POST['nid']; $query = mysql_query('SELECT n_active FROM w_nstaff WHERE n_id = \'' . (int) $nstaff . '\''); $data = mysql_fetch_assoc($query); // COMPROBAMOS if ($data['n_active'] == 1) { if (mysql_query('UPDATE w_nstaff SET n_active = \'0\' WHERE n_id = \'' . (int) $nstaff . '\'')) { return '2: Noticia desactivada'; } else return '0: Ocurri&oacute, un error'; } else { if (mysql_query('UPDATE w_nstaff SET n_active = \'1\' WHERE n_id = \'' . (int) $nstaff . '\'')) { return '1: Noticia activada.'; } else return 'Ocurri&oacute; un error'; } } En c.moderacion.php al final de la ultima } Agregamos arriba: /* geNoticiasStaff() */ function geNoticiasStaff() { // $query = mysql_query('SELECT * FROM w_nstaff WHERE n_id >0 AND n_active= 1 ORDER BY n_id DESC'); // $data = result_array($query); // return $data; } En moderacion.php buscamos: $smarty->assign("tsMods",$tsMod->getMods()); Y agregamos abajo: $smarty->assign("tsNotistaff",$tsMod->geNoticiasStaff()); En admin.php buscamos: } elseif($action == 'news'){ Y lo cambiamos por: } elseif($action == 'nstaff'){ if(empty($act)) $smarty->assign("tsNstaffs",$tsAdmin->getNstaff()); elseif($act == 'nuevo' && !empty($_POST['n_body'])){ if($tsAdmin->newNstaff()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/nstaff?save=true'); } elseif($act == 'editar'){ if(!empty($_POST['n_body'])){ if($tsAdmin->editNstaff()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/nstaff?save=true'); } else $smarty->assign("tsNstaff",$tsAdmin->getNotistaff()); } elseif($act == 'borrar'){ if($tsAdmin->delNstaff()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/nstaff?borrar=true'); } } elseif($action == 'temas'){ En ajax.admin.php buscamos: 'admin-noticias-setInActive' => array('n' => 4, 'p' => ''), Y agregamos abajo: 'admin-nstaff-setInActive' => array('n' => 4, 'p' => ''), Mas abajo buscamos: case 'admin-noticias-setInActive': //<--- echo $tsAdmin->setNoticiaInActive(); //---> break; Y agregamos abajo: case 'admin-nstaff-setInActive': //<--- echo $tsAdmin->setNstaff(); //---> break; En el archivo .htaccess Buscamos: RewriteRule ^admin/news/nueva inc/php/admin.php?action=news&act=nuevo [QSA,L] Y agregamos abajo: RewriteRule ^admin/nstaff/editar/([0-9]+)$ inc/php/admin.php?action=nstaff&act=editar&nid=$1 [QSA,L] RewriteRule ^admin/nstaff/nueva inc/php/admin.php?action=nstaff&act=nuevo [QSA,L] En el archivo admin.js buscamos: nicks : { Y agregamos arriba: nstaff : { accion: function(nid){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url +'/admin-nstaff-setInActive.php', data: 'nid=' + nid, success: function(h){ switch(h.charAt(0)){ case '0': //Error mydialog.alert('Error', h.substring(3)); break; case '1': // $('#status_nstaff_' + nid).html('<font color="green">Activa</font>'); break; case '2': // $('#status_nstaff_' + nid).html('<font color="purple">Inactiva</font>'); break; } $('#loading').fadeOut(350); } }); }, }, En t.admin.tpl al final buscamos: {/if} Y agregamos arriba: {elseif $tsAction == 'nstaff'} {include file='admin_mods/m.admin_staff.tpl'} En m.mod_welcome.tpl buscamos: <div class="boxy-title"> <h3>Centro de Moderaci&oacute;n</h3> </div> Y agregamos abajo: {if $tsNotistaff} <div class="notstaff"> <h2>Mensaje de Administraci&oacute;n</h2> <ul class="lastnstff"> {foreach from=$tsNotistaff key=i item=n} <li>{$i+1})&nbsp;&nbsp;{$n.n_body}</li> {/foreach} </ul> </div> {/if} Al final de extras.css agregamos: .notstaff { height:auto; background:#FFFFBF; border:2px dashed orange; } .notstaff h2 { color:red; padding:5px 0 5px 25px; } ul.lastnstff li { display:block; color:#006600; font-weight:600; font-family: Helvetica,Arial; font-size:12px; padding:10px; background:#FFF; border-top:1px solid orange; border-bottom:1px solid orange; margin:5px 0; } En m.admin_sidemenu.tpl buscamos: <li id="a_news"><span class="cat-title"><a href="{$tsConfig.url}/admin/news">Noticias</a></span></li> Y agregamos abajo: {if $tsUser->uid==1}<li id="a_news"><span class="cat-title"><a href="{$tsConfig.url}/admin/nstaff">Noticias Staff</a></span></li>{/if} Subimos el archivo a su respectiva carpeta, deje la instalación en un txt si les hace falta ok. Descarga Espero les sea de utilidad.. Hasta la próxima
  45. 1 like
    por poner tu banner en mi web de 1 visita al mes. te cobro 100 dlls
  46. 1 like
    Bueno era eso nada mas, e actualizado el archivo c.juegos.php y este es el archivo que funciona: http://www.mediafire.com/view/3x8z7jlha85e40c/c.juegos.php Saludos y gracias a todos los que me ayudaron
  47. 1 like
    haaaaaaaaa OLA Ke ase aqui les traigo el thema que esta "desarrollando" (skin para Chito pero thema para mi ) no tengo demo pero si alguno se copa que la haga :P Creditos a Titan y Zero por el tema simplemente se intala como minecraft le agrege un menu soporte. simplemente se veran lso post con la categoria sporte (a la categoria la tienen que crear) y si lo quieren borrar simplemente en head-menu o por ahy y se borra CAP se editan facilmente las imagenes e,e Descarga: http://www.mediafire.com/download/e5p5l65vosr1sz6/minecraft.rar Eso es todo espero que les guste.. saludos!
  48. 1 like
    cuando vi el titulo: cuando vi que era gratis: Buen diseño +1
  49. 1 like
    mm buena modificacion pero no me gusta... si yo viera eso me registraria claro pero al ver poca actividad no volveria mas e.e saludos y suerte