Seleccionar idioma:
Realizar Donación - Mods Premium - Portfolio



Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.
* Bloque/modulo de mensaje diario al azar, o algo así, existe?
  Leído 3665 veces
* Viendo el foro
 0 Usuarios y 1 Visitante están viendo este foro.


*
Dic 18 2013


Hace un rato en nuestro foro uno me comentaba que se encontró de casualidad con un artículo que le pareció muy interesante... pero que nunca lo hubiese encontrado si lo buscaba (otro le pasó el enlace directo)...
Y comentó que le parecía estuviera bueno algo que sirviera para mostrar un tema al azar por día, quizá pudiendo seleccionar desde qué FOROS sale (como para evitar que aparezcan tonteras)... y así los miembros se enteraban de cosas (sin buscarlas)

Existe algún bloque/modulo de adk portal que haga algo así?

Por otro lado... cuál es la diferencia entre bloque y modulo? jejeje


2.0.12

Mensajes: 1070

Ver Perfil  Email 

En línea

*
Dic 19 2013


Los bloques son simplemente los que van en el portal, no tienen casi ninguna configuracion previa. En cambio los modulos son extensiones del mismo portal, en la administracion tenes los modulos que ya te vienen por defecto. Son aquellos que ya modifican alguna estructura mas del portal permitiendo configurarlo etc etc.

COn respecto al bloque que pedis. Podriamos usar el bloque de noticias automaticas, que tenga como limite un mensaje... y cambiar el order by RANDOM() en la consulta.

despues de cambiar las configuraciones que te dije, deberias buscar en el Subs-adkblocks.php
Código: [Seleccionar]
ORDER BY m.id_topic DESC LIMIT {int:uno}, {int:limit} ',
array(
'limit' => $limit_query,

y reemplazar por
Código: [Seleccionar]
ORDER BY RAND() LIMIT {int:uno}, {int:limit} ',
array(
'limit' => $limit_query,

ADK Portal 3.0.2
2.0.11
www.smfpersonal.net
#1

Mensajes: 8631

Ver Perfil  SMFPersonal 

En línea

*
Dic 19 2013


Buenísimo! Muchas gracias por la explicación y ayuda lucas, apenas encuentre un tiempo me pongo a probar a ver qué sale...

2.0.12
#2

Mensajes: 1070

Ver Perfil  Email 

En línea

*
Dic 26 2013


Listo, encontré algo de tiempo y me puse a probar...

Lo que hice fue duplicar el bloque en el el Subs-adkblocks.php, quedó (hasta ahora), algo así:

Código: [Seleccionar]
function adk_temas_al_azar($array = '', $limit_body = '', $limit_query = '')
{

global $context, $scripturl, $txt, $settings, $smcFunc, $boardurl, $adkportal;
global $modSettings;

if(empty($array))
$array = explode(',',$adkportal['auto_news_id_boards']);
else
$array = explode(',',$array);

if(empty($limit_body))
$limit_body = $adkportal['auto_news_limit_body'];

if(empty($limit_query))
$limit_query = $adkportal['auto_news_limit_topics'];

$context['start'] = isset($_REQUEST['adk']) ? !empty($_REQUEST['start']) ? (int)$_REQUEST['start'] : 0 : 0;
   
$sql = $smcFunc['db_query']('','
SELECT COUNT(*) AS total
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
WHERE b.id_board AND {query_wanna_see_board}
');

$row = $smcFunc['db_fetch_assoc']($sql);
$smcFunc['db_free_result']($sql);
   
$total = $row['total'];
$context['page_index'] = constructPageIndex($scripturl . '?adk', $context['start'], $total, $limit_query);

$sql = $smcFunc['db_query']('','
SELECT m.id_topic, m.poster_time, m.id_member, m.poster_name,
m.subject, m.body, m.icon, mg.online_color, t.num_replies, t.num_views, mem.real_name, mem.avatar,
IFNULL(a.id_attach, 0) AS id_attach, a.filename, a.attachment_type
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = IF(mem.id_group = 0, mem.id_post_group, mem.id_group))
INNER JOIN {db_prefix}topics AS t ON (t.id_first_msg = m.id_msg)
INNER JOIN {db_prefix}boards AS b ON (b.id_board = m.id_board)
WHERE m.id_board AND {query_wanna_see_board}
ORDER BY RAND() DESC LIMIT 1 '
);


$img = 'plugin.png';

$topics = array();

while($row = $smcFunc['db_fetch_assoc']($sql))
{
if(!empty($row['id_member']))
$member = '<a href="'.$scripturl.'?action=profile;u='.$row['id_member'].'" style="color: '.$row['online_color'].';">'.$row['real_name'].'</a>';
else
$member = $row['poster_name'];


$topics[] = array(
'v' => $row['num_views'],
'r' => $row['num_replies'],
'avatar' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? '<img width="60" height="60" src="' . (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) . '" alt="" border="0" />' : '') : (stristr($row['avatar'], 'http://') ? '<img width="60" height="60" src="' . $row['avatar'] . '" alt="" border="0" />' : '<img width="60" height="60" src="' . $modSettings['avatar_url'] . '/' . $smcFunc['htmlspecialchars']($row['avatar']) . '" alt="" border="0" />'),
'id_topic' => $row['id_topic'],
'img' => '<img style="vertical-align: middle;" src="'.$settings['images_url'].'/post/'.$row['icon'].'.gif" alt="" />',
'href' => $row['subject'],
'time' => timeformat($row['poster_time']),
'member' => $member,
'body' => str_replace('<img ','<img style="max-width: 350px;" ',parse_bbc(substr($row['body'],0,200)))
);
}
//$averiguar = $avatar2,1,4);
$smcFunc['db_free_result']($sql);


foreach($topics AS $topic)
{
$title = '<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0"><b>'.$topic['href'].'</b></a>';

echo'¿Ya leíste el tema '.$title.'?';

echo'
<div class="adk_padding_8">
'.$topic['body'].''. $limit_body. '
</div>';

echo'
<div class="smalltext" style="margin-bottom:10px; border-bottom: 1px solid #c5c5c5; border-right: 1px solid #c5c5c5;">
<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0"><strong>'.$txt['learn_more'].'...</strong></a>
</div>';

}

}

Es el adk_aportes_automaticos simplificado, y con algunos valores harcodeados....


SOLUCIONADO ABAJO
El tema es que en el index.template quiero que aparezca acá:

Código: [Seleccionar]
function template_body_above()
{
global $context, $settings, $options, $scripturl, $txt, $modSettings;
echo '
<div id="bodybg">
      <div id="superwrapper">
  <div id="alazar">
' . adk_temas_al_azar() . '
  </div>
<div id="wrapper">
';/*

El problema es que lo mete... pero NO ahí!?
Y el código que suelta la función aparece al comienzo de ese echo... con lo que claro, me queda afuera de todo y se desarma el diseño...


Listo, consultando me enteré que era por los echo, que había que usar returns... y como eran varios... lo armé tal que:

Código: [Seleccionar]
$vamosss = '¿Ya leíste el tema '.$title.'?';

$vamosss .= '
<div class="adk_padding_8">
'.$topic['body'].''. $limit_body. '
</div>';

$vamosss .= '
<div class="smalltext" style="margin-bottom:10px; border-bottom: 1px solid #c5c5c5; border-right: 1px solid #c5c5c5;">
<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0"><strong>'.$txt['learn_more'].'...</strong></a>
</div>';

return $vamosss;

Consulta 1: Por otro lado... como sólo uso pocos datos (creo que con el título, enlace y un pedazo del contenido me alcanza...)... le podría quitar cosas que no use del query SQL y que así repercuta menos en el servidor?
Por qué pasa eso? cómo se lo podría evitar?

Consulta 2: Por otro lado... en qué parte le podré indicar un array de foros donde quiero que tome los temas al azar?
Por lo que pude entender, los está tomando desde $adkportal['auto_news_id_boards']... pero necesitaría ponerle otros distintos que para el auto news (son menos foros, de contenidos más tipo "biblioteca")


SOLUCIONADO ABAJO Otra consulta más... le quise mejorar un poco el enlace, para que mostrara el nombre y fecha en el title... pero intenté con

Código: [Seleccionar]
$title = '<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0" title="' . $txt['by'] . ' ' .$topic['member'] . ' - ' . $topic['time'] . '"><b>'.$topic['href'].'</b></a>';

$vamosss = '¿Ya leíste el tema '.$title.'?';

Y claro, no va... hay alguna variable similar a $topic['member'] pero que sólo de el nombre, sin enlace al perfil, etc?

Jua, disculpas... me surgen dudas y las voy tirando como si nada... momentos después me di cuenta que eso está construido un poco más arriba en el código... ahora veo de modificarlo!


Consulta 3:
No se si hice algo mal en estos cambios... pero ahora la paginación del foro se me ha visto afectada por completo... vean:



Es como si en todos lados mostrara la paginación del portal!
Entienden? por ej esa imagen, es dentro de un tema... como mucho debería tener 1 o 2 números o ninguno incluso... pero ahora me aparecen del 1 al 988 en toooodos lados
Qué habré hecho! jua... :(

Ya me pondré a analizar la función de tema al azar, porque la saco y anda bien... debe estar mezclando cosas con la original!

Si le saco la línea
Código: [Seleccionar]
$context['page_index'] = constructPageIndex($scripturl . '?adk', $context['start'], $total, $limit_query);Ya estaría?
SI! parece que si... jejeje

2.0.12
#3

Mensajes: 1070

Ver Perfil  Email 

« Última Modificación: Diciembre 27, 2013, 08:36:13 am por luuuciano »
En línea

*
Dic 28 2013


ammm resumiendo... que es lo que falta? funciona ya?

ADK Portal 3.0.2
2.0.11
www.smfpersonal.net
#4

Mensajes: 8631

Ver Perfil  SMFPersonal 

En línea

*
Dic 28 2013


Jajjaj, si, funcionar funciona... pero, por un lado quería terminar "el viaje" armando algún tutorial o algo así... porque usé un deslizante al lado del foro que queda bastante piola y quizá a otros les guste usarlo...
Y de hecho he notado que en el foro lo están usando... van a visitar temas "viejos", que no conocían


Pero... en si, creo que para terminarlo habría que encontrar la forma de optimizar esa función... o sea, hacer una más simple basada en la otra, o sacarle lo que le sobra o hacerla simple si es más simple (?)

Yo por ej estoy usando nomás el Título, Autor, Fecha, Enlace y Contenido del tema... y si no me equivoco nada más...

Y... por el otro lado, ahhh si... encontrar una forma de especificar los foros de donde sacar los temas al azar (separados de la news automatic)...
A eso yo lo había pensado directamente armando un array dentro de la función (el que siga el tutorial nada más tendría que fijarse los números del foro y crear/editar el array)...

Esas son cosas que no se hacer, se me escapan al poco entendimiento de PHP que tengo... de eso último hice algunas pruebas y no me anduvo para nada...


Hasta ahora la función la tengo así:
Código: [Seleccionar]
function adk_temas_al_azar($array = '', $limit_body = '', $limit_query = '')
{

global $context, $scripturl, $txt, $settings, $smcFunc, $boardurl, $adkportal;
global $modSettings;

if(empty($array))
$array = explode(',',$adkportal['auto_news_id_boards']);
else
$array = explode(',',$array);

if(empty($limit_body))
$limit_body = $adkportal['auto_news_limit_body'];

if(empty($limit_query))
$limit_query = $adkportal['auto_news_limit_topics'];

$context['start'] = isset($_REQUEST['adk']) ? !empty($_REQUEST['start']) ? (int)$_REQUEST['start'] : 0 : 0;

$sql = $smcFunc['db_query']('','
SELECT COUNT(*) AS total
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
WHERE b.id_board AND {query_wanna_see_board}
');

$row = $smcFunc['db_fetch_assoc']($sql);
$smcFunc['db_free_result']($sql);
   
$total = $row['total'];
// $context['page_index'] = constructPageIndex($scripturl . '?adk', $context['start'], $total, $limit_query);


$sql = $smcFunc['db_query']('','
SELECT m.id_topic, m.poster_time, m.id_member, m.poster_name,
m.subject, m.body, m.icon, mg.online_color, t.num_replies, t.num_views, mem.real_name, mem.avatar,
IFNULL(a.id_attach, 0) AS id_attach, a.filename, a.attachment_type
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = IF(mem.id_group = 0, mem.id_post_group, mem.id_group))
INNER JOIN {db_prefix}topics AS t ON (t.id_first_msg = m.id_msg)
INNER JOIN {db_prefix}boards AS b ON (b.id_board = m.id_board)
WHERE m.id_board AND {query_wanna_see_board}
ORDER BY RAND() DESC LIMIT 1 '
);


$img = 'plugin.png';

$topics = array();

while($row = $smcFunc['db_fetch_assoc']($sql))
{
if(!empty($row['id_member']))
// $member = '<a href="'.$scripturl.'?action=profile;u='.$row['id_member'].'" style="color: '.$row['online_color'].';">'.$row['real_name'].'</a>';
$member = $row['real_name'];
else
$member = $row['poster_name'];


$topics[] = array(
'v' => $row['num_views'],
'r' => $row['num_replies'],
'avatar' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? '<img width="60" height="60" src="' . (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) . '" alt="" border="0" />' : '') : (stristr($row['avatar'], 'http://') ? '<img width="60" height="60" src="' . $row['avatar'] . '" alt="" border="0" />' : '<img width="60" height="60" src="' . $modSettings['avatar_url'] . '/' . $smcFunc['htmlspecialchars']($row['avatar']) . '" alt="" border="0" />'),
'id_topic' => $row['id_topic'],
'img' => '<img style="vertical-align: middle;" src="'.$settings['images_url'].'/post/'.$row['icon'].'.gif" alt="" />',
'href' => $row['subject'],
'time' => timeformat($row['poster_time']),
'member' => $member,
'body' => str_replace('<img ','<img style="max-width: 90px;" ',parse_bbc(substr($row['body'],0,250)))
);
}
//$averiguar = $avatar2,1,4);
$smcFunc['db_free_result']($sql);


foreach($topics AS $topic)
{
$title = '<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0" title="' . $txt['by'] . ' ' .$topic['member'] . ' - ' . $topic['time'] . '"><b>'.$topic['href'].'</b></a>';

$vamosss = '¿Ya leíste el tema '.$title.'?';

$vamosss .= '
<div class="adk_padding_8">
'.$topic['body'].'
</div>';

$vamosss .= '
<div class="smalltext" style="margin-bottom:10px; border-bottom: 1px solid #c5c5c5; border-right: 1px solid #c5c5c5; class="text-size:.6em;"">
<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0" title="' . $txt['by'] . ' ' .$topic['member'] . ' - ' . $topic['time'] . '"><strong>Leerlo completo...</strong></a>
</div>';

return $vamosss;

}

}

2.0.12
#5

Mensajes: 1070

Ver Perfil  Email 

En línea

*
Dic 28 2013


Con respecto al array la funcion esa misma que duplicaste ya tiene esa opcion....

Citar
function adk_temas_al_azar($array = '', $limit_body = '', $limit_query = '')

Simplemente deberias poner esa funcion en un archivo Sources de adkportal (Subs-adkblocks.php por ejemplo) y que despues creen un blqoue y que sea asi

Citar
adk_temas_al_azar(array(IDFORO1, IDFORO2, IDFORO3), "", 1);

ADK Portal 3.0.2
2.0.11
www.smfpersonal.net
#6

Mensajes: 8631

Ver Perfil  SMFPersonal 

En línea

*
Dic 29 2013


Gracias lucas!

Intenté usarlo, pero la parte de indicarle los id de foros parece que no anda... y el log de errores se llena de errores que ponen:
explode() expects parameter 2 to be string, array given

Y la línea a la que hace referencia es la que pone:
$array = explode(',',$array);

Estará mal armado algo?

2.0.12
#7

Mensajes: 1070

Ver Perfil  Email 

En línea

*
Dic 30 2013


sisi, cuando vas a pasar el id del foro tiene que ir asi

Citar
    adk_temas_al_azar("IDFORO1,IDFORO2,IDFORO3,IDFORO5" , "", 1);

El dato que se pasa era un string, con los ID de los foros adentro separados por coma... y sin espacios.

Error mio  :-X



ADK Portal 3.0.2
2.0.11
www.smfpersonal.net
#8

Mensajes: 8631

Ver Perfil  SMFPersonal 

En línea

*
Dic 30 2013


sisi, cuando vas a pasar el id del foro tiene que ir asi

Citar
    adk_temas_al_azar("IDFORO1,IDFORO2,IDFORO3,IDFORO5" , "", 1);

El dato que se pasa era un string, con los ID de los foros adentro separados por coma... y sin espacios.

Error mio  :-X

Buenísimo Lucas!
Ahí lo cambié y el error ya no está... pero por alguna razón parece que no está funcionando, porque sigue mostrando temas de cualquier lado... estoy usando lo siguiente:

adk_temas_al_azar("4,12", "250", 1)

(le puse dos nomás, para que se notara bien que aparecían de pocas secciones)


Y la función es esta de abajo, que la controlé comparando con la original para ver si por error le había sacado/cambiado algo importante y parece que no...

Código: [Seleccionar]
function adk_temas_al_azar($array = '', $limit_body = '', $limit_query = '')
{

global $context, $scripturl, $txt, $settings, $smcFunc, $boardurl, $adkportal;
global $modSettings;

#$adkportal['auto_news_id_boards'] = array(4,12,13,25,27,39,40,41,42,43,44,45,46,47,48,49,52,65,187,188,189,190,191,192,193,194);


if(empty($array))
$array = explode(',',$adkportal['auto_news_id_boards']);
else
$array = explode(',',$array);

if(empty($limit_body))
$limit_body = $adkportal['auto_news_limit_body'];

if(empty($limit_query))
$limit_query = $adkportal['auto_news_limit_topics'];

$context['start'] = isset($_REQUEST['adk']) ? !empty($_REQUEST['start']) ? (int)$_REQUEST['start'] : 0 : 0;

$sql = $smcFunc['db_query']('','
SELECT COUNT(*) AS total
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
WHERE b.id_board AND {query_wanna_see_board}
');

$row = $smcFunc['db_fetch_assoc']($sql);
$smcFunc['db_free_result']($sql);
   
$total = $row['total'];
// $context['page_index'] = constructPageIndex($scripturl . '?adk', $context['start'], $total, $limit_query);


$sql = $smcFunc['db_query']('','
SELECT m.id_topic, m.poster_time, m.id_member, m.poster_name,
m.subject, m.body, m.icon, mg.online_color, t.num_replies, t.num_views, mem.real_name, mem.avatar,
IFNULL(a.id_attach, 0) AS id_attach, a.filename, a.attachment_type
FROM {db_prefix}messages AS m
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)
LEFT JOIN {db_prefix}attachments AS a ON (a.id_member = mem.id_member)
LEFT JOIN {db_prefix}membergroups AS mg ON (mg.id_group = IF(mem.id_group = 0, mem.id_post_group, mem.id_group))
INNER JOIN {db_prefix}topics AS t ON (t.id_first_msg = m.id_msg)
INNER JOIN {db_prefix}boards AS b ON (b.id_board = m.id_board)
WHERE m.id_board AND {query_wanna_see_board}
ORDER BY RAND() DESC LIMIT 1 '
);


$img = 'plugin.png';

$topics = array();

while($row = $smcFunc['db_fetch_assoc']($sql))
{
if(!empty($row['id_member']))
// $member = '<a href="'.$scripturl.'?action=profile;u='.$row['id_member'].'" style="color: '.$row['online_color'].';">'.$row['real_name'].'</a>';
$member = $row['real_name'];
else
$member = $row['poster_name'];


$topics[] = array(
'v' => $row['num_views'],
'r' => $row['num_replies'],
'avatar' => $row['avatar'] == '' ? ($row['id_attach'] > 0 ? '<img width="60" height="60" src="' . (empty($row['attachment_type']) ? $scripturl . '?action=dlattach;attach=' . $row['id_attach'] . ';type=avatar' : $modSettings['custom_avatar_url'] . '/' . $row['filename']) . '" alt="" border="0" />' : '') : (stristr($row['avatar'], 'http://') ? '<img width="60" height="60" src="' . $row['avatar'] . '" alt="" border="0" />' : '<img width="60" height="60" src="' . $modSettings['avatar_url'] . '/' . $smcFunc['htmlspecialchars']($row['avatar']) . '" alt="" border="0" />'),
'id_topic' => $row['id_topic'],
'img' => '<img style="vertical-align: middle;" src="'.$settings['images_url'].'/post/'.$row['icon'].'.gif" alt="" />',
'href' => $row['subject'],
'time' => timeformat($row['poster_time']),
'member' => $member,
'body' => str_replace('<img ','<img style="max-width: 90px;" ',parse_bbc(substr($row['body'],0,$limit_body)))
);
}
//$averiguar = $avatar2,1,4);
$smcFunc['db_free_result']($sql);


foreach($topics AS $topic)
{
$title = '<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0" title="' . $txt['by'] . ' ' .$topic['member'] . ' - ' . $topic['time'] . '"><b>'.$topic['href'].'</b></a>';

$vamosss = '¿Ya leíste el tema '.$title.'?';

$vamosss .= '
<div class="adk_padding_8">
'.$topic['body'].'
</div>';

$vamosss .= '
<div class="smalltext" style="margin-bottom:10px; border-bottom: 1px solid #c5c5c5; border-right: 1px solid #c5c5c5; class="text-size:.6em;"">
<a href="'.$scripturl.'?topic='.$topic['id_topic'].'.0" title="' . $txt['by'] . ' ' .$topic['member'] . ' - ' . $topic['time'] . '"><strong>Leerlo completo...</strong></a>
</div>';

return $vamosss;

}

}

2.0.12
#9

Mensajes: 1070

Ver Perfil  Email 

En línea




Otros temas de su interes

en el sistema de adk se puede dar permiso mafia7 Marzo 31, 2011, 06:46:09 pm
Future New Board como Slideshow? nodensdorian Noviembre 27, 2012, 11:54:31 am
Ayudita con member awards IRA de TONI Julio 22, 2014, 03:29:57 pm
Bloques para ADK 3... son sólo los que vienen? luuuciano Septiembre 26, 2014, 06:53:04 pm
Agregar otro bloque de latest topics red_ant Junio 19, 2011, 12:12:59 am
Portal igual a Taringa v4 exepe Abril 19, 2012, 12:19:51 am



Usuario:
Contraseña:
Sesión:
hermes bracelet replica, christian louboutin replica, van cleef and arpels replica, red bottoms replica, cartier love bracelet replica christian louboutin replica, christian louboutin replica, hermes bracelet replica,