como obtener nombre,fecha,imagen etc del creador del post (php)

Started by colcrt, November 07, 2018, 10:40:35 AM

Previous topic - Next topic

colcrt

hola, primero me disculpo si esto ya lo preguntaron no encontré  :-\

verán como puedo obtener el creador del post mediante php (que variables/funciones lo facilitan en smf) para ponerlo en el titulo principal?

-Rock Lee-

Podes buscar por la variable $user_info o sino lo podes sacar con '.$var['poster']['name'].' aunque esta opcion es la que uso con el ssi.php de SMF.


Saludos!
¡Regresando como cual Fenix! ~ Bomber Code
Ayudas - Aportes - Tutoriales - Y mucho mas!!!

vicram10

$user_info es del usuario logueado (inicio session).

se podria analizar en el Subs-Post.php en que parte hace la carga de la variable para mostrar los post.
entonces podes usar algo parecido para determinar lo que necesitas.

pero asi como menciona Rock Lee podes usar el user info

ya que capturaras el momento de crear el topico el nombre del usuario que esta logueado/posteando

MorderBR

si es únicamente para la sección del post, son estas variables

$message['member']['link'] //nombre concatenado a la url del posteador
$message['member']['avatar']['href']//únicamente la url de la imagen del avatar del posteador
$message['time']//tiempo en el que se publicó el mensaje ya con el formato predeterminado del foro

colcrt

