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

aperpen

Ágata
  • Contenido

    2057
  • Mensajes en Chat

    16
  • Registrado

  • Última Visita

Reputación en la Comunidad

1278 Diamante

Sobre aperpen

  • Rango
    Uno más Uno

Métodos de contacto

  • Sitio web
    http://aperpen.com

Visitantes recientes en el perfil

6266 visitas al perfil
  1. Hola amigos, les traigo un MOD que consiste en respuestas en los comentarios como en T!. El MOD está hecho para los comentarios que tengan el mismo diseño que la v4, no necesariamente tiene que ser el tema default ¿Que trae el MOD? - Respuestas en comentarios. - Citas en respuestas de otros comentarios. - Automatizado con JS 1) Abren el funciones.js de themes/TUTEMA/js y buscan: case '1': //OK $("#nuevos").slideUp(1); $('#preview').remove(); /*textarea.attr('title', 'Escribir un comentario...').val(''); onblur_input(textarea);*/ $('#nuevos').html(h.substring(3)).slideDown('slow', function () { $('#no-comments').hide('slow'); getUrls(gget('postid')); $('.miComentario').html('<div class="emptyData">Tu comentario fue agregado correctamente </div>'); }); // SUMAMOS var ncomments = parseInt($('#ncomments').text()); $('#ncomments').text(ncomments + 1); //$('#btnsComment').attr({'disabled':''}); // POR SI HABIA ERROR //$('.miComentario .error').html(''); break; } $('#loading').fadeOut(350); // $('.miComentario #gif_cargando').hide(); mydialog.close(); } }); }, Abajo añaden: resp: function(id){ $('#'+id).removeAttr('style'); var textarea = $('#bodys_comm_'+cid); textarea.focus(); }, nuevos: function(mostrar_resp, comentarionum, cid){ // EVITAR FLOOD $('#btnssComment').attr({'disabled':'disabled'}); // var textarea = $('#bodys_comm_'+cid); var text = textarea.val(); // VACIO o DEFAULT if(text == '' || text == textarea.attr('title')){ textarea.focus(); $('#btnssComment').attr({'disabled':''}); return; }else if(text.length > 1500){ alert("Tu comentario no puede ser mayor a 1500 caracteres."); textarea.focus(); $('#btnssComment').attr({'disabled':''}); return; } // IMAGEN $('.resp #gif_cargando').show(); var auser = $('#ausers_post').val(); var respuesta = $('#respuesta_'+cid).val(); $('#loading').fadeIn(250); $.ajax({ type: 'POST', url: global_data.url + '/comentario-agregar.php', data: 'comentario=' + encodeURIComponent(text) + '&postid=' + gget('postid') + '&mostrar_resp=' + mostrar_resp + '&auser=' + auser + '&respuesta=' + respuesta, success: function(h){ switch(h.charAt(0)){ case '0': //Error $('.resp .error').html(h.substring(3)).show('slow'); $('#btnssComment').attr({'disabled':''}); break; case '1': //OK $("#nuevoss_"+cid).slideUp(1); $('#preview').remove(); /*textarea.attr('title', 'Escribir un comentario...').val(''); onblur_input(textarea);*/ $('#nuevoss_'+cid).html(h.substring(3)).slideDown('slow', function () { $('.especial3').attr('class', 'especial1'); $('#nuevoss_'+cid+' .especial1 .comentario-post .comment-box').attr('style', 'width: 698px!important;'); $('#no-comments').hide('slow'); getUrls(gget('postid')); $('.resp').attr("style", "margin-left: 131px!important; width: 701px!important;"); $('.resp').html('<div class="emptyData">Tu comentario fue agregado correctamente </div>'); }); // SUMAMOS var ncomments = parseInt($('#ncomments').text()); $('#ncomments').text(ncomments + 1); //$('#btnsComment').attr({'disabled':''}); // POR SI HABIA ERROR //$('.miComentario .error').html(''); break; } $('#loading').fadeOut(350); // $('.resp #gif_cargando').hide(); mydialog.close(); } }); }, 2) Abren el c.posts.php de inc/class y buscan: c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' Y al lado añaden: AND c.c_resp = \'0\' Quedaría algo asi: c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_post_id = \''.(int)$post_id.'\' AND c.c_resp = \'0\' Luego buscan: $return['data'][$i]['votado'] = $votado; Abajo añaden: $return['data'][$i]['respuestas'] = $this->getRespuestas((int)$comment['cid']); En ese archivo busca: function getLastComentarios(){ global $tsUser, $tsCore; // $query = mysql_query('SELECT cm.cid, cm.c_status, u.user_name, u.user_activo, u.user_baneado, p.post_id, p.post_title, p.post_status, c.c_seo FROM p_comentarios AS cm LEFT JOIN u_miembros AS u ON cm.c_user = u.user_id LEFT JOIN p_posts AS p ON p.post_id = cm.c_post_id LEFT JOIN p_categorias AS c ON c.cid = p.post_category '.($tsUser->is_admod && $tsCore->settings['c_see_mod'] == 1 ? '' : 'WHERE p.post_status = \'0\' AND cm.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY cid DESC LIMIT 10'); if(!$query) die(mysql_error()); $data = result_array($query); // return $data; } Abajo añade: function getRespuestas($comment_id){ global $tsCore, $tsUser; // $start = $tsCore->setPageLimit($tsCore->settings['c_max_com']); $query = mysql_query('SELECT u.user_name, u.user_activo, u.user_baneado, c.* FROM u_miembros AS u LEFT JOIN p_comentarios AS c ON u.user_id = c.c_user WHERE c.c_resp = \''.(int)$comment_id.'\' '.($tsUser->is_admod ? '' : 'AND c.c_status = \'0\' AND u.user_activo = \'1\' && u.user_baneado = \'0\'').' ORDER BY c.cid LIMIT '.$start); // COMENTARIOS TOTALES $return['num'] = mysql_num_rows(mysql_query('SELECT cid FROM p_comentarios WHERE c_resp = \''.(int)$comment_id.'\' '.($tsUser->is_admod ? '' : 'AND c_status = \'0\'').'')); // $comments = result_array($query); // PARSEAR EL BBCODE $i = 0; foreach($comments as $comment){ // CON ESTE IF NOS AHORRAMOS CONSULTAS if($comment['c_votos'] != 0){ $query = mysql_query('SELECT voto_id FROM p_votos WHERE tid = \''.(int)$comment['cid'].'\' AND tuser = \''.$tsUser->uid.'\' AND type = \'2\' LIMIT 1'); $votado = mysql_num_rows($query); } else $votado = 0; // BLOQUEADO $return['block'] = mysql_num_rows(mysql_query('SELECT bid, b_user, b_auser FROM `u_bloqueos` WHERE b_user = \''.(int)$comment['c_user'].'\' AND b_auser = \''.$tsUser->uid.'\' LIMIT 1')); // $return['data'][$i] = $comment; $return['data'][$i]['votado'] = $votado; $return['data'][$i]['c_html'] = $tsCore->parseBadWords($tsCore->parseBBCode($return['data'][$i]['c_body']), true); $i++; } // return $return; } Para acabar en ese archivo busca: if(mysql_query('INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\')')) { Y lo reemplazas por: if(mysql_query('INSERT INTO `p_comentarios` (`c_post_id`, `c_user`, `c_date`, `c_body`, `c_ip`, `c_resp`) VALUES (\''.(int)$post_id.'\', \''.$tsUser->uid.'\', \''.$fecha.'\', \''.$comentario.'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.(int)$_POST['respuesta'].'\')')) { 3) Hacen esta SQL en su BD: ALTER TABLE `p_comentarios` ADD `c_resp` INT( 11 ) NOT NULL DEFAULT '0'; 4) Por último reemplacen el p.comentario.ajax.tpl de themes/TUTEMA/t.php_files por este: https://www.mediafire.com/?aj6foqw23lyqg8f Hagan backup de su archivo original primero! Caps: Demo: http://programu.net/posts/phpost/128/-MOD-Respuestas-en-comentarios-como-en-T-v4.html#comments User: demo Pass: demo1234 Saludos
  2. [MOD] Tienda v2

    Hola amigos, hace ya mucho tiempo les traje una tienda automática, cuya administración era muy pobre. Como he visto que bastante gente lo usaba he desarrollado una v2 mas manejable. ¿Que tiene? - Administración completa de los productos de la tienda - Sección tienda - Instalación más sencilla que la v1 - Código más optimizado Próximamente más productos 1) Suben todos estos archivos como se indica: https://www.mediafire.com/?8rx9r8mk3ou7fa7 m.admin_tienda.tpl -> themes/TUTEMA/templates/admin_mods m.tienda.tpl -> themes/TUTEMA/templates/modules t.tienda.tpl -> themes/TUTEMA/templates tienda.php -> inc/php c.tienda.php -> inc/class 2) Hacen esta SQL en su BD: CREATE TABLE IF NOT EXISTS `t_productos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` int(1) NOT NULL, `precio` int(4) NOT NULL, `obj` int(5) NOT NULL DEFAULT '0', `obj_2` int(5) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 3) Abren el t.admin.tpl de themes/TUTEMA/templates y buscan: {elseif $tsAction == 'rangos'} {include file='admin_mods/m.admin_rangos.tpl'} Y abajo agregan: {elseif $tsAction == 'tienda'} {include file='admin_mods/m.admin_tienda.tpl'} 4) Abren el admin.php de inc/php y buscan: } elseif($action == 'configs'){ // GUARDAR CONFIGURACION if(!empty($_POST['titulo'])) { if($tsAdmin->saveConfig()) $tsCore->redirectTo($tsCore->settings['url'].'/admin/configs?save=true'); } Y justo debajo añaden: /** TIENDA **/ } elseif($action == 'tienda'){ include('../class/c.tienda.php'); $tsTienda = new tsTienda; if(empty($act)){ $productos = $tsTienda->getProductos(); if(is_array($productos)) $smarty->assign("tsProductos", $productos); else $smarty->assign("tsError", $productos); }elseif($act == 'nuevo' && !empty($_POST['type'])){ $producto = $tsTienda->nuevoProducto(); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else $smarty->assign("tsError", $producto); } elseif($act == 'editar'){ if(!empty($_POST['type'])){ $producto = $tsTienda->editProducto((int)$_GET['id']); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else{ $smarty->assign("tsError", $producto); $producto = $tsTienda->getProducto((int)$_GET['id']); if(is_array($producto)) $smarty->assign("tsProducto",$producto); else $smarty->assign("tsError", $producto); } } else{ $producto = $tsTienda->getProducto((int)$_GET['id']); if(is_array($producto)) $smarty->assign("tsProducto",$producto); else $smarty->assign("tsError", $producto); } } elseif($act == 'borrar'){ $producto = $tsTienda->delProducto(); if($producto == 1) $tsCore->redirectTo($tsCore->settings['url'].'/admin/tienda?save=true'); else $smarty->assign("tsError", $producto); } 5) Abren el c.user.php de inc/class y buscan: // NOMBRE $this->nick = $this->info['user_name']; $this->uid = $this->info['user_id']; $this->is_banned = $this->info['user_baneado']; Abajo añaden: $this->puntos = $this->info['user_puntos']; 6) Abren el m.admin_sidemenu.tpl de themes/TUTEMA/templates/admin_mods y buscan: <li id="a_cats"><span class="cat-title"><a href="{$tsConfig.url}/admin/cats">Categor&iacute;as</a></span></li> Abajo añaden: <li id="a_ads"><span class="cat-title"><a href="{$tsConfig.url}/admin/tienda">Tienda</a></span></li> 7) Para acabar, abren el head_menu.tpl de themes/TUTEMA/templates/sections y buscan: <li class="tabbed {if $tsPage == 'tops'}here{/if}" id="tabbedtops"> <a title="Ir a TOPs" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/top/">TOPs <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y abajo añaden: <li class="tabbed {if $tsPage == 'tienda'}here{/if}" id="tabbedtops"> <a title="Ir a Tienda" onclick="menu('tops', this.href); return false;" href="{$tsConfig.url}/tienda/">Tienda <img alt="Drop Down" src="{$tsConfig.tema.t_url}/images/arrowdown.png"></a> </li> Y listo!! Caps: Demo: http://programu.net/tienda/ User: demo Pass: demo1234 Espero que les guste P.D: Proximamente nuevos productos, si desean algún producto en concreto no duden en pedirlo
×