Jump to content

Clasificación


Contenido popular

Showing most liked content since 23/09/16 en todas las áreas

  1. 26 points
    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 ..
  2. 20 points
    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
  3. 16 points
    te dejo la estructura y el css lo hice lo mas simple que pude, haber si lo puedes adapta rapido salu2. index.html
  4. 15 points
    por cierto para que tema lo quieres? default? o alguno en especifico?
  5. 15 points
  6. 15 points
    http://www.dejaelpost.net/ de ahi lo saco y no recuerdo ya el nombre de donde lo sacaron ellos
  7. 13 points
    Hola pues dado que no tengo dinero pero si conocimiento tengo planeado sacar todos los módulos que pude ver en el vídeo de la versión de phpost de paga que se publico la otra semana, personalmente algunas funciones de las que pudimos ver no les veo mucha utilidad, pero bueno esa es mi opinión y yo se que a muchos les gustaría poder comprar esa versión para sacarle las cosas, pero quien tiene para pagar no sabe mucho en la mayoría de los casos jaja. Y los pobres tenemos que aprender para poder ganar algo de dinero jaja, en fin les dejo los pasos en un archivo y en este tema. Cualidades: - Limitación de contenido a mostrar para evitar la carga lenta. - Botón para seguir leyendo en caso de que el post sea muy largo - Evitar la vista previa del contenido del post si es privado y no eres usuario registrado. PD: Se que había publicado unas fotos de módulos en desarrollo pero como me los compraron ya no los publicare, lo siento. Solo estaré publicando los que me llamaron la atención de la versión que se vende y otros que tengo guardado y desarrollando en mi localhost. 1) Se van al archivo estilo.css y agregan al final esto: .mosp{display:block;text-align:center;margin-top:15px;background:#2594EC;color:#fff;padding:10px;line-height:1;border-radius:3px}.mosp:hover{background:#46acff;color:#fff;text-decoration:none}#ojin{background:url(../i/i.png) -238px -102px;display:block;width:16px;height:16px;float:right;margin:0}#ojin:hover{cursor:pointer;opacity:.5}.pripre{text-align:center;overflow:hidden;margin-top:50px}.pripre img{clear:both}.pripre h3{margin:30px 0 0;font-size:40px;color:#07a488;display:block;line-height:1} 2) En el archivo m.home_last_posts.tpl (existente solo en version V5 en dafault u otro tocara buscar) buscan lo siguiente 2 veces: {if $p.post_private} y arriba colocan esto: {if $tsUser->is_member} <span id="ojin" onclick="precargar('{$p.post_id}','{$p.post_title}');return false;"></span> {else} <span id="ojin" onclick="precargar('{$p.post_id}','{$p.post_title}');return false;"></span> {/if} 3) Se van al archivo c.posts.php y hasta la parte de abajo antes del "{" (cochete de cerrie) colocan esto: //FUNCION PARA PREVISUALIZAR POST DESDE LA HOME function getPreviewHome(){ global $tsCore, $tsUser; $id = $tsCore->setSecure(intval($_GET['id'])); $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_title, p.post_body, p.post_private, c.c_seo FROM p_posts AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_id = \''.(int)$id.'\' LIMIT 1'); $data = db_exec('fetch_assoc', $query); // $maximo = 500;//MAXIMO DE CARACTERES PARA MOSTRAR Y NO GASTAR RECURSOS $contenido = $data['post_body'];// DECLARAR VARIABLE CONTENIDO A MOSTRAR if ($tsUser->is_member){ if (strlen($contenido) > $maximo) { $cuerpo = substr($contenido, 0, $maximo); $url = $tsCore->settings['url'].'/posts/'.$data['c_seo'].'/'.$data['post_id'].'/'.$tsCore->setSEO($data['post_title']).'.html'; $cuerpo = $cuerpo.'<a class="mosp" href="'.$url.'">Continuar leyendo</a>'; }else{ $cuerpo = $contenido; } }else{ if($data['post_private'] == 1){ $url = $tsCore->settings['images']; $cuerpo = '<div class="pripre"><img src="'.$url.'/candado.png" alt="Post privado"/><h3>Este post es privado</span></h3>'; }else{ if (strlen($contenido) > $maximo) { $cuerpo = substr($contenido, 0, $maximo); $url = $tsCore->settings['url'].'/posts/'.$data['c_seo'].'/'.$data['post_id'].'/'.$tsCore->setSEO($data['post_title']).'.html'; $cuerpo = $cuerpo.'<a class="mosp" href="'.$url.'">Continuar leyendo</a>'; }else{ $cuerpo = $contenido; } } } return array('cuerpo' => $tsCore->parseBadWords($tsCore->parseBBCode($cuerpo), true)); } 4) En el archivo ajax.posts.php buscan: 'posts-genbus' => array('n' => 2, 'p' => 'genbus'), y abajo de eso colocan esto: 'posts-preview-home' => array('n' => 0, 'p' => 'preview'), 4) En el mismo archivo buscan: default: y arriba de eso colocan esto: case 'posts-preview-home': $smarty->assign("tsPreview",$tsPosts->getPreviewHome()); break; 5) En el archivo funciones.js hasta el fina agregan esto: //PREVISUALIZAR POST DESDE LA HOME function precargar(id, titulo){ mydialog.class_aux = 'ver'; mydialog.show(true); mydialog.title('Previsualización'); mydialog.body('<div class="carf"><p>Cargando vista previa</p><img src="' + global_data.img + '/images/loading_bar.gif"/></div>'); mydialog.buttons(false); mydialog.center(); $.ajax({ type: 'GET', url: global_data.url + '/posts-preview-home.php', data: 'id=' + id, success: function(r) { mydialog.title(titulo); mydialog.body(r); mydialog.buttons(false); mydialog.center(); $.scrollTo(0, 500); $('#mydialog').removeClass('preview'); } }); } Listo, ya solo suben esta imagen a la carpeta "imagenes". Le dejo unas fotos de como funciona vale. 1) Vista previa del post cuando tiene mucho contenido 2) Vista previa del post cuando no eres usuario registrado y esta en privado 3) Vista previa del post cuando no tiene mucho contenido y no esta en privado y no eres usuario registrado Instrutivo-PrevioPost.php
  8. 13 points
    Hola que les párese este modificación? les dejo unas capturas de como quedo.
  9. 13 points
    Pues así va, los muros son independientes por comunidad y solo podrán publicar los miembros de la comunidad y tendrá opción para que sea publico o solo miembros o también solo x rango de la comunidad ya veré que mas se me ocurre, igual y los hastags también que sean privados de la comunidad y si se te ocurre otra cosa dime para agregarlo de una vez.
  10. 13 points
    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
  11. 12 points
    Esta idea no es nueva me rondaba desde que vi el uso de muros en un script clon de taringa y bueno el resultado es bueno y algo interesante para poder darle mas dinamismo a las comunidades, lastima que ya no existan sitios grandes donde se le pueda dar un buen uso...
  12. 12 points
    lo hice una vez a mi también me pareció una buena idea, pero nadie me dio bola jaja y lo deseche, no es complicado en realidad
  13. 11 points
    Que tal les comparto esta modificacion para cambiar el sonido de las notificaciones por un audio mp3 y dejar de usar un archivo swf va. Se van al archivo live.js y buscan: $('#swf').html('<embed width="0px" height="0px" wmode="transparent" allowscriptaccess="always" quality="high" bgcolor="#ffffff" src="' + global_data.url + '/inc/ext/' + sound_type + '.swf" type="application/x-shockwave-flash">'); y lo cambiar por esto: var audio = new Audio('' + global_data.url + '/inc/ext/Rhea.mp3'); audio.play(); el archivo mp3 se los dejo aqui, lo suben a la ruta inc/ext y si no les gusta ese le dejo una pagina donde hay una gran variedad de estos sonidos de notificaciones solo le cambian el nombre para que funcione si usan otro vale, nos vemos. Pagina : https://www.ringtina.com.ar/category/ringtones/notificaciones/ Archivo de audio que yo uso: Rhea.mp3
  14. 11 points
  15. 11 points
    Buenas gente de Phpost, hace algunos días publique un avance del theme Carbon: http://www.phpost.net/foro/topic/31318-avance-theme-carbon-responsive/ Ahora con algunos días mas de avance creo que ya esta listo para las primeras pruebas AVISO esta es una versión beta por lo tanto tiene errores, no se recomienda su uso en paginas web publicas Caracteristicas Responsive Compatible con la version: 1.2.00 en adelante (Se recomienda terminantemente utilizar la ultima version 1.2.7) Uso de la libreria de iconos Font-Awesome en ves de imagenes Portadas en los posts Vista previa de portada al momento de crear el post Diseño fresco ¿Que cosas le faltan? En esta versión faltan diseñar 4 secciones: Administración, Moderación, Cuenta, Buscador....Tuve algunos problemas al diseñar estas secciones, mas que todo porque usan tablas, espero acabarlas en la próxima version (Ninguna de estas secciones es responsive y tiene diseño faltante). Mejorar el diseño (Algunas secciones tiene el diseño muy tosco se mejorara en la próxima versión). Si esta incompleto ¿Por que lo publicas? Bueno el script de Phpost es grande, rediseñarlo todo se vuelve una ardua tarea, libero esta versión para que ustedes me puedan ayudar a encontrar errores y asi corregirlos, ademas al realizar pruebas con el theme podran darme sugerencias (color, posición, tamaño,etc.) para mejorar el diseño en las proximas versiones. Creditos Framework bulma. Libreria de Iconos Font Awesome. @Kmario19 (Mod "Portadas en los Post"- me guié en su theme "KM-Tronos" en algunas partes del diseño). @Vellenger (Me guié en su Mod "Post Destacados" para obtener la vista previa de las portadas). @Nico (Mod "Descripción de Post en la Home"). @Dressli (Creo que ahora tiene el nick "MagicInventor" no estoy seguro ) (Mod "Tags Automaticos tipo !T") Nada mas dejo algunas caps: Link de descarga DESCARGAR Bueno eso es todo por el momento, la nueva versión tardara en ser liberada (dependiendo de los errores que se vayan encontrando). Espero les guste y lo disfruten Hasta la próxima!!!
  16. 10 points
    A continuación les dejo la actualización o nueva versión de PHPost Risus Blog, la cual solucioné varios errores que tenía y le cambie el diseño, ademas agregue nuevas funciones para hacerla más similar a una CMS. ¿Qué trae de nuevo? Junto a la posibilidad de agregar una thumbnail o portada al escribir una entrada, ahora también se puede agregar una descripción, la cual incluiré en el tema Instagram Blog que subiré en breve. El diseño es responsive, utiliza Bootstrap 3 y Fontawesome como proveedor de iconos. Demo: LiDesign Descarga: Mega Cualquier problema me avisan
  17. 10 points
    Es algo sencillo pero que jode mucho al la hora de querer completar el perfil y tenerlo al 100% de manera falsa jaja, por si a alguien le interesa y le sirve en c.cuenta.php busacas: $updates = $tsCore->getIUP($perfilData, 'user_'); y abajo agregas: //FIX ESPACIOS BACIOS O LLENADO FALSO CON SALTOS DE LINEA O ESPACIOS if ($updates == ' '){ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); }else{ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); } // luego buscas un poco mas abajo esto: $updates = $tsCore->getIUP($perfilData, 'p_'); y abajo agregas: //FIX ESPACIOS BACIOS O LLENADO FALSO CON SALTOS DE LINEA O ESPACIOS if ($updates == ' '){ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); }else{ $updates = str_replace(' ', '', $updates); $updates = str_replace("\n"," ",$updates); } // y ahora si ya no abra errores, gracias por reportarlo
  18. 10 points
    Bueno, como no tengo nada que hacer les dejo este mod a pedido de @RodrigoVGarcia y no sé que decir 1. Vamos a inc/class/c.posts.php y buscamos //SUMAMOS A LAS ESTADÍSTICAS db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE w_stats SET stats_comments = stats_comments + 1 WHERE stats_no = \'1\''); db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE p_posts SET post_comments = post_comments + 1 WHERE post_id = \''.(int)$post_id.'\''); db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_comentarios = user_comentarios + 1 WHERE user_id = \''.$tsUser->uid.'\''); y abajo agregamos if($data['post_user'] != $tsUser->uid && $tsCore->settings['c_puntos_com'] != 0) db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_puntos = user_puntos + \'' . $tsCore->settings['c_puntos_com'] . '\' WHERE user_id = \''.(int)$data['post_user'].'\''); 2. Hay que ir a inc/class/c.admin.php y buscar 'sump' => empty($_POST['sump']) ? 0 : 1, y abajo agregar 'puntos_com' => (int)$tsCore->setSecure($_POST['puntos_com']), Buscar , `c_allow_upload` = \'' . $c['upload'] . '\' y justo al lado agregar , `c_puntos_com` = \'' . $c['puntos_com'] . '\' 3. Vamos a themes/tutema/templates/admin_mods/m.admin_configs.tpl y buscamos <dl> <dt><label for="ai_offline">Modo mantenimiento:</label><br /><span>Esto har&aacute; al Sitio inaccesible a los usuarios. Si quiere, tambi&eacute;n puede introducir un breve mensaje (255 caracteres) para mostrar.</span></dt> <dd> <label><input name="offline" type="radio" id="ai_offline" value="1" {if $tsConfig.offline == 1}checked="checked"{/if} class="radio"/> S&iacute;</label> <label><input name="offline" type="radio" id="ai_offline" value="0" {if $tsConfig.offline != 1}checked="checked"{/if} class="radio"/> No</label> <br /> <input type="text" name="offline_message" id="ai_offline" value="{$tsConfig.offline_message}" /> </dd> </dl> y abajo agregamos <dl> <dt><label for="puntos_com">Puntos por comentar</label><br /><span>sep, hace lo que dice ahí ponle 0 para que no funcione. <a href="https://magicinventor.xyz">Programado por MagicInventor</a></span></dt> <dd><input type="text" id="puntos_com" name="puntos_com" maxlength="20" value="{$tsConfig.c_puntos_com}" /> </dd> </dl> 4. Ya se me olvidaba, la hermosa consulta sql ALTER TABLE `w_configuracion` ADD `c_puntos_com` INT NOT NULL DEFAULT '1' AFTER `c_desapprove_post`; Eso es todo, entren a mi blog, muy pronto públicare mods grandes y exclusivos solo en mi blog (https://magicinventor.xyz/)
  19. 9 points
    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]
  20. 9 points
    Hola gente de Phpost, hoy les traigo Social Locker para PHPost administrable, para los que no lo conocen, nos permite bloquear cierto contenido (en este caso con el bbcode [sociallocker]) y pedir como "pago" una acción social. Unas capturas: Instalación: En admin.php buscar: /** NOTICIAS **/ Agregar arriba: /** Social locker **/ } elseif($action == 'social-locker'){ if(!empty($_POST['save'])){ if($tsAdmin->saveSocialLocker()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/social-locker?save=true'); } else { $smarty->assign('tsLocker', $tsAdmin->getLocker()); } En posts.php buscar: $smarty->assign("tsPages",$tsPages); Agregar abajo: // Social Locker $smarty->assign('tsLocker', $tsPosts->getLocker()); En c.admin.php buscar: /* savePConfigs() Agregar arriba: /* getLocker() */ function getLocker() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM s_locker'); $data = db_exec('fetch_assoc', $query); $data['btn'] = unserialize($data['botones_data']); return $data; } /* saveLocker() */ function saveSocialLocker() { global $tsCore; // $s = array( 'titulo' => $tsCore->setSecure($_POST['locker_titulo']), 'body' => $tsCore->setSecure($_POST['locker_body']), 'tema' => empty($_POST['locker_tema']) ? 0 : $_POST['locker_tema'], 'modo' => empty($_POST['locker_modo']) ? 0 : $_POST['locker_modo'], 'cerrar_seg' => (int)$_POST['locker_cerrar_seg'], 'cerrar' => empty($_POST['locker_cerrar']) ? 0 : 1, 'obligar' => empty($_POST['locker_obligar']) ? 0 : 1, 'hide_members' => empty($_POST['locker_hide_members']) ? 0 : 1, 'fb_app_id' => $tsCore->setSecure($_POST['locker_fb_app_id']), 'g_client_id' => $tsCore->setSecure($_POST['locker_g_client_id']), 'contador' => empty($_POST['locker_contador']) ? 0 : 1 ); // $btns = array ( // like 'like' => $_POST['locker_like'], 'like_url' => $_POST['locker_like_url'], 'like_text' => $_POST['locker_like_text'], // FB Share 'fbshare' => $_POST['locker_fbshare'], 'fbshare_url' => $_POST['locker_fbshare_url'], 'fbshare_text' => $_POST['locker_fbshare_text'], // Tweet 'tweet' => $_POST['locker_tweet'], 'tweet_url' => $_POST['locker_tweet_url'], 'tweet_body' => $_POST['locker_tweet_body'], 'tweet_via' => $_POST['locker_tweet_via'], 'tweet_text' => $_POST['locker_tweet_text'], // Follow 'follow' => $_POST['locker_follow'], 'follow_user' => $_POST['locker_follow_user'], 'follow_text' => $_POST['locker_follow_text'], // G+1 'g' => $_POST['locker_g'], 'g_url' => $_POST['locker_g_url'], 'g_text' => $_POST['locker_g_text'], // G Share 'gshare' => $_POST['locker_gshare'], 'gshare_url' => $_POST['locker_gshare_url'], 'gshare_text' => $_POST['locker_gshare_text'], // Linkedin Share 'inshare' => $_POST['locker_inshare'], 'inshare_url' => $_POST['locker_inshare_url'], 'inshare_text' => $_POST['locker_inshare_text'], // Youtube Subscribe 'yt' => $_POST['locker_yt'], 'yt_id' => $_POST['locker_yt_id'], 'yt_text' => $_POST['locker_yt_text'] ); $btns = $tsCore->setSecure(serialize($btns)); // UPDATE if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `s_locker` SET `titulo` = \'' . $s['titulo'] . '\', `body` = \'' . $s['body'] . '\', `tema` = \'' . $s['tema'] . '\', `modo` = \'' . $s['modo'] . '\', `cerrar_seg` = \'' . $s['cerrar_seg'] . '\', `cerrar` = \'' . $s['cerrar'] . '\', `obligar` = \'' . $s['obligar'] . '\', `hide_members` = \'' . $s['hide_members'] . '\', `fb_app_id` = \'' . $s['fb_app_id'] . '\', `g_client_id` = \'' . $s['g_client_id'] . '\', `contador` = \'' . $s['contador'] . '\', `botones_data` = \'' . $btns . '\' WHERE `id` = \'1\'')) return true; else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); } En c.posts.php buscar: /* getSideData($array) */ Agregar arriba: /* getLocker() */ function getLocker() { global $tsCore; $query = db_exec(array(__FILE__, __LINE__), "query", "SELECT * FROM s_locker"); $data = db_exec("fetch_assoc", $query); $data["btn"] = unserialize($data["botones_data"]); // Datos del post $dataPost = $this->getPost(); $post_id = intval($_GET["post_id"]); // Titulo del post $titulo = $dataPost["post_title"]; // Categoria $categoria = $dataPost["categoria"]; // URL del post $urlPost = $tsCore->settings["url"] . "/posts/" . $categoria["c_seo"] . "/" . $post_id . "/" . $tsCore->setSEO($titulo) . ".html"; // Fix saltos de linea $data["body"] = preg_replace("[\n|\r|\n\r]", " ", $data["body"]); // Remplazamos BBCodes $bbcodes = array("[post_title]", "[post_url]"); $bbreturn = array($titulo, $urlPost); $count = count($data); for($i = 0; $i < $count; $i++) { $data = str_replace($bbcodes, $bbreturn, $data); $data["btn"] = str_replace($bbcodes, $bbreturn, $data["btn"]); } return $data; } En c.core.php busca: // 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' y agrega , 'sociallocker' quedando de esta manera: // 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', 'sociallocker')); En bbcode.inc.php busca: array('tag' => 'success', 'replace' => '<div class="bbcmsg success">{param}</div>') Y remplaza por: array('tag' => 'success', 'replace' => '<div class="bbcmsg success">{param}</div>'), array('tag' => 'sociallocker', 'replace' => '<div id="socialloker_by_Basdower">{param}</div>') (Agregamos una coma y el nuevo bbcode) En t.posts.tpl busca: {include file='sections/main_header.tpl'} Agrega abajo: <link href="{$tsConfig.tema.t_url}/css/pandalocker.css" rel="stylesheet" type="text/css" /> <script src="{$tsConfig.js}/pandalocker.js" type="text/javascript"></script> {if $tsLocker.hide_members == 1 && $tsUser->is_member == 1}{else} <script>{literal}$(function(){if($("#socialloker_by_Basdower").length) {$('#socialloker_by_Basdower').sociallocker({ text:{header: '{/literal}{$tsLocker.titulo}{literal}',message: '{/literal}{$tsLocker.body}{literal}'},{/literal}{if $tsLocker.obligar == 1}demo: true,{/if}{literal}theme: '{/literal}{if $tsLocker.tema == 0}starter{elseif $tsLocker.tema == 1}secrets{elseif $tsLocker.tema == 2}flat{elseif $tsLocker.tema == 3}dandyish{elseif $tsLocker.tema == 4}glass{/if}{literal}',overlap:{mode: '{/literal}{if $tsLocker.modo == 0}full{elseif $tsLocker.modo == 1}transparence{elseif $tsLocker.modo == 2}blurring{/if}{literal}'},locker:{{/literal}{if $tsLocker.cerrar_seg > 0}{literal}timer: '{/literal}{$tsLocker.cerrar_seg}{literal}',{/literal}{/if}{literal}close: {/literal}{if $tsLocker.cerrar == 1}true{else}false{/if}{literal}},{/literal}{if $tsLocker.btn.like == 1 || $tsLocker.btn.fbshare == 1}{literal}facebook:{{/literal}{if $tsLocker.btn.like == 1}{literal}like:{url: '{/literal}{$tsLocker.btn.like_url}{literal}',title: '{/literal}{$tsLocker.btn.like_text}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.fbshare == 1}{literal}share:{url: '{/literal}{$tsLocker.btn.fbshare_url}{literal}',title: '{/literal}{$tsLocker.btn.fbshare_text}{literal}'},{/literal}{/if}{literal}appId: '{/literal}{$tsLocker.fb_app_id}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.tweet == 1 || $tsLocker.btn.follow == 1}{literal}twitter:{{/literal}{if $tsLocker.btn.tweet == 1}{literal}tweet:{url: '{/literal}{$tsLocker.btn.tweet_url}{literal}',text: '{/literal}{$tsLocker.btn.tweet_body}{literal}',via: '{/literal}{$tsLocker.btn.tweet_via}{literal}',title: '{/literal}{$tsLocker.btn.tweet_text}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.follow == 1}{literal}follow:{url: '{/literal}{$tsLocker.btn.follow_user}{literal}',title: '{/literal}{$tsLocker.btn.follow_text}{literal}'}{/literal}{/if}{literal}},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.g == 1 || $tsLocker.btn.gshare == 1}{literal}google:{{/literal}{if $tsLocker.btn.g == 1}{literal}plus:{url: '{/literal}{$tsLocker.btn.g_url}{literal}',title: '{/literal}{$tsLocker.btn.g_text}{literal}'},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.gshare == 1}{literal}share:{url: '{/literal}{$tsLocker.btn.gshare_url}{literal}',title: '{/literal}{$tsLocker.btn.gshare_text}{literal}'}{/literal}{/if}{literal}},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.inshare == 1}{literal}linkedin:{share:{url: '{/literal}{$tsLocker.btn.inshare_url}{literal}',title: '{/literal}{$tsLocker.btn.inshare_text}{literal}'}},{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.yt == 1}{literal}youtube:{subscribe:{channelId: '{/literal}{$tsLocker.btn.yt_id}{literal}',clientId: '{/literal}{$tsLocker.g_client_id}{literal}',title: '{/literal}{$tsLocker.btn.yt_text}{literal}'}},{/literal}{/if}{literal}buttons:{order: [{/literal}{if $tsLocker.btn.like == 1}{literal}"facebook-like",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.fbshare == 1}{literal}"facebook-share",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.tweet == 1}{literal}"twitter-tweet",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.follow == 1}{literal}"twitter-follow",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.g == 1}{literal}"google-plus",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.gshare == 1}{literal}"google-share",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.inshare == 1}{literal}"linkedin-share",{/literal}{/if}{literal}{/literal}{if $tsLocker.btn.yt == 1}{literal}"youtube-subscribe"{/literal}{/if}{literal}],counters: {/literal}{if $tsLocker.contador == 1}true{else}false{/if}{literal},lazy: true} }); }});{/literal}</script> {/if} En m.admin_sidemenu.tpl busca: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/ads">Publicidad</a></span></li> Y agrega abajo: <li id="a_social"><span class="cat-title"><a href="{$tsConfig.url}/admin/social-locker">Social Locker</a></span></li> En t.admin.tpl busca: {/if} Agrega arriba: {elseif $tsAction == 'social-locker'} {include file='admin_mods/m.admin_social_locker.tpl'} En admin.css busca: li#a_badwords {background-image: url(../images/icons/stop.png);} Y agrega abajo: li#a_social {background-image: url(../images/icons/social-locker.png);background-position: 0px -5px;} Realiza estas consultas SQL: CREATE TABLE IF NOT EXISTS `s_locker` ( `id` INT NOT NULL AUTO_INCREMENT , `titulo` VARCHAR(150) NOT NULL , `body` TEXT NOT NULL , `tema` INT NOT NULL , `modo` INT NOT NULL , `cerrar_seg` INT NOT NULL , `cerrar` INT NOT NULL , `obligar` INT NOT NULL , `hide_members` INT NOT NULL , `fb_app_id` VARCHAR(50) NOT NULL , `g_client_id` VARCHAR(100) NOT NULL , `contador` INT NOT NULL , `botones_data` TEXT NOT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; INSERT INTO `s_locker`(`titulo`, `body`, `tema`, `modo`, `cerrar_seg`, `cerrar`, `obligar`, `hide_members`, `fb_app_id`, `g_client_id`, `contador`, `botones_data`) VALUES ('¡Este contenido está bloqueado!', 'Utilice uno de los botones de abajo para desbloquear el contenido.', 0, 0, 0, 0, 0, 0, '', '', 1, 'a:26:{s:4:"like";s:1:"0";s:8:"like_url";s:0:"";s:9:"like_text";s:4:"Like";s:7:"fbshare";s:1:"0";s:11:"fbshare_url";s:0:"";s:12:"fbshare_text";s:5:"share";s:5:"tweet";s:1:"0";s:9:"tweet_url";s:0:"";s:10:"tweet_body";s:0:"";s:9:"tweet_via";s:0:"";s:10:"tweet_text";s:5:"tweet";s:6:"follow";s:1:"0";s:11:"follow_user";s:0:"";s:11:"follow_text";s:6:"follow";s:1:"g";s:1:"0";s:5:"g_url";s:0:"";s:6:"g_text";s:5:"+1 us";s:6:"gshare";s:1:"0";s:10:"gshare_url";s:0:"";s:11:"gshare_text";s:5:"share";s:7:"inshare";s:1:"0";s:11:"inshare_url";s:0:"";s:12:"inshare_text";s:5:"share";s:2:"yt";s:1:"0";s:5:"yt_id";s:0:"";s:7:"yt_text";s:9:"subscribe";}') Y finalmente sube estos archivos a sus respectivas carpetas. DEMO (No prometo que dure mucho xD) Notas: Utilizar el bbcode [sociallocker][/sociallocker] para bloquear el contenido. Debido a los límites de la API de Twitter y LinkedIn es posible desbloquear el contenido cerrando la ventana de dialogo sin compartir. Para el boton share de fb es recomendable utilizar Open Graph. Para los botones de Compartir con FB y Suscribirse a YT es necesario crear una api: Facebook App ID, Google Client ID si no los piensan usar, no es necesario. Bueno eso es todo, nos vemos en otro aporte.
  21. 8 points
    ya lo desarrolle, estoy terminando las notificaciones para el muro de las comunides, pero me distraje creando otra funcion jeje
  22. 8 points
    Hola! Hace unos dias deje avances de la modificación a Risus que hice y hoy se las vengo a dejar para que la prueben y me digan que tal va. Bueno, PHPost Risusu Blog es la versión de Risus pero en CMS, es decir, un sistema para gestionar contenido, estilo Wordpress o Blogger, con el cual podrán tener sus propios blogs usando uno de los script más seguros que hay. Cuenta con un diseño minimalista, usando Bootstrap y gracias a la plantilla AdminLTE del usuario Dark que publicó este diseño adaptado a PHPost pude hacer este proyecto de forma más rapida ya que me ahorro bastante trabajo Trae dos plantillas, la default que tiene solo una columna en la home, y la Cuatro que es la que dejaré en la captura más abajo con dos columnas. Cuenta con el instalador que trae por defecto PHPost, para poder instalar los complementos que le agrege (Portadas en post y perfiles), asique para instalarlo lo hacen como instalar Risus, desde: http:// TUWEB.COM /install/index.php Captura del script Descarga: Mediafire Cualquier problema lo dejan en los comentarios o por mensaje privado. Saludos!
  23. 8 points
    Hola amigos, hace tiempo que ya no he publicado nada y es por temas de trabajos y proyectos en los que estoy, pero hoy les vengo a dejar un avance de mi modificación al script original de PHPost Risus, se trata de PHPost Risus Blog (No soy ingenioso con los nombres ), es básicamente una CMS con la cual podrán montar sus propios Blogs personales, hecha a base de Risus y con un diseño responsive utilizando Bootstrap. Esto lo hice sobre la plantilla AdminLTE que está en el foro, la rediseñe a mi gusto y le dejo los créditos al que adapto ese diseño a PHPost. Este proyecto lo tengo al 80%, aun me faltan terminar algunas partes pero ya está casi terminada. Estoy trabajando a la par con el proyecto PRMD de MrDioamDev para tener ambos proyectos listos lo más pronto posible, pero como llevo trabajando con esta modificación más tiempo, es seguro que saldrá antes(Blog). A continuación les dejo unas capturas de lo que vendría siendo PHPost Risus Blog. Aun me falta terminar la administración y algunos detalles del sitio en general. Pueden dejar sus sugerencias de algo que falte Saludos!
  24. 8 points
    Buenas gente de Phpost . <!-- CRAP DE INTRODUCCION --> Hace mas de un año ya que tuve que dejar mi actividad en el foro debido a los estudios en la universidad, vida social, etc. Para los que no me recuerdan, no los culpo ya que nunca fui muy activo y también me cambie el nick (La verdad el otro era muy tonto ) Ahora ya con un poco mas de tiempo libre estoy desarrollando un theme como manera de agradecer a esta increíble comunidad, gracias a ustedes entre en el mundo del diseño web y encontré un hobbie en crear plantillas. La verdad me da un poco de pena ver la inactividad en la que ahora se encuentra Phpost. Solo espero que este aporte no llegue muy tarde y que aun algunos lo puedan usar.... <!--FIN DE CRAP --> Bueno basta de bla bla bla vamos al tema. El theme Carbon (Nombre poco creativo sujeto a cambio) tendrá las siguientes características: 100% Responsive (Estoy utilizando el framework Bulma para lograr eso) Diseño fresco utilizando css3 (Basta de utilizar imágenes para llenar Backgrounds) Reemplazo de Iconos por libreria de iconos Font Awesome Portadas para los post (Sujeto a cambio en caso de no gustar el diseño de los últimos posts) Seccion "Fotos" retirada (Temporal o permanentemente) Sin mas dejo algunas imágenes del theme Home (No identificado) Home (Identificado) Post Contenido Perfil Bueno eso seria todo por el momento, como verán solo soy un amateur en diseño y debido a que deje el script un buen tiempo me esta costando encontrar las plantillas de cada seccion para editarlas . El theme espero liberarlo para el 15 de diciembre o hasta navidad a mas tardar, ya que pueden pasar cosas que no estoy tomando en cuenta en un futuro. Eso seria todo...Nos vemos gente de Phpost.
  25. 7 points
  26. 7 points
    Ya esta prácticamente terminado , esas son las notificaciones y como se ve cuando se abre el shout. Los shouts solo se ven en las comunidades, ya saben por eso de la privacidad jaja, pero aun no me decido si crear otro filtro en el Mi para todos esos shouts o crear ese filtro para cada comunidad, estoy muy animado y creativo jaja, entre mas complicado mas vale
  27. 7 points
    Este pequeño bug lo tiene el script por defecto y se que es una boludes pero a pesar de que es muy divertido publicar shout vacios en los sitios que no lo tienen aplicado y usan el modulo de shouts en la home pues ya me canso jaja asi que les dejo el fix hay otro que tambien sirve para limpiar las tabulaciones o saltos de linea excesivos que se pueden hacer en las publicaciones pero como depende de su como tengan modificado su muro y bueno asi que solo dejo este para que no les publiquen shouts vacios va. se van a c.muro.php y buscan: $data = $tsCore->setSecure($_POST['data'], true); $data = $tsCore->setSecure($_POST['data'], true); y abajo agregan esto: $data = str_replace("\n"," ",$_POST['data']); Capturas de que esto pasa en la default y en otras plantillas sin actualizar, dejo una demo del error y una captura en caso de que me baneen la cuetna ya que lo hago en un sitio con el error. compartinga.com
  28. 7 points
    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; }
  29. 7 points
    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.
  30. 7 points
    buenas tardes caballeros, hoy no tenia nada que hacer y decidi hacer esto que tenia tiempo pensandolo, que en caso de error al crear el post se queden los valores guardados y listos, pense hacerlo con el borrador que ya trae pero se me hizo mas fácil de este modo. primero, vamos a themes/default/js/funciones.js al final del archivo agregamos esto //#####################MANEJO DE COOKIES#########################// function crearcookie(name, value, days){ //crearcookie('nombre de la cookie', 'valor para la cookie', tiempo de vida) //tiempo de vida, 1 es = a 1 dia if(days){ var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); var expires = '; expires=' + date.toGMTString(); } else var expires = ''; document.cookie = name + '=' + value + expires + '; path=/;'; } function leercookie(name){ //crearcookie('genkidama','dame tus fuerzas',1) //leercookie('genkidama') //ejemplo===== alert(leercookie(genkidama)); muestra : 'dame tus fuerzas' var nameEQ = name + '='; var ca = document.cookie.split(';'); for(var i=0, s=ca.length; i<s; ++i){ var c = ca[i]; while(c.charAt(0) == ' ') c = c.substring(1, c.length); if(c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } function borrarcookie(name){ //borrarcookie('genkidama') quitamos su dia de vida crearcookie(name, "", -1); } //#####################FIN DE COOKIES#############################// ahora en themes/default/templates/modules/m.agregar_javascript.tpl abajo de // GENERADOR DE TAGS $('input[name=tags]').click(function(){ if(tags == true) return true; var q = $('input[name=titulo]').val(); $.ajax({ type: 'post', url: global_data.url + '/posts-genbus.php?do=generador', data: 'q=' + q, success: function(h) { $('input[name=tags]').val(h); tags = true; } }); }); agregamos /*Funcion de Capturar y Almacenar datos */ $(document).ready(function(){ $('input[name=preview]').click(function(){ /*Captura de datos escrito en los inputs*/ var title = $('input[name=titulo]').val(); var bodys = $('#markItUp').val(); var tags = $('input[name=tags]').val(); /*Guardando los datos en el LocalStorage*/ localStorage.setItem("titulo", title); localStorage.setItem("cuerpo", bodys); localStorage.setItem("tags", tags); }); }); /*si hay una cookie borrador, cargamos los datos guardados*/ $(document).ready(function(){ var ok = leercookie("borrador"); var ti = localStorage.getItem("titulo"); var bo = localStorage.getItem("cuerpo"); var ta = localStorage.getItem("tags"); if (ok) { $('input[name=titulo]').val(ti) $('#markItUp').val(bo) $('input[name=tags]').val(ta) } else{ /*borramos el borrador pasado*/ localStorage.clear() } }); en el mismo archivo abajo de $('input[name=preview]').bind('click',function(){ agregamos crearcookie("borrador",1,1); por ultimo en inc/php/agregar.php abajo de $tsCat = db_exec('fetch_assoc', $query); agregamos //quitamos la cookie para eliminar los archivos en localstorage setcookie('borrador', '', time() - (86400 * 30), "/"); en el mismo archivo abajo de $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_post'] == 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")); agregamos //quitamos la cookie para eliminar los archivos en localstorage setcookie('borrador', '', time() - (86400 * 30), "/"); y bueno es todo con esto tenemos un respaldo de 1 dia por si pasa algo, dejo caps retire los validadores de tags para simular un error /// //el resultado antes de este mod era todos los campos en blanco y ahora se queda tal como lo dejaste es todo mientras exista un error en el post, se guardara por 1 dia
  31. 6 points
    Muy buenas a todos Publico este topic para mostrar a través de vídeos la versión Alfa 2.0 de Risus, ya que son muchos los que lo habéis pedido. En estos vídeos, algunos nuevos y otros viejos, se pueden ver las principales novedades de esta versión, aunque hay otras como las mencionadas en otro topic: 31157 La mayoría de los cambios son a nivel "back-end", por lo que muchos podrían pensar que no hay prácticamente cambios, pues el diseño no presenta grandes novedades; pero como indico, los cambios están en el código y las funciones que presenta consigo. Aquel que tenga alguna duda sobre alguna función en concreto, puede indicarlo aquí y se le intentará responder con una explicación más extendida. Sin embargo, ya no se podrán comprar las nuevas funciones por separado, ya que se ha reducido el precio un 52% (más de la mitad) y sale casi más barato comprarlas todas que individualmente. Esto supone un ahorro de 39€. Precio anterior: 75€ Precio actual: 36€
  32. 6 points
    Hola,os este theme V5 actualizado a la versión 1.2.6.000 y aparte le he le he corregido algunas cosas,comunidades,shouts,fix en los juegos,rss web,rss usuario.... Esta versión es para intalar como el script de PHPOST,desde cero,despues cuando tenga otro rato, dejo aquí el theme,para que no tengan problemas el que ya tenga en su web un theme. Si la tienes instalada y no has instalado ningún mod,puedes subir todos los archivos menos config.inc , cache , files , install ,si tienes ya instalado algún mod ó algo,despues voy a dejar el theme y los archivos editado solo. Cualquier cosa avisan,saludos Instalación: www.tuweb.com www.tuweb.com/install/index.php Imágenes Rss web Rss usuario Actualizado 21/11/2016 Megahttps://mega.nz/#!9RdBDJxB!5l0kvAvkK9tFsEBFt6ttNAzlqKjDRBOSsnwP6Yqdfes Mediafirehttp://www.mediafire.com/file/mgxx2sancwrl12j/Theme+V5-v2a.rar Pass Tronlar
  33. 6 points
    Que tal les dejo este modulo que muestra una lista de todos los usuarios registrados por país en su sitio espero les gusto, ya esta @unfernacho Instrucciones de Instalación: Nota: El diseño esta creado para la V5 1) Se van al archivo c.posts.php ubicado en la ruta inc/class y hasta abajo antes del ultimo } agregan esto: //TOTAL USUARIOS REGISTRADOS POR PAIS function getTotalUsuariosPais() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(u.user_pais) AS total, u.user_pais FROM u_perfil AS u GROUP BY u.user_pais ORDER BY total DESC LIMIT 15'); $array = result_array($query); // PAISES include(TS_EXTRA."datos.php"); $i = 0; foreach($array as $dato) { $data['data'][$i] = $dato; $data['data'][$i]['pais'] = $tsPaises[$dato['user_pais']]; $i++; } return $data; } 2) Se van al archivo posts.php y buscan: $smarty->assign("tsAfiliados",$tsAfiliado->getAfiliados()); y abajo de eso colocan esto: //TOTAL USUARIOS REGISTRADOS POR PAIS $smarty->assign('tsTotalPaises',$tsPosts->getTotalUsuariosPais()); 3) En el archivo estilo.css agrega esto hasta el ultimo: .com_list_element:nth-child(2n+1){border-top:#FFF 1px solid;background:#FFF}.com_list_element{padding:5px 10px;border-top:#e0e0e0 1px solid;position:relative;z-index:1;background:#f5f5f5}.com_list_element .cle_number{float:right;margin:0;font-weight:700;text-shadow:0 1px 0 #FFF;color:#69900f} 4) Se van al archivo t.home.tpl y agregan el modulo donde quieran de esta forma: {include file='modules/m.home_registrados_pais.tpl'} 5) Suben el modulo que les dejo para descargar va en la carpeta modules y por si se llega a caer este es su contenido: <div class="boxposts separa"> <div class="titular"> <h2>Registrados</h2> </div> <div class="com_new_box"> <div class="com_box_body"> {if $tsTotalPaises.data} {foreach from=$tsTotalPaises.data item=p} <div class="com_list_element"> <img src="{$tsConfig.tema.t_url}/images/flags/{$p.user_pais|lower}.png" style="margin: 3px 10px 0 0;float: left;"/> <a href="{$tsConfig.url}/usuarios/?pais={$p.user_pais}">{$p.pais|limit:30}</a> <span class="cle_number">{$p.total}</span> </div> {/foreach} {else} <div class="nada-gris">No hay usuarios registrados</div> {/if} </div> </div> </div> m.home_registrados_pais.tpl
  34. 6 points
    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
  35. 6 points
    no lo conozco pero si tienes un sitio en linea pasalo y lo adapto
  36. 6 points
    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
  37. 6 points
    Bueno acá les dejó uno de los themes del cual les comente...Creo? Se llama KROTOS parecido al nombre que le dio Kmario a su theme Tronos pero nada que ver, se llama de esa forma porque es muy croto jajaja solo por eso! si tienen ideas para ponerle de nombre a este theme avisen jaja XD Todavía les debo: Next v3 -> Si funciona lo instale 3 o 4 veces y si funciona Symplex SynMobile -> Iniciado el 14/12/2016 Syntaxis [Reservado] Extreme -> pero es la version 1.1 Qué contiene el pack Krotos? Tiene una carpeta llamada controles, una vez descomprimida van a la url y escriben http://www.tuweb.com/controles/index.php para instalar mod´s agregado no contiene las comunidades... Contiene la carpeta 'inc'? Si, porque he modificado casi todas y no me acuerdo cual estan y no modificadas... No tiene Smarty Qué más tiene? Dentro de la carpeta themes encontrarán * Krotos_installer.txt * Ktrotos_comu-completas.txt * Comunidades.sql * [DIR] KrotosComunidades Esto es en el caso que no quieran reemplazar la carpeta inc (class,ext,php) Krotos_installer.txt Ktrotos_comu-completas.txt --> Esto es para hacerla realmente completas + administracion + moderacion + denuncias [DIR] KrotosComunidades --> Esto es para agregar a la carpeta inc con todos los fix aplicados Comunidades.sql Hablando de las comunidades, ¿Estan adaptadas? Claro que sí, yo nunca pondría algo sin adaptarlo antes... ¡ El perfil ! No tiene tanta modificación como la página en si... Nota: No se asusten si ven en fondo blanco, quiere decir que no tiene fondo o la direccion que tiene es incorrecta, pueden cambiarle el color al menú obviamente escribiendo el color en inglés Descarga desde 4Shared: - Krotos [28-12-2016] - Descarga desde Mega: - Krotos [28-12-2016] - Caps Comunidades https://k60.kn3.net/4/C/7/D/1/2/EB9.png Home https://k60.kn3.net/8/B/C/4/8/5/17A.png https://k60.kn3.net/7/3/C/0/8/5/741.png https://k61.kn3.net/7/7/9/5/0/C/BA6.png https://k60.kn3.net/C/3/C/6/B/2/0FF.png https://k60.kn3.net/C/7/A/7/9/9/D6F.png https://k60.kn3.net/C/3/1/7/5/F/106.png https://k60.kn3.net/4/4/A/D/6/4/10F.png Administración [controles] Perfil https://k60.kn3.net/4/3/A/E/3/4/855.png Espero que les guste el theme...
  38. 6 points
    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
  39. 6 points
    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
  40. 6 points
    Hola a todos, bueno hoy les traigo el Mod que publiqué hace mucho tiempo ya adaptado a la versión 1.2 y resubido, ya que parece que borré los archivos en alguna parte del tiempo. Esta nueva versión usa un reproductor HTML5 en vez de uno FLASH (swf). Aquí pueden leer un poco mas del reproductor HTML5. Aviso: Pronto vendrá la versión 2.5 la cual traerá un nuevo reproductor, con nuevo estilo, y soporte para la caratula y el titulos (aunque los pueden agregar ustedes mismos). Instalación: Hacemos esta Consulta: ALTER TABLE w_configuracion ADD c_month_mp3 VARCHAR( 5000 ) NOT NULL AFTER offline_message Luego esta: ALTER TABLE w_configuracion ADD c_month_name VARCHAR( 5000 ) NOT NULL AFTER offline_message Y luego esta ultima: ALTER TABLE w_configuracion ADD c_month_img VARCHAR( 5000 ) NOT NULL AFTER offline_message luego abren su c.core.php y buscan: $this->settings['js'] = $this->settings['tema']['t_url'].'/js'; Debajo agregan $this->settings['month_mp3'] = $this->settings['c_month_mp3']; $this->settings['month_img'] = $this->settings['c_month_img']; $this->settings['month_name'] = $this->settings['c_month_name']; luego abren su c.admin.php y buscan: 'offline_message' => $tsCore->setSecure($tsCore->parseBadWords($_POST['offline_message'])), y agregan debajo 'month_mp3' => $tsCore->setSecure($_POST['month_mp3']), 'month_img' => $tsCore->setSecure($_POST['month_img']), 'month_name' => $tsCore->setSecure($_POST['month_name']), Un poco más abajo buscan: `offline_message` = \'' . $c['offline_message'] . '\' Al lado agregan: , `c_month_mp3` = \'' .$c['month_mp3'] . '\', `c_month_img` = \'' .$c['month_img'] . '\', `c_month_name` = \'' .$c['month_name'] . '\' Abrimos m.admin_configs.tpl y buscan: <dl> <dt><label for="ai_url">Direcci&oacute;n del sitio:</label></dt> <dd><input type="text" id="ai_url" name="url" maxlength="32" value="{$tsConfig.url}" /></dd> </dl> Debajo Agregan: <dl> <dt><label for="ai_month_mp3">Link MP3:</label><br /><span>Musica del mes<br/><a>Escuchar</a></span></dt> <dd><input type="text" name="month_mp3" id="ai_month_mp3" value="{$tsConfig.month_mp3}" /></dd> </dl> <dl> <dt><label for="ai_month_name">Nombre de la cancion <font color="red">(no es necesario)</font>:</label><br /><span>Musica del mes</span></dt> <dd><input type="text" name="month_name" id="ai_month_name" value="{$tsConfig.month_name}" /></dd> </dl> <dl> <dt><label for="ai_month_img">Caratula <font color="red">(no es necesario)</font>:</label><br /><span>Musica del mes<br/>{if $tsConfig.month_img != ''}<img src="{$tsConfig.month_img}" width="48px" height="48px" title="Caratula (preview)" alt="Previsualizacion de la caratula" />{/if}</span></dt> <dd><input type="text" name="month_img" id="ai_month_img" value="{$tsConfig.month_img}" /></dd> </dl> Luego abren t.home.tpl y después de: {include file='modules/m.home_stats.tpl'} Agregan: {include file='modules/m.home_monthlymp3.tpl'} Ahora suben los siguientes archivos: m.home_monthlymp3.tpl a /templates/modules/ Demo y descarga: Click aquí Eso sería todo por la instalación. Notas: En el caso de que no pongan ninguna carátula, osea lo dejen en blanco, no se mostrará la carátula al lado ni en el home. En el caso de que no haya ningun MP3 en la administración, no se mostrara el MOD en el home. Capturas: (a los visitantes no se les muestra nada abajo del reproductor) Miembro [sin titulo de cancion]: Administrador [sin titulo de cancion]: Administración: Todos los usuarios [con titulo de cancion]: Espero que les guste!
  41. 6 points
    Hola! Hoy les dejo este diseño estilo Instagram Blog para Blogi. Deben ejecutar las siguientes consultas en su base de datos: Si ya tienen las portadas de kmario instaladas solo ejecutar estas: ALTER TABLE p_posts ADD post_descripcion VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_descripcion VARCHAR( 180 ) NOT NULL Si no tienen instaladas las portadas deben ejecutar las consultas anterior y también estas: ALTER TABLE p_posts ADD post_portada VARCHAR( 180 ) NOT NULL; ALTER TABLE p_borradores ADD b_portada VARCHAR( 180 ) NOT NULL Descarga: MEGA Cualquier problema o duda pueden hablarme por MP, saludos!
  42. 5 points
    Bueno acá otra vez con NEXT, creo que le tengo que cambiar de nombre y llamarlo MI MALDICIÓN por que me dio cada problema, que creo que ya no los tiene...y como ya había comentado lo instale 3 o 4 veces y funciono bien! Qué contiene next? Tiene una carpeta llamada controles, una vez descomprimida van a la url y escriben http://www.tuweb.com/controles/index.php para instalar mod´s agregados... También tiene un archivo que se llama install.php es para ir a la url y escriben http://www.tuweb.com/install.php para instalar el sitemap ¿Que trae? Bueno los mods que ya habia comentado que son: Comunidades Chat Sección vip Subir archivos [upload] Actualización de estado en Home Último usuario registrado Juegos Posts favoritos en perfil Banner en el Perfil +Redes sociales en perfil Compartir shout Sitemap Reportar bug Videos Editor de Wysiwyg Administración de logo + header + titulo Administración de fotos en home Administración de comunidades + Denuncias + Moderación Activar y desactivar secciones Control de Mp En Vivo En vivo: tengo un pequeño problema con este mod porque no cuenta bien las comunidades y/o temas y se visualizan espacios vacios.. Espero de no olvidarme de algunos ¿Se ha quitado algo que tenia? De hecho se quito el Paginador de posts en home y Estilo de menciones porque las modificaciones que había que hacer daba problemas o ni siquiera funcionaba ¿Va a ver más versiones? La verdad no tengo idea si voy a hacer más versiones, tal vez si...pero no sé ¿Solamente tiene ese color celeste? No, no es el único tiene 6 Default[Celeste] Naranja VerdeAmarillento Rojo Oscuro Negro Verde Oscuro Sin caps porque ya la he pubilcado con el tiempo, bueno eso es todo espero de no olvidarme de nada... Si no funciona me corto las venas Descarga Actualizada [Theme] Next v3.Act_15-01-2017 [4Sahred] Descarga Actualizada [Theme] Next v3.Act_15-01-2017 [MediaFire] Descarga Actualizada [Theme] Next v3.Act_15-01-2017 [Mega]
  43. 5 points
    Bueno esto ya lo tengo implementado en la última versión de risus2_v_0_1_2_alpha, ya que tiene agregado plugin smarty: "NOBBCODE", elimina el bbcode de una string. con lo que podemos lograr esto: Ver el contenido del post sin bbcodes ↓ ↓ ↓ Para lograr eso debemos buscar el archivo c.posts.php que esta alojado en la carpeta engine\inc\class\ una vez abierto el archivo procederemos a buscar [linea: 318] /*********/ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_imgport, y a lado agregaremos p.post_body, con lo les quedará asi /*********/ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_user, p.post_category, p.post_title, p.post_imgport, p.post_body, Luego va al theme Default y buscan en templates\modules\home\m.home_postshowcase.tpl y buscamos Linea 125 <div class="desc"><a><i class="fa fa-clock-o" aria-hidden="true"></i> {$p.post_date|hace}</a></div> y debajo pegamos <div class="p-2 small">{$p.post_body|nobbcode|truncate:80}</div> luego más abajo buscamos Linea 166 <div class="desc"><a><i class="p-1 fa fa-clock-o" aria-hidden="true"></i> {$p.post_date|hace}</a></div> y debajo pegamos <div class="p-2 small">{$p.post_body|nobbcode|truncate:80}</div>
  44. 5 points
    Bienvenido a tu nuevo blog, basado en phpost risus holi :3 les presento un proyecto en el cual no iba a trabajar pero si regalar, le trabaje como 2 semanas si no me equivoco @Alucard bueno y por falta de tiempo y dinero decidi pausarlo, dependiendo de sus comentarios vemos si continuamos o la dejamos asi hahah la idea es un blog sensillo, donde solo puedan editar y crear administradores (autores) basado en plantillas mdb con la idea de crear un entorno al usuario mas dinamica sin que el user final tenga que tocar codigo (cosa imposible ) usando smarty 3, mdb y jquery 3, tratando de crear un sitio responsibe agradable, tratando de que el diseño del usuario se pueda usar en themes creados para el blog. bueno mejor al punto :B home posts editor el editor sube thumbnails borradores buscador cuenta administracion diseño hack de publicidad nota: de 1000 visitas solo a 500 considera (50%) luego un random entre 0 y 1 elige dentro de esos 500 a los que les caiga 0, despues solo acepta que venga de los dominios apuntados, ejemplo publicas algo lo compartes en facebook y en los dominios apuntados tienes a facebook entonces esa persona es aceptada para obligarla a darle click a la publicidad proteccion de contenido esto ultimo lo dejare activo para que puedan ver como funciona demo blog no es la version mas actual porque la que tengo aun no esta estable por lo mismo que ya no le movi y bueno gracias por pasar y espero comentarios
  45. 5 points
    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
  46. 5 points
    Bueno el mod hace lo que dice en el título, no hay mucho más misterío, fue creado a pedido @KillerJohn se supone que me iba a pagar pero bueno, como va la economía hoy en día se lo voy a regalar. Ir a c.muro.php y buscar return $priv; } Arriba de eso agregar if(!$tsUser->permisos['mstatus']) { $priv['mf']['v'] = false; $priv['mf']['m'] = 'Tu rango no admite crear estados.'; } --- hay que hacer esto 2 veces porque esta la función saveRango & newRango ir a c.admin.php y buscar 'gopfp' => $_POST['global-pointsforposts'], y abajo agregar 'mstatus' => $_POST['make-status'], ---- ir a m.admin_rangos.tpl y buscar <input type="checkbox" id="godp" name="global-darpuntos" {if $tsRango.permisos.godp}checked{/if} /><label style="font-weight:bold;" for="godp">Puntuar Posts</label><label for="godp"> Podrán puntuar posts.</label> <br /><hr> y abajo agregar <input type="checkbox" id="mstatus" name="make-status" {if $tsRango.permisos.mstatus}checked{/if} /><label style="font-weight:bold;" for="mstatus">Estados</label><label for="mstatus"> Publicar en perfil ajeno y propio.</label> <br /><hr> Eso es todo. --------------------- Por cierto, ForceADS esta a la venta, utiliza la misma técnica que usa @Vellenger para forzar a los usuarios a que hagan click a la publicidad. La gran difencia es que la mia fue diseñada para que funcione con cualquier script, a parte eso no requiere de dependencias (como jquery), también esta programada con los estandares ES6, y ademas de eso un par de trucos para adsense no se cuenta. https://magicinventor.xyz/forceads
  47. 5 points
    Hola que tal gente., estaba con ganas de compartir algo y se me dio por compartir este complemento que hice hace mucho(ni me acuerdo cuando xD) El complemento consiste en mostrar usuarios al azar y darle la opcion al usuario de visitar su perfil... espero que les guste :3 Captura: Ahora pasamos a la instalacion... En c.posts.php vamos hasta el final y arriba del ultimo } agregamos //USUARIOS RAMDOM function Ramdom(){ global $tsCore, $tsUser; $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT DISTINCT u.user_name, u.user_id, f.f_id FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id LEFT JOIN u_follows AS f ON u.user_id = f.f_id WHERE u.user_id != \''.$tsUser->uid.'\' ORDER BY RAND() LIMIT 3'); $data = result_array($query); return $data; } ahora vamos al posts.php y buscamos $smarty->assign("tsStats",$tsTops->getStats()); y agregamos abajo // Usuarios Ramdom $smarty->assign("tsRamdom",$tsPosts->Ramdom()); ahora vamos a estilos.css y al final agregamos .recodiv{width: 100%;position: relative;height: auto;display: -webkit-inline-box;margin-top: 16px;} .recoportada{height: 85px;border-radius: 5px 5px 0px 0px;width: 99.9%;} .recoava{height: 50px; width: 18%; border-radius: 24px 24px 1px 14px;; display: block; position: relative; float: left;border: 3px solid #005FA3;bottom: 22px;} .reconick{float: left;width: 50%;background: #EEE;padding: 9px 0px;font-family: cursive;text-align: center;} .reconicka{float: left;width: 37.8%;padding: 9px 0px;text-align: center;background: #005fa3;border-radius: 0px 0px 5px 0px;color: #eee;} ahora solo les queda incluir el complemento en t.home.tpl {include file='modules/m.home_user-random.tpl'} Como ultimo solo tienen que descargar el archivo y agregarlo en /themes/tutema/templates/modules m.home_user-random.tpl
  48. 5 points
    Último avance, administración sección medallas
  49. 5 points
    Truco de jQuery: Ocultar las imagenes que no se ven o con links rotos: Copiar el code en cuaier lquarchivo .js y listo $("img").error(function(){ $(this).hide(); });
  50. 5 points
×