no lo consigo  :( al intentar esto
$postern = $context['get_message']();
if($context['first_message'] == $postern['id']){$name = $postern['member']['link'];}


funciona pero omite la primera publicación no logro entender el porque

MorderBR

Quote from: colcrt on November 08, 2018, 06:57:23 PM
no lo consigo  :( al intentar esto
$postern = $context['get_message']();
if($context['first_message'] == $postern['id']){$name = $postern['member']['link'];}


funciona pero omite la primera publicación no logro entender el porque
No entiendo qué quieres hacer

colcrt

veras quiero poner el creador del post (avatar, link y nombre) en el titulo del post, si quieres mira
aquí goo.gl/CWN8Pp [nofollow] en donde dice name-creador, ahí va lo que menciono pero no lo consigo ya vi las funciones  de ssi.php pero no logre hacerlas funcionar

MorderBR


<h3 class="my-0 mr-md-auto font-weight-normal">
   <img src="https://foro.mt2.party/Themes/transcend/images/topic/normal_post.gif" align="bottom" alt="">
   <span id="">',$message['poster_name'],'&nbsp;</span>
   - ', $message['subject'],'&nbsp;<small>(' , $txt['read'] , ' ' , $context['num_views'] , ' ' , $txt['times'] .,')</small>
</h3>

reemplaza esa línea por esta

colcrt

MorderBr -> lo intente así pero no funciono así que trate de otra forma usando ssi.php pero no logro entender que hago mal en la consulta, esta es simple de prueba pero no logro hacer que funcione

function topicAutor($idtopic){
global $smcFunc, $scripturl;

require_once('../SSI.php');

$sql = $smcFunc['db_query']('', '
                SELECT id_member_started
                FROM {db_prefix}topics
                WHERE id_topic = {int:"'.$idtopic.'"}
                LIMIT 1',
                array()
            );
$datos = array();
while ($row = $smcFunc['db_fetch_assoc']($sql)) {
$datos[] = array(
'id' => $row['id_member_started']
);
}
foreach($datos AS $data)
echo $data['id'];
}

MorderBR

Quote from: colcrt on November 11, 2018, 12:10:52 PM
MorderBr -> lo intente así pero no funciono así que trate de otra forma usando ssi.php pero no logro entender que hago mal en la consulta, esta es simple de prueba pero no logro hacer que funcione

function topicAutor($idtopic){
global $smcFunc, $scripturl;

require_once('../SSI.php');

$sql = $smcFunc['db_query']('', '
                SELECT id_member_started
                FROM {db_prefix}topics
                WHERE id_topic = {int:"'.$idtopic.'"}
                LIMIT 1',
                array()
            );
$datos = array();
while ($row = $smcFunc['db_fetch_assoc']($sql)) {
$datos[] = array(
'id' => $row['id_member_started']
);
}
foreach($datos AS $data)
echo $data['id'];
}

No es necesario el uso de SSI en esa sección ya que toda la información está en el archivo Display.php de Sources
Estuve checando mi código y vi que tenía unos errores, lo siento...
Al final es sencillo de arreglar aunque tienes que modificar el archivo Display.php de Sources y Display.template.php de tu tema
En Display.php
Buscas

// Get all the important topic info.
$request = $smcFunc['db_query']('', '
SELECT
t.num_replies, t.num_views, t.locked, ms.subject, t.is_sticky, t.id_poll,
t.id_member_started, t.id_first_msg, t.id_last_msg, t.approved, t.unapproved_posts,

y reemplazas por

// Get all the important topic info.
$request = $smcFunc['db_query']('', '
SELECT
t.num_replies, t.num_views, t.locked, ms.subject, t.is_sticky, t.id_poll,
t.id_member_started, t.id_first_msg, t.id_last_msg, t.approved, t.unapproved_posts, ms.poster_name,

después buscas

// Did this user start the topic or not?
$context['user']['started'] = $user_info['id'] == $topicinfo['id_member_started'] && !$user_info['is_guest'];
$context['topic_starter_id'] = $topicinfo['id_member_started'];

// Set the topic's information for the template.

y reemplazas por

// Did this user start the topic or not?
$context['user']['started'] = $user_info['id'] == $topicinfo['id_member_started'] && !$user_info['is_guest'];
$context['topic_starter_id'] = $topicinfo['id_member_started'];

// Set the topic's information for the template.
$context['poster_name'] = $topicinfo['poster_name'];

en el archivo Display.template.php
Buscas (depende de qué tan modificado esté tu tema, esto puede variar pero supongo que entiendes cómo acomodarlo)

// Show the topic information - icon, subject, etc.
echo '
<div id="forumposts">
<div class="cat_bar">

y modificas esta parte la cual es la que muestra lo que deseas

<h3 class="my-0 mr-md-auto font-weight-normal">
   <img src="https://foro.mt2.party/Themes/transcend/images/topic/normal_post.gif" align="bottom" alt="">
   <span id="">',$context['poster_name'],'&nbsp;</span>
   - ', $context['subject'],'&nbsp;<small>(' , $txt['read'] , ' ' , $context['num_views'] , ' ' , $txt['times'] ,')</small>
</h3>


Prueba:


colcrt

no lo logro  :'( intente esta funcion pero me sale (Hacking attempt...) estoy llamando esta funcion asi

list($m,$a) = topicAutor($topic); por que no funciona

function topicAutor($idtopic){
global $smcFunc, $scripturl;
//id_member member_name avatar --- members -- id_member_started topics
require_once('../foro/SSI.php~');

$sql = $smcFunc['db_query']('', '
                SELECT id_member_started WHERE id_topic = {int:id-topic}
FROM {db_prefix}topics AS t (
SELECT member_name avatar
LEFT JOIN {db_prefix}members AS m ON (m.id_member = t.id_member_started)
)
                LIMIT 1',
                array('id-topic' => $idtopic)
            );
if($smcFunc['db_num_rows']($sql) == 0)
echo'error!';
else
$query = $smcFunc['db_num_rows']($sql);

for($i=0; $i <$query; $i++){
$row = $smcFunc['db_fetch_assoc']($sql);
array($row['avatar'], $row['member_name']);
}
$smcFunc['db_free_result']($sql);
}

vicram10

Este esta mal


require_once('../foro/SSI.php~');


es


require_once('../foro/SSI.php');


pero no debe estar dentro de tu funcion, sino mas bien dentro o antes del llamado a la funcion en este caso


require_once('../foro/SSI.php');
list($m,$a) = topicAutor($topic);


Advertisement: