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

Search the Community

Showing results for tags 'Mod'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Calendars

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Sitio web


ICQ


Yahoo


Jabber


Skype


Localización


Intereses

Found 145 results

  1. Hola, de tanto que miré comentarios de un MOD llamado Index Mediafire del usuario @Dann donde le comentaban que resubiera los archivos y por X causas no lo ha hecho. Opté por hacer de nuevo el inicio de Mediafire y aquí está. Capturas del MOD: http://i.imgur.com/SFNu3u8.png Instalación: En el archivo acciones.js buscar: function open_login_box(action){ if($('#login_box').css('display') == 'block' && action!='open') close_login_box(); else{ $('#login_error').css('display','none'); $('#login_cargando').css('display','none'); $('.opciones_usuario').addClass('here'); $('#login_box').fadeIn('fast'); $('#nickname').focus(); } } function close_login_box(){ $('.opciones_usuario').removeClass('here'); $('#login_box').slideUp('fast'); }Y sustituir por: function open_login_box(action){ if($('#login_box').css('display') == 'block' && action!='open') close_login_box(); else{ $('#mask').css({'width':$(document).width(),'height':$(document).height(),'display':'block'}); $('#login_error').css('display','none'); $('#login_cargando').css('display','none'); $('.opciones_usuario').addClass('here'); $('#login_box').fadeIn('slow'); $('#nickname').focus(); } } function close_login_box(){ $('.opciones_usuario').removeClass('here'); $('#login_box').fadeOut('slow'); $('#mask').css('display', 'none'); }Descargar el archivo .rar, descomprimir y pasar los archivos a sus respectivas carpetas y lo tendrán. Si por alguna razón el usuario accede a la web pasando por alto el inicio y quiera iniciar sesión desde el botón "Identificarme" que está dentro de la Web, deberán copiar el maquetado del login que está en el archivo t.start.tpl y reemplazarlo por el viejo maquetado que está en head_menu.tpl; así como incluir el archivo CSS start.css en el archivo main_header.tpl. Otra solución sería eliminar los botones de registro e inicio de sesión que están dentro de la web y dejar únicamente los de este MOD.
  2. Vellenger

    Chat estylo Cbox

    Bueno gente de phpost , aqui les quiero dejar este chat estylo cbox , Aclaro que es el chat de Tron. Yo lo rediseñe y lo mejore, le agregue una serie de emoticones muy interactivos, desplegable, y con la opcion de un popup que contiene mas emoticones con memes muy simpaticos..Ademas le agregue la opcion del buscador por ip de la moderacion a los comentarios, le quite la opcion del fondo xq no se adapta al estylo. Aqui les dejo los archivos listos para Subir, Es solo para la V5 de gonzalo ok. La instalacion la deben de saber todos, y para ingresar solo deen de agregrle la pestaña, es algo simple si no lo saben hacer me avisan y se los dejo ok. http://www.mediafire.com/download/rgtb8kl8zjyvx8m/vell-chat-cbox.zip Les recuerdo que este chat es el de Tron y me dijeron que tiene una funcion limpiar que consume la transferecia de los host, asi que los que tengan host free, son responsables de su aplicacion del chat.. Hagan pruebas mejor, Espero que les sea de Agrado. hasta la Proxima..
  3. Alucard

    [MOD] Sitemap

    Hace unos meses cree este simple sitemap, y ahora que tengo datos de la consola de google search puedo liberarlo. Caps: Su instalación es muy simple, en .htaccess después de: RewriteRule ^mod-history/([A-Za-z0-9_-]+)/ inc/php/mod-history.php?ver=$1 [QSA,L] Agregan: # SITEMAP RewriteRule ^sitemap.xml$ inc/php/sitemap.php [L,NC,QSA] RewriteRule ^sitemap([0-9]+).xml$ inc/php/sitemap.php?pagina=$1 [L,NC,QSA] Y suban sitemap.php a /inc/php/ y xsl.xsl a la carpeta raíz de su tema en uso. Descarga por dropbox o en el archivo adjunto del topic. Algunas capturas de console search: Sitemap by Alucard.zip
  4. Esto es algo que siempre quise hacer, pero como he mencionado anteriormente "SOY MALíSIMO EN PROGRAMACIÓN PHP", pero estaba buscando algo parecido en el foro...pero no encontré. Así que realice uno desde cero. 1 - En inc/class/c.posts.php buscan /* getCatData() :: OBTENER DATOS DE UNA CATEGORIA */ y arriba agregan /* OBTENER LOS TITULOS DE LOS POSTS ANTERIOR/SIGUIENTE */ function TituloAnterior() { global $tsCore; $post_id = intval($_GET['post_id']-1); $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1'); $data = db_exec('fetch_assoc', $query); return $data['post_title']; } function TituloSiguente() { global $tsCore; $post_id = intval($_GET['post_id']+1); $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT post_id, post_title FROM p_posts WHERE post_id = \''.$tsCore->setSecure($post_id).'\' LIMIT 1'); $data = db_exec('fetch_assoc', $query); return $data['post_title']; } 2 - Luego en inc/php/posts.php buscan // COMENTARIOS /*$tsComments = $tsPosts->getComentarios($tsPost['post_id']); $tsComments = array('num' => $tsComments['num'], 'data' => $tsComments['data']); $smarty->assign("tsComments",$tsComments);*/ // PAGINAS y arriba pegan $smarty->assign("tsTituloAnterior",$tsPosts->TituloAnterior()); $smarty->assign("tsTituloSiguente",$tsPosts->TituloSiguente()); y en la sección del post donde esta anterior, aleatorio y siguente le agregan {$tsTituloAnterior} o {$tsTituloSiguente} hasta ahora todo bien, pero cual es el problema Ejemplo 1: Llegaste al último post, pero ya no veras ningún nombre de post siguente...Pero lo que quiero es que muestre el nombre del post actual ya que es el último Ejemplo 2: Tienes los posts con las id (1,2,3,6) hay falta el 4 y 5, y esto no funcionaría ya que le esta sumando o restando a la ID actual y en este caso: ¿Como haría para buscar el ID más cercano?
  5. Pedido: [Mod-Pedido] Hoy es su Cumpleaños! Por: @Rebieta Nota: No sé si es exactamente lo que quiere, pero les dejo el mod (Bueno, conjunto de mods)... PD: les dejaré las imágenes y el archivo m.home_cumpleanos.tpl Cumpleaños completos Lo pongo de esta manera porque es un conjunto de mod en uno solo les quedará así, obviamente no se fijen en el diseño ya que lo hice para la default así no más ya que puede ser usada en cualquier theme LOS MODS USADOS: - [MOD] Notificación de cumpleaños del usuario que sigues by @Kmario19 - [MOD] Cumpleaños en la homeby @Kmario19 - [MOD] Cumpleaños v2 + Administración + Fecha en perfil by @k_jupiter MOD NUMERO 1: * Anuncia a tus seguidores de tu cumpleaños! MOD NUMERO 2: * Anunciar cumpleaños en la home! MOD NUMERO 3: * Logo especial de cumpleaños + Mensaje! Archivo m.home_cumpleanos.tpl + imagenes[cookie.png y cumple.png] → modis.zip ← lo descomprimen directamente en la carpeta de su theme Bueno, ni siquiera es un mod... es un conjunto, luego en la otra versión ya será diferente!
  6. Esto es una mini actualización del Lo había incluido en el theme Hydra, pero no lo voy a usar! ¿Cual es la diferencia con el original? Que solo he agregado una función que he buscado por internet, que en este caso leerá el directorio CSS y obtendrá todos los nombre que existan en dicha carpeta, y es por ello que estan escritas manualmente estilo.css, extras.css y phpost.css en el caso que exista otro css fuera de la carpeta lo tendrán que escribir... Todos los achivos encontrados serán mostrados en un select en el cual ustedes puede seleccionar y presionar editar ya que agrega el texto correspondiente en el input 1 - Ir a js/admin.js y debajo de todo agregar /* EDITAR CSS */ var css = { editar: function(){ var e = $('input[name=file-css]').val(); if(css.check(e)){ $.ajax({ type: 'POST', url: global_data.url + '/css.php?ajax=1&pas=0', data: 'css=' + e, success: function(h){ $('textarea[name=css]').html(h).css({ width:'100%', height: '500px', resize: 'vertical' }).show(); $('button[name=savecss]').show(); } }); } else sinCss(); }, save: function(){ var e = $('input[name=file-css]').val(); var t = $('textarea[name=css]').val(); $.ajax({ type: 'POST', url: global_data.url + '/css.php?ajax=1&pas=1', data: 'css=' + t + '&name=' + e, success: function(h){ mydialog.show(); mydialog.title('Guardado...'); mydialog.body('Debes recargar <b>' + global_data.s_title + '</b> para que los cambios realizados en el archivos sean aplicados!'); mydialog.buttons(true, true, 'Regargar', 'admincss()', true, false, true, 'No', 'close', true, true); mydialog.center(); } }); }, check: function(filename){ var ext = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : ''; if(ext && /^(css)$/.test(ext)) return true; else return false; } } // admincss function admincss() { location.href = global_data.url + '/admin/css' } function sinCss() { mydialog.show(); mydialog.title('Error'); mydialog.body('Debes seleccionar o escribir un archivos CSS para poder elegir'); mydialog.buttons(true, true, 'Ya entendi!', 'close', true, true); mydialog.center(); } 2 - Ir a templates/t.admin.tpl y debajo de {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'} agregar {elseif $tsAction == 'css'} {include file='admin_mods/m.admin_css.tpl'} 3 - Ir a templates/admin_mods/ y crear un archivo llamado m.admin_css.tpl y agregar lo siguiente (El diseño esta realizado con bootstrap 4 y Material) por lo que deberán adaptarlo a su theme {literal} <script type="text/javascript"> function cambioOpciones() { document.getElementById("mostrarCss").value=document.getElementById("opciones").value; } </script> {/literal} <div class="card-header"> <h3>Editar CSS</h3> </div> <div id="rec" class="card-body"> <span class="d-block">Seleccione un archivo, si no se encuentra escribalo!</span> <div class="row"> <div class="col-4"> <select id="opciones" onchange="cambioOpciones();" size="8" class="custom-select"> <option value=''>Selecciona una opción</option> <option value='estilo.css'>Estilo</option> <option value='extras.css'>Extras</option> <option value='phpost.css'>Phpost</option> {php} $directorio = opendir("../../themes/".TS_TEMA."/css/"); //ruta actual while ($archivo = readdir($directorio)) { if (is_dir($archivo)) { } else { $txtCSS = ucfirst(str_replace('.css', ' ', $archivo)); echo "<option value='css/$archivo'>$txtCSS</option>"; } } {/php} </select> </div> <div class="col-8"> <input type="text" name="file-css" id=mostrarCss" class="d-inline form-control" placeholder="Ej: estilo.css o css/admin.css" size="15" style="width:70%" /> <button class="btn btn-outline-success" onclick="css.editar(); return false;">Editar</button> <textarea name="css" class="prettyprint lang-css" style="display:none;"></textarea> <button class="btn btn-outline-info" onclick="css.save(); return false;" name="savecss" style="display:none;">Guardar</button> </div> </div> </div> Veran en el código de m.admin_css.tpl esto $directorio = opendir("../../themes/".TS_TEMA."/css/"); //ruta actual en donde dice ".TS_TEMA." no funciona, solo le cambian por el nombre de su theme actual 4 - En la misma carpeta buscan m.admin_sidemenu.tpl y buscan <li id="a_temas"><span class="cat-title"><a href="{$tsConfig.url}/admin/temas">Temas y apariencia</a></span></li> y agregan <li id="a_rangos"><span class="cat-title"><a href="{$tsConfig.url}/admin/css">Editar CSS</a></span></li> 5 - Por último van a inc/php/ajax y crean un archivo llamado ajax.css.php y pegan esto <?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script att Xtatter :P'); /*/ · EDITAR EL CSS EN LA ADMIN BY XTATTER /*/ if($tsUser->uid == 1){ $pas = (int)$_GET['pas']; if($pas == 0) { $file_css = $tsCore->setSecure($_POST['css']); $i = file_get_contents($tsCore->settings['tema']['t_url'] . '/' . $file_css); if(empty($i)) $i = 'Error: el archivo no existe'; die($i); } else { $css = $_POST['css']; $css = str_replace('\\n', '\n', $css); $css = str_replace("&#039;", "'", $css); $css = str_replace('&quot;', '"', $css); $file_css = $_POST['name']; $i = '../../'.$tsCore->settings['tema']['t_url'] . '/'; file_put_contents( '../../themes/'.$tsCore->settings['tema']['t_path'] .'/'. $file_css, $css ); } } else { return false; } ?> VISTA PREVIA
  7. Hola a [email protected],os dejo como poner el editor WYSIWYG igual que la versión 1.3 , lo he probado en la V5 pero tiene que funcionar en cualquier tema.Si tienes problemas con otro tema o lo que sea respecto al mod,coméntalo aquí dejando tu web y un usuario demo. En c.core.php --> inc/class/c.core.php Buscar: /* parseBBCode($bbcode) */ function parseBBCode($bbcode, $type = 'normal', $smiles = true, $mentions = true) { // Class BBCode include_once(TS_EXTRA . 'bbcode.inc.php'); $parser = new BBCode(); // Seleccionar texto $parser->setText($bbcode); // Seleccionar tipo switch ($type) { // NORMAL case 'normal': // BBCodes permitidos $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); break; // FIRMA case 'firma': // BBCodes permitidos $parser->setRestriction(array('url', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler')); break; // NOTICIAS case 'news': // BBCodes permitidos $parser->setRestriction(array('url', 'b', 'i', 'u', 's')); break; // SOLO SMILES (Esta opción se mantiene por compatibilidad con versiones anteriores, pero en su lugar se recomienda utilizar la opción "normal") case 'smiles': $parser->setRestriction(array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li')); break; } // HTML $html = $parser->getAsHtml(); // SMILES if ($smiles) $html = $parser->parseSmiles(); // MENCIONES if ($mentions) $html = $parser->parseMentions(); // Retornar resultado return $html; } Cambiar por: /* parseBBCode($bbcode) */ function parseBBCode($bbcode, $type = 'normal') { // Class BBCode include_once(TS_EXTRA . 'bbcode.inc.php'); $parser = new BBCode(); // Seleccionar texto $parser->setText($bbcode); // Seleccionar tipo switch ($type) { // NORMAL case 'normal': // BBCodes permitidos $parser->setRestriction(array('url', 'code', 'quote', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler', 'swf', 'video', 'goear', 'hr', 'sub', 'sup', 'table', 'td', 'tr', 'ul', 'li', 'ol', 'notice', 'info', 'warning', 'error', 'success')); // SMILES $parser->parseSmiles(); // MENCIONES $parser->parseMentions(); break; // FIRMA case 'firma': // BBCodes permitidos $parser->setRestriction(array('url', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 's', 'align', 'spoiler')); break; // NOTICIAS case 'news': // BBCodes permitidos $parser->setRestriction(array('url', 'b', 'i', 'u', 's')); // SMILES $parser->parseSmiles(); break; // SOLO SMILES (Esta opción se mantiene por compatibilidad con versiones anteriores, pero en su lugar se recomienda utilizar la opción "normal") case 'smiles': $parser->setRestriction(array('url', 'code', 'quote', 'quotePHPost', 'font', 'size', 'color', 'img', 'b', 'i', 'u', 'align', 'spoiler', 'swf', 'goear', 'hr', 'li')); // SMILES $parser->parseSmiles(); // MENCIONES $parser->parseMentions(); break; } // Retornar resultado HTML return $parser->getAsHtml(); } En acciones.js --> themes/tutema/js/acciones.js Buscar: /* Citar comentarios */ function citar_comment(id, nick){ var textarea = $('#body_comm'); textarea.focus(); textarea.val(((textarea.val()!='') ? textarea.val() + '\n' : '') + '[quote=' + nick + ']' + htmlspecialchars_decode($('#citar_comm_'+id).html(), 'ENT_NOQUOTES') + '[/quote]\n'); } Cambiar por: /* Citar comentarios */ function citar_comment(id, nick){ var textarea = $('#body_comm'); var message = $.trim($('#comment-body-'+id).html()); $('.wysibb-texarea').execCommand('quote',{autor: nick, seltext: message}); } Buscar: //Imprimir editores function print_editor(){ //Editor de posts if($('#markItUp') && !$('#markItUpMarkItUp').length){ $('#markItUp').markItUp(mySettings); $('#emoticons a').live("click",function(){ emoticon = ' ' + $(this).attr("smile") + ' '; $.markItUp({ replaceWith:emoticon }); return false; }); } //Editor de posts comentarios if($('#body_comm') && !$('#markItUpbody_comm').length){ $('#body_comm').markItUp(mySettings_cmt); } //Editor de respuestas comunidades if($('#body_resp') && !$('#markItUpbody_resp').length){ $('#body_resp').markItUp(mySettings_cmt); } } /* FIN - Editor */ Cambiar por: //Imprimir editores function print_editor(){ //Editor de posts if($('#markItUp').length && !$('.wysibb-texarea').length || $('#wysibb').length && !$('.wysibb-texarea').length){ $('#markItUp, #wysibb').removeAttr('onblur onfocus class style').css('height', '400').addClass('required').wysibb(); $('#moreemofn, #emoticons').remove(); } //Editor de posts comentarios if($('#body_comm').length && !$('.wysibb-texarea').length){ var wbbOpt = { buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link" } $('#body_comm').removeAttr('onblur onfocus class style title').css('height', '80').html('').wysibb(wbbOpt); } //Editor de respuestas comunidades if($('#body_resp') && !$('#markItUpbody_resp').length){ $('#body_resp').markItUp(mySettings_cmt); } //Editor de respuesta de mensajes if($('#respuesta').length && !$('.wysibb-texarea').length){ var wbbOpt = { buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,removeFormat" } $('#respuesta').removeAttr('onblur onfocus class style title').css('height', '80').html('').wysibb(wbbOpt); } } /* FIN - Editor */ Buscar: mydialog.buttons(true, true, 'Enviar', 'mensaje.enviar(0)', true, true, true, 'Cancelar', 'close', true, false); mydialog.center(); Cambiar por: mydialog.buttons(true, true, 'Enviar', '$(\'.wysibb-texarea\').sync(); mensaje.enviar(0)', true, true, true, 'Cancelar', 'close', true, false); var wbbOpt = { resize_maxheight: 170, buttons: "smilebox,|,bold,italic,underline,strike,sup,sub,|,img,video,link,|,removeFormat" } $('#msg_body').wysibb(wbbOpt); mydialog.center(); Buscar: // RESPONDER responder: function(mp_id){ this.vars['mp_id'] = $('#mp_id').val(); this.vars['mp_body'] = encodeURIComponent($('#respuesta').val()); // Fix: 14/12/2014 - 1.1.000.9 if(this.vars['mp_body'] == '') { $('#respuesta').focus(); return; } // this.ajax('respuesta','id=' + this.vars['mp_id'] + '&body=' + this.vars['mp_body'], function(h){ $('#respuesta').val(''); // LIMPIAMOS switch(h.charAt(0)){ case '0': mydialog.alert("Error", h.substring(3)); break; case '1': $('#historial').append($(h.substring(3)).fadeIn('slow')); break; } $('#respuesta').focus(); }); }, Cambiar por: // RESPONDER responder: function(mp_id){ this.vars['mp_id'] = $('#mp_id').val(); this.vars['mp_body'] = encodeURIComponent($('#respuesta').bbcode()); // Fix: 06/05/2018 - 1.3 if(this.vars['mp_body'] == '') { $('#respuesta').focus(); return; } // this.ajax('respuesta','id=' + this.vars['mp_id'] + '&body=' + this.vars['mp_body'], function(h){ $('#respuesta').val(''); // LIMPIAMOS $('.wysibb-body').html(''); switch(h.charAt(0)){ case '0': mydialog.alert("Error", h.substring(3)); break; case '1': $('#historial').append($(h.substring(3)).fadeIn('slow')); break; } $('#respuesta').focus(); }); }, En funciones.js --> themes/tutema/js/funciones.js Buscar: // NUEVO COMENTARIO nuevo: function(mostrar_resp, comentarionum){ // EVITAR FLOOD $('#btnsComment').attr({'disabled':'disabled'}); // var textarea = $('#body_comm'); var text = textarea.val(); Cambiar por: // NUEVO COMENTARIO nuevo: function(mostrar_resp, comentarionum){ // EVITAR FLOOD $('#btnsComment').attr({'disabled':'disabled'}); // var textarea = $('#body_comm'); var text = textarea.bbcode(); Buscar: // VISTA PREVIA DEL COMENTARIO preview: function(id, type){ var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id); var text = textarea.val(); Cambiar por: // VISTA PREVIA DEL COMENTARIO preview: function(id, type){ var textarea = (type == 'new') ? $('#' + id) : $('#edit-comment-' + id); var text = textarea.bbcode(); En main_header.tpl --> themes/tutema/templates/sections/main_header.tpl Buscar: <link href="{$tsConfig.tema.t_url}/extras.css" rel="stylesheet" type="text/css" /> Agregar debajo: <link href="{$tsConfig.css}/wysibb.css" rel="stylesheet" type="text/css" /> Buscar: <script src="{$tsConfig.js}/funciones.js" type="text/javascript"></script> Agregar debajo: <script src="{$tsConfig.js}/wysibb.js" type="text/javascript"></script> Subir esta carpeta y ya lo tienen funcionando.
  8. Pedido: [Mod] Imagen de cabecera en comunidades Por: @fellomix No sé si es exactamente lo que se pidió.. Quedaría como la imagen, pero obviamente no tiene ese borde rojo ya que lo estaba probando... Ahora deben de seguir los siguientes pasos...(creo que les va a servir para cualquier theme con comunidades y cualquier versión de Risus) Buscamos en inc/class/c.comunidades.php } elseif($type == 3) { $this->mod_history($comid, 5, $comid); $name = 'cf_'.(int)$comid.'.jpg'; $root = TS_FILES.'uploads/'.$name; if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name; else return '0: No se pudo subir la imagen'; } y debajo o al lado de } pegamos elseif($type == 4) { $this->mod_history($comid, 6, $comid); $name = 'head_'.(int)$comid.'.jpg'; $root = TS_FILES.'uploads/'.$name; if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name; else return '0: No se pudo subir la imagen'; } Luego buscamos en inc/php/ajax/ajax.comunidades.php case 'comunidades-edit_fondo': //<-- $result = $tsCom->uploadImagen($_FILES['background'], $_GET['comid'], 3); echo $tsCore->setJSON($result); //--> break; y debajo agregaremos case 'comunidades-edit_header': //<-- $result = $tsCom->uploadImagen($_FILES['header'], $_GET['comid'], 4); echo $tsCore->setJSON($result); //--> break; Luego vamos a themes/TUTHEME/js/comunidades.js y buscamos votar_tema: function(voto) { $('#loading').fadeIn(250); voto = (voto == 'pos') ? 'pos' : 'neg'; var votos = $('#votos_total'); var total_votos = parseInt(votos.text()); total_votos = (isNaN(total_votos)) ? 0 : total_votos; Arriba de esto pegamos lo siguiente subir_cabecera: function() { $('#loading').fadeIn(250); if ($('#head_input').val()) { if(isImageFile($('#head_input').val())){ $('#head_change').css({'opacity' : 0.5}); $.ajaxFileUpload({ url: global_data.url + '/comunidades-edit_header.php?' + cgget('comid', true), fileElementId: 'head_input', dataType: 'json', success: function(h){ if(h.charAt(0) == 1) { $('#head_change').css({'opacity' : 1}); $('#head_change').attr({'src' : h.substring(3) + '?' + new Date().getTime()}); } else { mydialog.alert('Error', h.substring(3)); } $('#loading').fadeOut(250); } }); } else mydialog.alert('Error', 'El archivo no es una imagen válida.'); } else mydialog.alert('Error', 'No selecciono ningun archivo.'); }, Más abajo buscamos if(global_com.comid!='') { $('body').css({'background-image' : 'url("' + global_data.url + '/files/uploads/cf_' + global_com.comid + '.jpg")'}); } y debajo agregamos if(global_com.comid!='') { $('.headercom').css({'background-image' : 'url("' + global_data.url + '/files/uploads/head_' + global_com.comid + '.jpg")'}); } Solo tendríamos que agregar la clase .headercom en donde queramos que aparezca la cabecera de la comunidad Luego en themes/TUTHEME/templates/comunidades/c.crear_right.tpl y arriba de <input type="hidden" id="comid" value="{$tsDato.c_id}" /> <div class="com_box_title clearfix"><h2>Imagen de la comunidad</h2></div> Pegamos <div class="com_box_title clearfix"><h2>Cabecera de la comunidad</h2></div> <div class="com_edit_imagen" align="center"> <img src="{$tsConfig.url}/files/uploads/head_{$tsDato.c_id}.jpg" id="head_change" height="180" width="100%" /> <input type="file" id="head_input" class="input_text" name="header" style="width: 100%;" onchange="com.subir_cabecera({$tsDato.c_id})" /> </div> En themes/TUTHEME/templates/comunidades/c.com_info.tpl <div class="ver_com_info"> <div class="vci_left floatL"> y la reemplazamos por <div class="ver_com_info headercom"> <div class="opacity"> <div class="vci_left floatL"> luego más abajo buscamos <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a> <div class="clearfix"></div> </div> y la reemplazamos por <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a> <div class="clearfix"></div> </div> </div> por último en themes/TUTHEME/css/comunidades.css agregamos .ver_com_info { padding: 0; } .headercom { /* De acá podrán darle estilo al fondo */ background-position: center center; background-size: cover; background-repeat: no-repeat; } .opacity { padding: 20px 8px; background-color: rgba(255,255,255,.6); } Luego trataré de hacer otro, pero que evite subir imagenes a nuestro servidor y que la suba a un web como por ejemplo imgur...creo, no sé...ya lo veré PD: Si al editar la imagen no cambia, presionen "CTRL + SHIFT + R" y para evitar eso busquen en t.comunidades.tpl <script type="text/javascript" src="{$tsConfig.js}/comunidades.js"></script> y lo cambian por <script type="text/javascript" src="{$tsConfig.js}/comunidades.js?{$smarty.now}"></script>
  9. Pedido: [Mod] Imagen de cabecera en comunidades Por: @fellomix Una segunda forma de poder hacerlo! 1 - Ejecutar esta consulta ALTER TABLE `c_comunidades` ADD `c_headercom` VARCHAR(255) NOT NULL AFTER `c_nombre_corto`; 2 - Buscar en c.comunidades.php en la función nueva_comunidad() 'fecha' => time(), 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombre']), true), 'ncorto' => $tsCore->setSeo($tsCore->setSecure($_POST['ncorto'], true)), y debajo agregamos 'headercom' => $tsCore->setSecure($tsCore->parseBadWords($_POST['headercom']), true), un poco más abajo buscamos // Insertamos if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO c_comunidades (c_autor, c_nombre, c_nombre_corto, y le agregamos a lado c_headercom, un poquito más abajo de VALUES ( \''.$tsUser->uid.'\', \''.$dato['nombre'].'\', \''.$dato['ncorto'].'\', agregamos \''.$dato['headercom'].'\', Luego buscamos la función editar_comunidad($comid) 'pais' => $tsCore->setSecure($_POST['pais']), 'desc' => $tsCore->setSecure($_POST['descripcion']), 'color' => $tsCore->setSecure($_POST['back_color']), y debajo pegamos 'headercom' => $tsCore->setSecure($_POST['headercom']), más abajo buscamos c_acceso = \''.(int)$dato['acceso'].'\', c_permisos = \''.$dato['permisos'].'\', y debajo pegamos c_headercom = \''.$dato['headercom'].'\', 3 - Después buscamos en c.crear_left.tpl <div class="item_form clearfix"> <label>Categoría</label> <select name="categoria" id="ShowCats" class="required" onChange="com.subcat()" tabindex="3"> <option value="0">Selecciona una categoría</option> {foreach from=$tsCats item=c} <option value="{$c.cid}" {if $tsDato.c_categoria == $c.cid}selected="selected"{/if}>{$c.c_nombre}</option> {/foreach} </select> </div> y debajo o arriba pegamos (se me olvido quitar los required, ya que no es obligatorio) <div class="item_form clearfix"> <label>Cabecera!</label> <input type="text" name="headercom" tabindex="10" maxlength="180" size="60" class="required input_text https" placeholder="URL de portada (debe tener https://)" pattern="https://.*" value="{$tsDato.c_headercom}"> <small class="mg-lt">Solo admitirá los https!</small> </div> 4 - Después buscamos c.com_info.tpl [línea 24 y 25] <div class="ver_com_info"> <div class="vci_left floatL"> y la reemplazamos por <div class="ver_com_info" style="background-image: url({$tsCom.c_headercom});"> <div class="opacity"> <div class="vci_left floatL"> luego debajo de la línea 61 agregaremos un </div> 5 - Por último agregaremos esto a comunidades.css .ver_com_info { padding: 0; } .headercom { background-position: center center; background-size: cover; background-repeat: no-repeat; } .opacity { padding: 20px 8px; background-color: rgba(255,255,255,.6); }
  10. Bueno estamos aquí reunidos para realizar una actualización del registro jajaja este es el registro que actualizaremos Para realizar estos cambios debes descargar el archivo, está subido a MEGA Registro-recaptchav2-2018.rar Luego hacer estos pasos 1 - Buscar en templates/sections/head_menu.tpl estas líneas <li class="tabbed registrate"> <a title="Registrate!" onclick="registro_load_form(); return false" href=""><b>Registrate!</b></a> </li> y la deben reemplazar por <li class="tabbed registrate"> <a title="Registrate!" href="{$tsConfig.url}/registro/"><b>Registrate!</b></a> </li> 2 - Al tener 2 archivos registro.css y registro.min.css el script automáticamente usará el registro.css, si quieren usar el minificado solo deben cambiar el nombre o agregarlo al fichero de t.registro.tpl, pero en ese caso estaría usando los 2 archivos del registro por lo que deben eliminar "registro.css" 3 - de hecho es eso solo, no hay más pasos que esperabas jajaja solo mira el tutorial si quieres! pd: Si quieres ver una demo del registro, solo mira el video! Nota personal: Tal vez los videos sean una porquería, pero lo que me interesa es que sepan como hacerlo sin importar la calidad de los videos, lo cual es solo para explicar de una manera mejor y porque mi pc es una mierda jajaja al ser all-in-one no se le puede hacer mucho, ni siquiera se puede agregar algo a la placa! Ver video tutorial las pestañas que se ven casi al final del video es que estaba buscando nuevos diseños para el formulario lastimosamente no encontré así que le mande fruta jajajaja, los inputs de radio use los mismos que tengo en la versión de mozzfire
  11. MINI-MOD Este mini-mod es completamente simple! 1 - Realizamos esta consulta ALTER TABLE `w_configuracion` ADD `countcomments` VARCHAR(3) NOT NULL AFTER `xat_id`; 2 - Buscamos en inc/class/c.admin.php y buscamos 'xat' => $tsCore->setSecure($_POST['xat']), 'edad' => $tsCore->setSecure($_POST['edad']), y debajo pegamos lo siguiente 'countcomments' => $tsCore->setSecure($_POST['countcomments']), un poco más abajo buscamos `c_allow_edad` = \'' . $c['edad'] . '\', y a lado le agregaremos `countcomments` = \'' . $c['countcomments'] . '\', 3 - Buscamos en inc/class/c.muro.php y buscamos case 'comments': $limit = ($likes > 0) ? "LIMIT {$likes}" : ''; y la reemplazamos por case 'comments': $cantidadcomentario = ($tsCore->settings['countcomments']); $limit = ($likes > 0) ? "LIMIT {$cantidadcomentario}" : ''; 4 - Buscamos en templates/admin_mods/m.admin_configs.tpl <dl> <dt><label for="ai_xat">Xat ID:</label><br /><span>Por defecto puedes agregar un chat de <a href="http://xat.com">Xat</a> para tu web, solo crea tu grupo he ingresa el nombre.</span></dt> <dd><input type="text" id="ai_xat" name="xat" maxlength="20" value="{$tsConfig.xat_id}" /> </dd> </dl> y debajo agregamos <dl> <dt><label for="countcomments">Cantidad de comentarios:</label><br /><span>La cantidad de comentarios que se visualizará en las publicaciones como perfil y portal</span></dt> <dd><input type="text" id="countcomments" name="countcomments" maxlength="3" value="{$tsConfig.countcomments}" /> </dd> </dl> Listo así de fácil, sencillo y sin complicaciones Los valores pueden ir desde 0 hasta 999 PD: Si ya existía, pido disculpas...Nunca lo he visto
  12. Hola a todos de PHPost les traigo un nuevo complemento bastante útil, es similar al que hay en Taringa, les muestra los últimos 7 posts favoritos que agregaron para tenerlos más accesibles que cargar la sección favoritos y solo los tengan en el monitor de usuario y que Kmario adapto para la Risus pero en este caso en vez de ser los favoritos en el monitor este mod muestra los ultimos 7 borradores en el monitor del usuario.Bueno este mod esta basado enteramente en el que posteo Kmario asi que la mayoria de los creditos van para el que por cierto ¡¡¡¡Felicitaciones!!!! por ser parte del E.P Bueno empezamos con el mods aqui os dejo para la 1.1 (rc2) y para la 1.2 la unica diferencia esta en la funcion que añadiremos a c.posts.php asi que elijan que funcion les corresponde segun la version de su script. 1º Deben al archivo c.posts.php (esta en inc/class/)y buscamos: /* getFavoritos() */Arriba de eso agregamos: (Para la version 1.1) /* * listBorradores() * Borradores en el monitor * ReModWrite */ function listBorradores(){ global $tsCore, $tsUser; // $query = mysql_query('SELECT p.post_id, p.post_title, c.c_seo, c.c_img FROM p_borradores AS b LEFT JOIN p_posts AS p ON p.post_id = b.bid LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE b.b_user = \''.$tsUser->uid.'\' AND p.post_status = \'0\' ORDER BY b.b_date DESC LIMIT 7'); $data['data'] = result_array($query); // $data['total'] = mysql_num_rows(mysql_query('SELECT bid FROM p_borradores WHERE b_user = \''.$tsUser->uid.'\'')); // return $data; }Arriba de eso agregamos: (Para la version 1.2) /* * listBorradores() * Borradores en el monitor * ReModWrite */ function listBorradores(){ global $tsCore, $tsUser; // $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT p.post_id, p.post_title, c.c_seo, c.c_img FROM p_borradores AS b LEFT JOIN p_posts AS p ON p.post_id = b.bid LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE b.b_user = \''.$tsUser->uid.'\' AND p.post_status = \'0\' ORDER BY b.b_date DESC LIMIT 7'); $data['data'] = result_array($query); // $data['total'] = db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT bid FROM p_borradores WHERE b_user = \''.$tsUser->uid.'\'')); // return $data; }Con eso terminamos en el archivo c.posts.php 2º Ahora vamos a ajax.borradores.php (está en inc/php/ajax/) y debajo de: 'borradores-get' => array('n' => 2, 'p' => ''),Agregamos: 'borradores-lista' => array('n' => 2, 'p' => 'lista'),En el mismo archivo un poco mas abajo buscamos: // CLASE require('../class/c.borradores.php'); $tsDrafts =& tsDrafts::getInstance();Debajo de eso agregamos // CLASE require('../class/c.posts.php'); $tsPosts =& tsPosts::getInstance();Ahora al final del mismo archivo buscamos: case 'borradores-eliminar': //<-- echo $tsDrafts->delDraft(); //--> break;Y debajo de eso agregamos: case 'borradores-lista': // <!-- $smarty->assign("tsBorradores",$tsPosts->listBorradores()); // --> break;Con eso ya terminamos en el archivo ajax.borradores.php 3º Ahora nos vamos al archivo acciones.js (está en tutema/js/) y buscamos: mensaje.close();Debajo de eso agregamos: borrador.close();Un poco más abajo buscamos: notifica.close();Debajo de eso agregamos: borrador.close();Para finalizar buscamos: var timelib = {Arriba de eso agregamos: var borrador = { cache: {}, last: function () { notifica.close(); mensaje.close(); // if ($('#bor_list').css('display') != 'none') { $('#bor_list').slideUp(); $('a[name=Borradores]').parent('li').removeClass('monitor-notificaciones'); } else { if (($('#bor_list').css('display') == 'none') || typeof borrador.cache.last == 'undefined') { $('a[name=Borradores]').children('span').addClass('spinner'); $('a[name=Borradores]').parent('li').addClass('monitor-notificaciones'); $('#bor_list').slideDown(); borrador.ajax(function (r) { borrador.cache['last'] = r; borrador.show(); borrador.total(); notifica.close(); mensaje.close(); }); } else borrador.show(); } }, ajax: function(fn){ $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/borradores-lista.php', success: function(h){ fn(h); $('#loading').fadeOut(350); } }); }, show: function () { if (typeof borrador.cache.last != 'undefined') { $('a[name=Borradores]').parent('li').addClass('monitor-notificaciones'); $('a[name=Borradores]').children('span').removeClass('spinner'); $('#bor_list').show().children('ul').html(borrador.cache.last); $('#bor_list > ul > li > a[title]').tipsy({ gravity: 's' }); } }, total: function () { var total = parseInt($('#BTotal').text()); if(total > 0) { $('#BorrTotal').html('Borradores <span class="floatR">' + total + '</span>'); } }, close: function(){ $('#bor_list').hide(); $('a[name=Borradores]').parent('li').removeClass('monitor-notificaciones'); } }Con eso ya terminamos en el archivo acciones.js 4º Ahora vamos y abrimos head_menu.tpl (está en tutema/templates/secciones/) y buscamos: <li> <a title="Mis Borradores" href="{$tsConfig.url}/borradores.php"> <span class="systemicons borradores"></span> </a> </li>Y Lo reemplazaremos por: <li class="borradores" style="position:relative"> <a href="{$tsConfig.url}/borradores.php" onclick="borrador.last(); return false" title="Posts borradores" name="Borradores"> <span class="systemicons borradores"></span> </a> <div class="notificaciones-list" id="bor_list" style="width:270px"> <div style="padding: 10px 10px 0 10px;font-size:13px"> <strong style="cursor:pointer" onclick="location.href='{$tsConfig.url}/borradores.php'" id="BorrTotal">Borradores</strong> </div> <ul> </ul> <a href="{$tsConfig.url}/borradores.php" class="ver-mas">Ver todos los posts borradores</a> </div> </li> Con eso ya terminamos en el archivo head_menu.tpl 5º Y por ultimo subimos el siguiente archivo a la carpeta p.php_files (esta en tutema/templates/p.php_files). p.borradores.lista.tpl Y listo eso es todo con esto terminamos el mod. Nos quedaria algo como esto pero con los posts que tengamos en borradores. P.D La captura muestro la del mod de favoritos en el monitor de Kmario ya que el mio lo adapte directamente para el tema km-tronos tambien de kmario pero este mod no muestra los favoritos sino los borradores en el monitor Un saludo espero les sea de utilidad y agradezcan el aporte p.borradores.lista.tpl
  13. Bueno aqui les dejo a pedido de un user.. La verdad que no me quedo muy claro lo que me pedia. Ya que era poder poner los modulos d elos top user, tops posts, comentarios, No se si lo queria que sea dentro de los post ya que no hay mucho espacio.. Hasi que lo agregue en el lado lateral.. Use el theme de gonzalo V5 asi que para otros temas esto puede cambiar el estylo.. Comenzamos.. En el archivo c.posts.php buscamos : /* lalala */ Y agregamos arriba: /* Top Post General*/ function act_tpost(){ global $tsUser, $tsCore; $query = mysql_query("SELECT p.post_id, p.post_category, p.post_title, p.post_puntos, c.c_seo FROM p_posts AS p LEFT JOIN p_categorias AS c ON c.cid = p.post_category WHERE p.post_status = 0 ORDER BY p.post_puntos DESC LIMIT 10"); $data = result_array($query); // return $data; } /* Top User General*/ function act_tuser(){ global $tsUser, $tsCore; $query = mysql_query("SELECT SUM(p.post_puntos) AS total, u.user_id, u.user_name, u.user_baneado, u.user_posts, u.user_activo FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id WHERE p.post_status = 0 AND u.user_activo = 1 AND u.user_baneado = 0 GROUP BY p.post_user ORDER BY total DESC LIMIT 10"); $data = result_array($query); // return $data; } /* Ultimos TOP comentarios General*/ function act_cuser(){ global $tsUser, $tsCore; $query = mysql_query("SELECT SUM(p.post_comments) AS total, u.user_id, u.user_name, u.user_baneado, u.user_posts, u.user_activo FROM p_posts AS p LEFT JOIN u_miembros AS u ON p.post_user = u.user_id WHERE p.post_status = 0 AND u.user_activo = 1 AND u.user_baneado = 0 GROUP BY p.post_user ORDER BY total DESC LIMIT 10"); $data = result_array($query); // return $data; } /* Ultimos comentarios*/ function act_comuser(){ global $tsUser, $tsCore; $query = mysql_query("SELECT * FROM p_comentarios AS c LEFT JOIN u_miembros AS u ON c.c_user = u.user_id LEFT JOIN p_posts AS p ON p.post_id = c.c_post_id LEFT JOIN p_categorias AS ca ON ca.cid = p.post_category WHERE p.post_status = 0 AND u.user_baneado = 0 AND u.user_activo = 1 ORDER BY c.cid DESC LIMIT 10"); $data = result_array($query); // return $data; } EN el Archivo posts.php Buscamos: // DATOS DEL AUTOR $smarty->assign("tsAutor",$tsPosts->getAutor($tsPost['post_user'])); Y Agregamos abajo: // DATOS TOP POSTS, TOP USUARIOS, TOP COMENTADOR, ULTIMOS COMENTARIOS... $smarty->assign("tsPostpv",$tsPosts->act_tpost()); $smarty->assign("tsUserpv",$tsPosts->act_tuser()); $smarty->assign("tsCompv",$tsPosts->act_cuser()); $smarty->assign("tsComupv",$tsPosts->act_comuser()); En el archivo m.posts_autor.tpl buscamos al final: {/if} y Agregamos despues {include file='modules/m.top_posts_general.tpl'} Agregamos esto a su extras.css #box-top-post{width:100%;height:auto;overflow: hidden; border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;} .top-p-g h3{padding: 5px 0 5px 0;color:#FFF;font-weight:bold;font-size:16px;border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;} #box-top-post ul li{font-family: Helvetica,Arial;display:block;padding:3px 0 3px 0;}.top-p-g{width:100%;background:#00608A;text-align:center;} #box-top-post ul li a{font-weight: 600;color:#A6A6A6;}.ver-mas-v{background:#EAF7FF;text-align:center;padding: 3px 0 3px 0;border-top:1px solid #81BBE0;}.ver-mas-v a{color:#005CA5;} Y Subimos el archivo m.top_posts_general.tpl a modules/ http://www.mediafire.com/?mkomrn866tmf2k8 Les dejo el archivo + las instruciones en txt para los que lo necesiten.. Espero que les sea de utilidad.. (Los tops son con los datos genrales) Hasta la Proxima..
  14. xScorpion

    (MOD) MPS MASIVOS

    Hola acabo de instalar el mod y lo migre para la 1.2 pero me surge el problema de que aparece todo, peero no manda los mps como deveria, le doy a enviar y se queda asi... Me fijo en el control de mensajes para ver si se mandaron y nada... Uso la V5 TO-UP. Esta es mi WEB
  15. [SnackBar] Toaster para tu theme Bueno como dice el titulo es un complemento que puede ir a cualquier theme sin importar que formato, frameworks,etc tenga. Si quieren saber del tema o conocer el complemento visiten snackbarjs Ejemplo como les puede quedar: 1 - INICIANDO SESIÓN CON UN USUARIO QUE NO EXISTE 2 - INICIANDO SESIÓN CON CONTRASEÑA ERRONEA 3 - CUANDO AGREGAS UN POST A FAVORITOS 4 - CUANDO YA TIENES EL POST EN FAVORITOS ¿Que es lo que hace? - Simplemente da una mejor forma de verlo y además queda bonito. (Se que no todos tenemos la misma opinion) - Reemplaza el tipico mensaje estatico que tiene por defecto. ¿Solo sirve con los .tpl? - Por suerte no hace falta que sea solamente en los js y ni en los .tpl, se pueden agregar tanquilamente en los archivos php. ¿Es mucho lo que hay que modificar? - Hay que reemplazar donde se de una notificación estatica, como se los demostre en las imagenes fuerón agregados en los archivos c.posts.php y c.user.php ¿Se le puede cambiar de estilos? - Si tranquilamente no hay problema.
  16. Es es el Mod original por @Vellenger 1 - Para las visitas en inc/class/c.posts.php buscamos: // AGREGAMOS A VISITADOS... PORTAL if($tsCore->settings['c_allow_portal']){ y arriba agregaremos /* Actualizado 25/04/2018 */ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(id) as total FROM w_visitas'); $data = db_exec('fetch_assoc', $query); $time = time() - 1440*60; if($data['total']>100){ db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM w_visitas WHERE date < \''.$time.'\' '); } /* Actualizado 25/04/2018 */ 2 - Para las sesiones en inc/class/c.user.php buscamos: // Establecemos la cookie $this->set_cookie('sid', $this->ID, $this->sess_expiration); y debajo pegamos /* Actualizado 25/04/2018 */ $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT COUNT(session_user_id) as total FROM u_sessions'); $data = db_exec('fetch_assoc', $query); if($data['total']>100){ $time = time() - 1440*60; db_exec(array(__FILE__, __LINE__), 'query', 'DELETE FROM u_sessions WHERE session_time < \''.$time.'\' '); } /* Actualizado 25/04/2018 */ Si ya estaba pido disculpas, porque no lo he visto!
  17. Buenas como publiqué este pedido en un "foro incorrecto" vuelvo a publicarlo pero acá en el foro de pedidos a ver si alguien puede ayudarme Necesito adaptar este mod: Para que al lado del nombre del usuario en el perfil aparezca un icono así y el title sea "Hoy es su Cumpleaños!", y obviamente que este se muestre solo en la fecha de cumpleaños de los usuarios, es un complemento que tiene Taringa! y me sorprendió no encontrarlo aquí por eso, si alguno quiere y puede adaptar el mod estaría genial Gracias
  18. Buenas alguien aqui podría adaptar este mod: Para que al lado del nombre del usuario en el perfil aparezca un icono así y el title sea "Hoy es su Cumpleaños!", y obviamente que este se muestre solo en la fecha de cumpleaños de los usuarios, es un complemento que tiene Taringa! y me sorprendió no encontrarlo aquí por eso, si alguno quiere y puede adaptar el mod estaría genial
  19. Hola hoy les traigo una modificación más + mod o como quieran llamarlo... caps.. 1) Abrimos inc/class/c.cuenta.php y buscamos $data['p_socials'] = unserialize($data['p_socials']); $data['p_socials']['f'] = $data['p_socials'][0]; $data['p_socials']['t'] = $data['p_socials'][1]; y debajo agregamos $data['p_socials']['y'] = $data['p_socials'][2]; $data['p_socials']['i'] = $data['p_socials'][3]; $data['p_socials']['l'] = $data['p_socials'][4]; $data['p_socials']['p'] = $data['p_socials'][5]; más abajo buscamos $data['p_nombre'] = $tsCore->setSecure($tsCore->parseBadWords($data['p_nombre']), true); $data['p_mensaje'] = $tsCore->setSecure($tsCore->parseBadWords($data['p_mensaje']), true); $data['p_socials'] = unserialize($data['p_socials']); $data['p_socials']['f'] = $data['p_socials'][0]; $data['p_socials']['t'] = $data['p_socials'][1]; y debajo agregamos $data['p_socials']['y'] = $data['p_socials'][2]; $data['p_socials']['i'] = $data['p_socials'][3]; $data['p_socials']['l'] = $data['p_socials'][4]; $data['p_socials']['p'] = $data['p_socials'][5]; ahora más abajo buscamos if(!empty($sitio)) $sitio = substr($sitio, 0, 4) == 'http' ? $sitio : 'http://'.$sitio; // EXTERNAS $facebook = $tsCore->setSecure($tsCore->parseBadWords($_POST['facebook']), true); /* ELIMINAR */ $twitter = $tsCore->setSecure($tsCore->parseBadWords($_POST['twitter']), true); /* ELIMINAR */ $youtube = $tsCore->setSecure($tsCore->parseBadWords($_POST['youtube']), true); /* ELIMINAR */ for($i = 0; $i < 5; $i++) $gustos[$i] = $tsCore->setSecure($tsCore->parseBadWords($_POST['g_'.$i]), true); // IN DB $perfilData = array( 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombrez']), true), 'mensaje' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mensaje']), true), 'sitio' => $tsCore->setSecure($tsCore->parseBadWords($sitio), true), 'socials' => serialize(array($facebook,$twitter,$youtube)), /* ELIMINAR */ y la reemplazamos if(!empty($sitio)) $sitio = substr($sitio, 0, 4) == 'http' ? $sitio : 'http://'.$sitio; // EXTERNAS for($i = 0; $i < 5; $i++) $gustos[$i] = $tsCore->setSecure($tsCore->parseBadWords($_POST['g_'.$i]), true); // IN DB $perfilData = array( 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombrez']), true), 'mensaje' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mensaje']), true), 'sitio' => $tsCore->setSecure($tsCore->parseBadWords($sitio), true), Luego buscamos case 8: .... setSecure($_SERVER['REMOTE_ADDR']).'\')')) return array('error' => 'Proceso iniciado, recibirá la respuesta en el correo indicado cuando valoremos el cambio.'); } break; debajo agregaremos esto case 9: // EXTERNAS $facebook = $tsCore->setSecure($tsCore->parseBadWords($_POST['facebook']), true); $twitter = $tsCore->setSecure($tsCore->parseBadWords($_POST['twitter']), true); $youtube = $tsCore->setSecure($tsCore->parseBadWords($_POST['youtube']), true); $instagram = $tsCore->setSecure($tsCore->parseBadWords($_POST['instagram']), true); $linkedin = $tsCore->setSecure($tsCore->parseBadWords($_POST['linkedin']), true); $pinterest = $tsCore->setSecure($tsCore->parseBadWords($_POST['pinterest']), true); // IN DB $perfilData = array( 'socials' => serialize(array($facebook,$twitter,$youtube,$instagram,$linkedin,$pinterest)), ); break; 3) Ahora buscamos en templates/t.cuenta.tpl <li><a onclick="cuenta.chgtab(this)">Cambiar Nick</a></li> y debajo agregamos esto <li><a onclick="cuenta.chgtab(this)">Redes</a></li> Luego más abajo buscamos {include file='modules/m.cuenta_nick.tpl'} y debajo agregamos esto {include file='modules/m.cuenta_redes.tpl'} 4) Ahora vamos a templates/modules/ y creamos un archivo llamado m.cuenta_redes.tpl y en el alojaremos todo esto <div class="content-tabs redes" style="display:none"> <fieldset> <div class="alert-cuenta cuenta-9"></div> <h2 class="active rsocial">Redes Sociales:</h2> <div class="field"> <div id="redesociales"> <span class="fa fa-facebook Linkfa"></span> <strong>facebook.com/</strong> <input type="text" value="{$tsPerfil.p_socials.f}" maxlength="64" name="facebook" id="ft" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-twitter Linktw"></span> <strong>twitter.com/</strong> <input type="text" value="{$tsPerfil.p_socials.t}" maxlength="64" name="twitter" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-youtube Linkyo"></span> <strong>youtube.com/</strong> <input type="text" value="{$tsPerfil.p_socials.y}" maxlength="64" name="youtube" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="icon icon-instagram Linkins"></span> <strong>instagram.com/</strong> <input type="text" value="{$tsPerfil.p_socials.i}" maxlength="64" name="instagram" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-linkedin Linkli"></span> <strong>linkedin.com/</strong> <input type="text" value="{$tsPerfil.p_socials.l}" maxlength="64" name="linkedin" id="ft2" class="text cuenta-save-9"> </div> <div id="redesociales"> <span class="fa fa-pinterest Linkpi"></span> <strong>pinterest.com/</strong> <input type="text" value="{$tsPerfil.p_socials.p}" maxlength="64" name="pinterest" id="ft2" class="text cuenta-save-9"> </div> </div> <div class="buttons"> <input type="button" value="Guardar" onclick="cuenta.save(9)" class="mBtn btnOk"> </div> <div class="clearfix"></div> </div> 5) En extras.css al final de todo agregaremos ATENCIÓN ACÁ USTEDES PUEDEN MODIFICARLO PARA ADAPTARLO A SU THEME Y UTILIZA FONTAWESOME /* Cuenta */ h2.rsocial { margin: 0px; padding: 8px; font-size: 30px; color: #357997; line-height: 1em; text-align: center; font-family: 'Century gothic'; border-top: 1px dashed #145665; border-bottom: 1px dashed #145665; } #redesociales { width: 100%; padding: 8px; display: block; } #redesociales span { color: #EEE; padding: 6px; font-size: 20px; } #redesociales span.Linkfa, #redesociales span.Linkyo, #redesociales span.Linkins, #redesociales span.Linkli, #redesociales span.Linktw, #redesociales span.Linkpi { padding: 5px 15px; text-align:center; border-radius:3px; } #redesociales span.Linkfa { background:#3B5998;} #redesociales span.Linkyo{ background:#D14836;} #redesociales span.Linkins{ background:#14589E;} #redesociales span.Linkli{ background:#007FB1;} #redesociales span.Linktw{ background:#00ACED;} #redesociales span.Linkpi{ background:DarkRed;} #redesociales strong { color: #333; font-size: 20px; padding-left: 3px; font-weight: normal; text-shadow: 0px 0px 3px #888; text-transform: uppercase!important; } #redesociales input[type="text"] { float: right; color: #555; font-weight: bold; padding: 6px; width: 270px; font-size: 20px; margin-right: 18%; } @media screen and (max-width: 768px) { #redesociales strong { display: none!important; } #redesociales input[type="text"] { float: both; color: #555; font-weight: bold; padding: 6px; width: 270px; font-size: 20px; margin-left: -18%; } } 6) Ahora volvemos a templates/modules/ y crearemos otro archivo llamado m.redes_sociales.tpl <div id="redes-perfil"> {if $tsInfo.p_socials.f} <a target="_blank" href="http://www.facebook.com/{$tsInfo.p_socials.f}" class="qtip" title="{$tsInfo.p_socials.f}"> <span class="fa fa-facebook Linkfa"></span> </a> {/if} {if $tsInfo.p_socials.t} <a target="_blank" href="http://www.twitter.com/{$tsInfo.p_socials.t}" class="qtip" title="@{$tsInfo.p_socials.t}"> <span class="fa fa-twitter Linktw"></span> </a> {/if} {if $tsInfo.p_socials.y} <a target="_blank" href="http://www.youtube.com/{$tsInfo.p_socials.y}" class="qtip" title="{$tsInfo.p_socials.y}"> <span class="fa fa-youtube Linkyo"></span> </a> {/if} {if $tsInfo.p_socials.i} <a target="_blank" href="http://www.instagram.com/{$tsInfo.p_socials.i}" class="qtip" title="@{$tsInfo.p_socials.i}"> <span class="fa fa-instagram Linkins"></span> </a> {/if} {if $tsInfo.p_socials.l} <a target="_blank" href="http://www.linkedin.com/{$tsInfo.p_socials.l}" class="qtip" title="{$tsInfo.p_socials.l}"> <span class="fa fa-linkedin Linkli"></span> </a> {/if} {if $tsInfo.p_socials.p} <a target="_blank" href="http://www.pinterest.com/{$tsInfo.p_socials.p}" class="qtip" title="{$tsInfo.p_socials.p}"> <span class="fa fa-pinterest Linkpi"></span> </a> {/if} </div> 7) y por último agregan {include file='modules/m.redes_sociales.tpl'} en m.perfil_headinfo o en donde ustedes quieran..
  20. Videmax

    MOD Risus Mobil 2.5 ayuda

    instale el risus mobil 2.5 de @Kmario19 tengo este problema, dejo imagen: mi version mobil es : https://m.compartinga.com/ cuando estoy en la version mobil y quiero pasar a la version de escritorio me sale asi https://www.compartinga.comhttp//m.compartinga.com/?mobile=desktop que estara mal ?
  21. ¿Cual es la diferencia con el primero? Que le puedes dar color a tu gusto, esta es la página http://colorhunt.co/ que recomiendo para usar los colores hexadecimal.. 1- Será el fix del primero 2- Será el comienzo de la versión 2 Bueno para usar este mod debe tener el primero 1 - Luego deben agregar estos pasos.. Son el fix del primer mod 4a) Buscar en inc/php/admin.php // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } /** NOTICIAS **/ y reemplazarla por // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } }elseif($action == 'politicas'){ // GUARDAR CONTROLES if(!empty($_POST['mensajes'])) { if($tsAdmin->savePoliticas()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/politicas?save=true'); } /** NOTICIAS **/ PASO OLVIDADO: 5a) Ir a m.admin_sidemenu.tpl y buscar <li id="a_creditos"><span class="cat-title"><a href="{$tsConfig.url}/admin/creditos">Soporte y Créditos</a></span></li> y debajo pegar esto <li id="a_main"><span class="cat-title"><a href="{$tsConfig.url}/admin/politicas">Configuración de cookies</a></span></li> Los que tienen el smarty 3.1.31 NO usen este archivo... esto es más para lo que usan {literal} ..... {/literal} 2 - Bien ahora comenzamos para la versión 2 de Mod de políticas de cookies. A - Ejecute esta consulta ALTER TABLE `w_politicas` ADD `banner` VARCHAR(6) NOT NULL AFTER `colores`, ADD `bannert` VARCHAR(6) NOT NULL AFTER `banner`, ADD `boton` VARCHAR(6) NOT NULL AFTER `bannert`, ADD `botont` VARCHAR(6) NOT NULL AFTER `boton`; B - Luego en inc/class/c.admin.php reemplazan toda la función por esta function savePoliticas() { global $tsCore; // $p = array( /** Configuraciones de politicas **/ 'mensajes' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mensajes'])), 'gracias' => $tsCore->setSecure($tsCore->parseBadWords($_POST['gracias'])), 'mas' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mas'])), 'cookies_url' => $tsCore->setSecure($tsCore->parseBadWords($_POST['cookies_url'])), 'posicion' => $tsCore->setSecure($_POST['posicion']), 'temas' => $tsCore->setSecure($_POST['temas']), 'colores' => $tsCore->setSecure($_POST['colores']), 'banner' => $tsCore->setSecure($tsCore->parseBadWords($_POST['banner'])), 'bannert' => $tsCore->setSecure($tsCore->parseBadWords($_POST['bannert'])), 'boton' => $tsCore->setSecure($tsCore->parseBadWords($_POST['boton'])), 'botont' => $tsCore->setSecure($tsCore->parseBadWords($_POST['botont'])), ); // UPDATE if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_politicas` SET `mensajes` = \'' . $p['mensajes'] . '\', `gracias` = \'' . $p['gracias'] . '\', `mas` = \'' . $p['mas'] . '\', `cookies_url` = \'' . $p['cookies_url'] . '\', `posicion` = \'' . $p['posicion'] . '\', `temas` = \'' . $p['temas'] . '\', `colores` = \'' . $p['colores'] . '\',`banner` = \'' . $p['banner'] . '\', `bannert` = \'' . $p['bannert'] . '\', `boton` = \'' . $p['boton'] . '\', `botont` = \'' . $p['botont'] . '\' WHERE `id` = \'1\'')) return true; else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); } C - Ahora en templates/admin_mods/m.admin_politicas.tpl y reemplazan por esto D - Ahora reemplazan templates/sections/politicas.tpl (CON {literal} .... {/literal}) Ahora esta es SIN ({literal} ... {/literal})
  22. Todo tomado desde la web https://cookieconsent.insites.com/ es muy buena es mi punto de vista! Para instalar el super mod de políticas de cookies deben realizar los siguientes pasos. 1) Ejecute esta consulta en su phpmyadmin CREATE TABLE `w_politicas` ( `id` int(11) NOT NULL, `mensajes` varchar(500) NOT NULL, `gracias` varchar(200) NOT NULL, `mas` varchar(200) NOT NULL, `cookies_url` varchar(200) NOT NULL, `posicion` int(1) NOT NULL, `temas` int(1) NOT NULL, `colores` int(1) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `w_politicas` (`id`, `mensajes`, `gracias`, `mas`, `cookies_url`, `posicion`, `temas`, `colores`) VALUES (1, 'Este sitio web utiliza cookies para garantizar que obtenga la mejor experiencia en nuestro sitio web.', 'Gracias', 'Saber más', 'pages/privacidad/', 0, 1, 15); ALTER TABLE `w_politicas` ADD PRIMARY KEY (`id`); ALTER TABLE `w_politicas` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;COMMIT; 2) Busque en la raíz header.php la línea // Configuraciones $smarty->assign('tsConfig',$tsCore->settings); y debajo agregamos esto // Politicas $smarty->assign('tsPoliticas', $tsCore->cookies); 3) Luego buscamos en inc/class/c.core.php e iremos a la línea // CARGANDO CONFIGURACIONES $this->settings = $this->getSettings(); y debajo agregamos // CARGAMOS LAS POLITCAS $this->cookies = $this->getPoliticas(); en el mismo archivo más abajo buscamos /* getSettings() :: CARGA DESDE LA DB LAS CONFIGURACIONES DEL SITIO */ function getSettings() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM w_configuracion'); return db_exec('fetch_assoc', $query); } y debajo pegamos /* getPoliticas() :: Miguel92 */ function getPoliticas() { $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT * FROM w_politicas'); return db_exec('fetch_assoc', $query); } 4) En el mismo directorio abriremos c.admin.php y antes de la última llave } agregamos esto: /* savePoliticas() */ function savePoliticas() { global $tsCore; // $p = array( /** Configuraciones de politicas **/ 'mensajes' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mensajes'])), 'gracias' => $tsCore->setSecure($tsCore->parseBadWords($_POST['gracias'])), 'mas' => $tsCore->setSecure($tsCore->parseBadWords($_POST['mas'])), 'cookies_url' => $tsCore->setSecure($tsCore->parseBadWords($_POST['cookies_url'])), 'posicion' => $tsCore->setSecure($_POST['posicion']), 'temas' => $tsCore->setSecure($_POST['temas']), 'colores' => $tsCore->setSecure($_POST['colores']), ); // UPDATE if (db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE `w_politicas` SET `mensajes` = \'' . $p['mensajes'] . '\', `gracias` = \'' . $p['gracias'] . '\', `mas` = \'' . $p['mas'] . '\', `cookies_url` = \'' . $p['cookies_url'] . '\', `posicion` = \'' . $p['posicion'] . '\', `temas` = \'' . $p['temas'] . '\', `colores` = \'' . $p['colores'] . '\' WHERE `id` = \'1\'')) return true; else exit( show_error('Error al ejecutar la consulta de la línea '.__LINE__.' de '.__FILE__.'.', 'db') ); } 4a) Buscar en inc/php/admin.php // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } /** NOTICIAS **/ y reemplazarla por // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } }elseif($action == 'politicas'){ // GUARDAR CONTROLES if(!empty($_POST['mensajes'])) { if($tsAdmin->savePoliticas()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/politicas?save=true'); } /** NOTICIAS **/ 5) Ahora buscamos en themes/TU_THEME/templates/t.admin.tpl y arriba del último {/if} pegamos esto {elseif $tsAction == 'politicas'} {include file='admin_mods/m.admin_politicas.tpl'} PASO OLVIDADO: 5a) Ir a m.admin_sidemenu.tpl y buscar <li id="a_creditos"><span class="cat-title"><a href="{$tsConfig.url}/admin/creditos">Soporte y Créditos</a></span></li> y debajo pegar esto <li id="a_main"><span class="cat-title"><a href="{$tsConfig.url}/admin/politicas">Configuración de cookies</a></span></li> 6) Ahora buscamos en themes/TU_THEME/templates/sections/main_footer.tpl y arriba de </div> </body> </html> pegamos esto {include file='sections/politicas.tpl'} 7) Descargan los archivos y lo colocan en sus respectivas carpetas cookieconsent.min.css --> en themes/TU_THEME/css cookieconsent.min.js --> en themes/TU_THEME/js m.admin_politicas.tpl --> en themes/TU_THEME/templates/admin_mods politicas.tpl --> en themes/TU_THEME/templates/sections Descargar archivos por mega -> PINCHA AQUÍ <- Hay una demo solo una muestra en http://miguel92.eshost.com.ar/ y tambien la pueden ver todo lo que se puede hacer en demos En mi web lo veo asi
  23. Hola a todos comparto este mod para que puedan ver el fondo de perfil de usuario en su post y tambien su cabecera de perfil en el VCard. Primero debemos tener el mod de Tutan instalado Ahora abrimos c.posts.php que esta en inc/class y buscamos /* getSideData($array) */ function getAutor($user_id){ global $tsUser, $tsCore; // DATOS DEL AUTOR $query = mysql_query('SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.p_socials, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1'); $data = mysql_fetch_assoc($query); Reemplazamos por /* getSideData($array) */ function getAutor($user_id){ global $tsUser, $tsCore; // DATOS DEL AUTOR $query = mysql_query('SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.p_socials, p.p_fondo, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1'); $data = mysql_fetch_assoc($query); Guardamos y ahora abrimos c.user.php en la misma carpeta y buscamos // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_lastactive, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_mensaje, p.p_sitio FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); Reemplazamos por // INFORMACION GENERAL $query = mysql_query('SELECT u.user_id, u.user_name, u.user_lastactive, u.user_baneado, p.user_sexo, p.user_pais, p.p_fondoper, p.p_nombre, p.p_mensaje, p.p_sitio FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\''); $data = mysql_fetch_assoc($query); Guardamos y ahora abrimos t.posts.tpl que está en templates y despues de {include file='sections/main_header.tpl'} Agregamos {if $tsAutor.p_fondo != ''} <body style="background-image:url('{$tsAutor.p_fondo}');background-repeat: repeat;background-position: center"> {/if} Guardamos y ahora abrimos p.live.vcard.tpl que está en templates/t.php_files y buscamos <div class="hovercard-inner"> <div class="bd"> <a href="{$tsConfig.url}/perfil/{$tsData.user_name}" class="profile-pic"><img src="{$tsConfig.url}/files/avatar/{$tsData.user_id}_50.jpg" class="avatar" /></a> <div class="bio"> Reemplazamos por: <div class="hovercard-inner"> <div class="bd"> {if $tsData.p_fondoper != ''}<img src="{$tsData.p_fondoper}" style="height:75px;width:278px;">{/if} <a {if $tsData.p_fondoper != ''}style="margin: -20px 10px;"{/if} href="{$tsConfig.url}/perfil/{$tsData.user_name}" class="profile-pic"><img src="{$tsConfig.url}/files/avatar/{$tsData.user_id}_50.jpg" class="avatar" /></a> <div class="bio" {if $tsData.p_fondoper != ''}style="margin-left: 70px;"{/if}> Y eso es todo... les quedará algo como esto: Para el que no tenga cabecera de perfil se verá normalmente Y el fondo de perfil que se verá en los posts.... Y eso es todo espero que les haya gustado les recuerdo que tienen que instalar el mod de de tutan para que pueda previsualizarse las imagenes: Nos vemos en otro mod en p.live.vcard reemplazamos por esto: <div class="hovercard-inner"> <div class="bd"> {if $tsData.p_fondoper != ''}<img src="{$tsData.p_fondoper}" style="height:75px;width:278px;">{/if} <a {if $tsData.p_fondoper != ''}style="margin: -20px 10px;"{/if} href="{$tsConfig.url}/perfil/{$tsData.user_name}" class="profile-pic"><img src="{$tsConfig.url}/files/avatar/{$tsData.user_id}_120.jpg" class="avatar" {if $tsData.p_fondoper != ''}style="height:60px;width:60px;"{/if}/></a> <div class="bio" {if $tsData.p_fondoper != ''}style="margin-left: 80px;"{/if}> Disculpen no lo había actualizado correctamente, que algun mod edite el tema
  24. 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.
  25. Hola amigos,les dejo una manera sencilla de tener el modulo,para poder descargar y convertir vídeos de youtube.Le he puesto que el resultado se abra en la misma ventana del modulo,ya ustedes lo modifican a su gusto.Saludos Instalación: 1- Suben la carpeta vídeos al raíz de la web 2- Ponen el include {include file='modules/m.descargar_videos.tpl'} donde quieran,en las imágenes esta puesto en t.home.tpl 3- Suben el archivo m.descargar_videos.tpl a themes/TUTHEME/templates/modules/ y listo. Pass:Tronlar https://mega.nz/#!MIg3xSqa!byPnLbVQkb-dtF8VomENPMyNVjVH-f-HULbS4shA4Aw
×