Modificar el Active Members In Topic para mostrar quienes han VISITADO el tema

Started by distante, August 07, 2010, 02:33:33 AM

Previous topic - Next topic

distante

Acabo de instalar el mod Active Members In topic  http://custom.simplemachines.org/mods/index.php?mod=355

Lo que quiero hacer (si se puede) es modificar un poco el código para que ademas de mostrar quienes han posteado en un tema, muestre quienes solo han VISTO el tema (parecido a lo que hacen en algunos foros vB.)

Pensaba usar el código que agrega al sources/display.php

$member_count=0;
    $request = $smcFunc['db_query']('',"
            SELECT COUNT(*) AS 'POSTCOUNT', {db_prefix}members.id_member, {db_prefix}members.". ($modSettings['activeMemberName'] ? 'real_name' : 'member_name') .", {db_prefix}membergroups.online_color
            FROM ({db_prefix}messages INNER JOIN {db_prefix}members ON {db_prefix}messages.id_member = {db_prefix}members.id_member) LEFT JOIN {db_prefix}membergroups ON {db_prefix}members.id_group = {db_prefix}membergroups.id_group
            WHERE ((({db_prefix}messages.id_topic)=$topic))
            GROUP BY {db_prefix}members.id_member ORDER BY POSTCOUNT  ". ($modSettings['activeMemberSort'] ? 'DESC' : 'ASC') ." ");
       
    $memlink="";
    while($memberp = $smcFunc['db_fetch_row']($request))
    {
        $member_count;
        $memberColor[$member_count] = $memberp[3];
        $memberPosted_id[$member_count] = $memberp[0];
        $member_id[$member_count] = $memberp[1];
        $memberPosted_name[$member_count] = $memberp[2];
        $context['member_name_posted'][$member_count] = $memberPosted_name[$member_count];
        $context['member_COUNT_posted'][$member_count] = $memberPosted_id[$member_count];
        if (!empty($modSettings['activeMemberCountenable']))
        {
        $memlinkac='<a href="' . $scripturl . '?action=profile;u=' . $member_id[$member_count] . '" style="color: ' . $memberColor[$member_count] . ';">' . $memberPosted_name[$member_count] .'('. $memberPosted_id[$member_count] . ')</a>';
        }
        else{
        $memlinkac='<a href="' . $scripturl . '?action=profile;u=' . $member_id[$member_count] . '" style="color: ' . $memberColor[$member_count] . ';">' . $memberPosted_name[$member_count] .'</a>';
        }
        $memlink=$memlink." ".$memlinkac;
       
       
    }
    $context['members_posted']=$memlink;
// FIn de obtener miembros que postearon


Pero me parece que ese código solo cuenta los temas por usuario y por numero de topic no?
Recién estoy aprendiendo como verán!!

Es posible hacer este tweak? ::)

Gracias!

RC2

DoctorMalboro

Eso tendría que hacerse con un contador de cookies... y la verdad nunca ví ese mod/tweak...

Podrías pasar la url del mod/tweak o algún ejemplo?

distante

Accedí al foro donde vi eso antes, pero vi que cambiaron de layout y la versión y ahora no sale esto que digo :(


distante

Gracias por la recomendación vicram

Traté de probarlo, en teoría se instalo bien pero cuando entro a un topic sale esto:

QuoteError en la Base de Datos
Table '***.***_log_topic_view' doesn't exist
Archivo: C:\XAMPP\htdocs\Sources\TopicViewLog.php
Línea: 234

u.U es para Rc1, creo que el código para la creación de la tabla no funciona para RC2/RC3

Code (Install1.php) Select
<?php
################################
## .LORD.
## Topic View Log
## v1.2
################################

global $db_prefix;

db_query("CREATE TABLE IF NOT EXISTS {$db_prefix}log_topic_view (
id_member MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL,
id_topic MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL,
views INT(10) UNSIGNED DEFAULT 0 NOT NULL,
time INT(10) UNSIGNED DEFAULT 0 NOT NULL,
PRIMARY KEY (`id_member`, `id_topic`),
INDEX (`id_topic`)
)"
,__FILE____LINE__
);

?>


Code (Install2.php) Select
<?php
################################
## .LORD.
## Topic View Log
## v1.2
################################

global $smcFunc;

db_extend('packages');

$columns = array(
array('name' => 'id_member''type' => 'mediumint''size' => '8''default' => '0'),
array('name' => 'id_topic''type' => 'mediumint''size' => '8''default' => '0'),
array('name' => 'views''type' => 'int''size' => '10''default' => '0'),
array('name' => 'time''type' => 'int''size' => '10''default' => '0'),
);

$indexes = array(
array('type' => 'primary''columns' => array('id_member''id_topic')),
array('type' => 'key''columns' => array('id_topic')),
);

$smcFunc['db_create_table']('log_topic_view'$columns$indexes, array(), 'ignore');

?>


:-\

vicram10

Entra a tu phpmyadmin y luego a tu Base de Datos, y ahi en la pestaña SQL coloca y ejecuta esto


CREATE TABLE IF NOT EXISTS smf_log_topic_view (
         id_member MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL,
         id_topic MEDIUMINT(8) UNSIGNED DEFAULT 0 NOT NULL,
         views INT(10) UNSIGNED DEFAULT 0 NOT NULL,
         time INT(10) UNSIGNED DEFAULT 0 NOT NULL,
            PRIMARY KEY (id_member, id_topic),
            INDEX (id_topic)
         )

distante

Genial! Gracias otra vez vicram

:D

Advertisement: