Simple Machines Community Forum

SMF Support => Language Specific Support => Español (Spanish) => Topic started by: Smith.93 on January 29, 2014, 08:28:34 PM

Title: Como agregar un valor a smf_topics
Post by: Smith.93 on January 29, 2014, 08:28:34 PM
Hola gente tengo una duda.
Miren queria saber que archivo modificar para que al agregar un post se guarde en la tabla smf_topics el titulo del post.
Alguno me puede orientar ?
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 29, 2014, 09:22:42 PM
No hay necesidad de hacer eso, si tienes el ID de el topic puedes obtener el titulo del mismo desde la tabla _messages.
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 29, 2014, 09:45:35 PM
No pero yo necesito eso porque estoy haciendo un sistema de RSS propio sin necesidad de usar el ssi poreso
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 29, 2014, 10:02:11 PM
Como te repito, no hay necesidad de hacer eso, no importa si usas SSI.php o tu propio código.

Dentro de tu query basta con hacer un LEFT JOIN a la tabla messages para obtener el titulo del tema que en realidad es el titulo de el primer mensaje asociado con el tema.

Si quieres ejemplos de código busca en el archivo SSI.php por cualquier función que muestra temas, todas ellas obtienen el título de la tabla messages.
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 29, 2014, 10:39:39 PM
$this->query("select count(*) from smf_topics where id_board='1' order by id_topic desc limit {$t}");

Si esa es la query como seria con el felt join ? nunca use eso :/
busque info y no entiendo :S

estoy tratando y lo hago asi:

select count(*) from smf_topics LEFT JOIN smf_messages on smf_topics.subject=smf_messages.subject where id_board='1''

pero dice que no es posible ejecutar la query
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 30, 2014, 10:22:04 AM
Quote from: Suki on January 29, 2014, 10:02:11 PM
Si quieres ejemplos de código busca en el archivo SSI.php por cualquier función que muestra temas, todas ellas obtienen el título de la tabla messages.


Realmente no es tán complicado ir a tu archivo SSI.php y revisar cualquiera de las funciones que muestran temas, como function ssi_recentTopics()


// Find all the posts in distinct topics.  Newer ones will have higher IDs.
$request = $smcFunc['db_query']('substring', '
SELECT
m.poster_time, ms.subject, m.id_topic, m.id_member, m.id_msg, b.id_board, b.name AS board_name, t.num_replies, t.num_views,
IFNULL(mem.real_name, m.poster_name) AS poster_name, ' . ($user_info['is_guest'] ? '1 AS is_read, 0 AS new_from' : '
IFNULL(lt.id_msg, IFNULL(lmr.id_msg, 0)) >= m.id_msg_modified AS is_read,
IFNULL(lt.id_msg, IFNULL(lmr.id_msg, -1)) + 1 AS new_from') . ', SUBSTRING(m.body, 1, 384) AS body, m.smileys_enabled, m.icon
FROM {db_prefix}topics AS t
INNER JOIN {db_prefix}messages AS m ON (m.id_msg = t.id_last_msg)
INNER JOIN {db_prefix}boards AS b ON (b.id_board = t.id_board)
INNER JOIN {db_prefix}messages AS ms ON (ms.id_msg = t.id_first_msg)
LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = m.id_member)' . (!$user_info['is_guest'] ? '
LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = t.id_topic AND lt.id_member = {int:current_member})
LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = b.id_board AND lmr.id_member = {int:current_member})' : '') . '
WHERE t.id_last_msg >= {int:min_message_id}
' . (empty($exclude_boards) ? '' : '
AND b.id_board NOT IN ({array_int:exclude_boards})') . '
' . (empty($include_boards) ? '' : '
AND b.id_board IN ({array_int:include_boards})') . '
AND {query_wanna_see_board}' . ($modSettings['postmod_active'] ? '
AND t.approved = {int:is_approved}
AND m.approved = {int:is_approved}' : '') . '
ORDER BY t.id_last_msg DESC
LIMIT ' . $num_recent,
array(
'current_member' => $user_info['id'],
'include_boards' => empty($include_boards) ? '' : $include_boards,
'exclude_boards' => empty($exclude_boards) ? '' : $exclude_boards,
'min_message_id' => $modSettings['maxMsgID'] - 35 * min($num_recent, 5),
'is_approved' => 1,
)
);


En cuanto a hacer LEFT JOINS, SMF usa comandos mysql para ejecutar sus consultas por lo que cualquier tutorial para mysql te servirá.

básicamente agregas identificadores a las distintas columnas de tus tablas:

m.subject, m.id_topic, aqui tus otras columnas siempre empezando con t.

FROM {db_prefix}topics AS t
LEF JOIN {db_prefix}messages AS m ON (m.id_msg = t.id_first_msg)
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 30, 2014, 05:09:49 PM
QuoteRealmente no es tán complicado ir a tu archivo SSI.php y revisar cualquiera de las funciones que muestran temas, como function ssi_recentTopics()

La verdad que nose de que te la das con esos aires de agrandado, yo nose lo mismo que php que vos, recien estoy en pesando y practicando por eso mismo quiero poder hacer esto.
Si lees lo que te dije antes ya revise el archivo ssi.php trate de hacerlo y NO ME SALE.

al final no habia que hacer ningun felt ni nada. cambie la query tomando los valores directamente de la tabla smf_messages

$r2 = $nwMy->fet_array($querys);
$query = $nwMy->fetch($nwMy->query("select count(*) from smf_messages where id_board='1'"));

ya que en esa tabla esta el id board el id topic y el titulo del post, pero a la hora de imprimir el contenido de las tablas no me imprime nada. por ejemplo:

si yo imprimo el link de esta manera:


<a href="<? echo constant("linkforum"); ?>/index.php/topic,<? echo utf8_encode($r2["id_topic"]); ?>.html" target="_blank"><? echo utf8_encode($r2["id_topic"]); ?></a>


en la web se ve de esta forma:

(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fwww.subeimagenes.com%2Fimg%2Fsin-titulo-1-832402.jpg&hash=6f34eb33af4dd5837f5d8886c9b456e59212694b)

Pero yo necesito que en vez del 7 que se ve se vea el titulo de la noticia, entonces lo deberia de imprimir asi:


<a href="<? echo constant("linkforum"); ?>/index.php/topic,<? echo utf8_encode($r2["id_topic"]); ?>.html" target="_blank"><? echo utf8_encode($r2["subject"]); ?></a>


Pero al hacer eso no se ve nada, es decir no se ve el titulo de la noticia

(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fwww.subeimagenes.com%2Fimg%2Fsin-titulo-1-832405.jpg&hash=2119aead7d1b99113c66ec5a52e44e418cf6c008)

sabes por que puede ser ? la tabla smf_messages esta de esta forma:

(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fwww.subeimagenes.com%2Fimg%2Fsin-titulo-1-832408.jpg&hash=9a4ad3e4654298118c0045a7fd30a5d49d8be384)
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 30, 2014, 05:25:07 PM
Disculpa pero yo no soy la agrandada aquí, tu eres el que no quiere aceptar consejos y está empeñado en hacer as cosas a su manera...

Nunca mencionaste que ya habias revisado el archivo SSI.php  y mis comentarios van mas en el sentido de que trates de resolver tus propios problemas en vez de dejar que los demás te hagan todo el trabajo.

Si no dices exactamente que es lo que quieres lograr, será muy dificil ayudarte, si, quieres hacer una query, y luego que? con que fin? para que sirve? como la vas a mostrar?

El error en tu consulta, fijate como la estas haciendo y fijate como esta estructurada en el código que puse más arriba, ve que es lo que le falta y que es lo que estás poniendo tu, trata de entender que es lo que realmente está haciendo esa query y como podrías tu adaptarla a tus necesidades.
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 30, 2014, 05:33:40 PM
Hay modifique el mensaje anterior revisalo por favor.
Con respecto a lo que decis aclare lo que queria hacer: tengo el foro por un lado y una web por otra y lo que necesito hacer es que al crear un post en determinado foro se agregue un link en la web para ir a ese post.

Y no sabia que era mujer. Tampoco pretendo que me hagas las cosas vos, pero me hablas como si fuera un genio del tema y nada que ver.

Como dije recien, modifique mi reply anterior y resolvi una parte, pero ocurre un problema. podes leerlo asi entendes lo que estoy tratando de decir?
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 30, 2014, 05:44:28 PM
OK, si lo que quieres es mostrar en una página externa un determinado tema de un determinado foro, entonces puedes usar las funciones que SMF ofrece pra integrar tu foro con tu página web.

Puedes ver un ejemplo de como se usa SSI.php en esta página: http://www.simplemachines.org/community/ssi_examples.php

Integrar SSI.php con tu página web es sencillo, en tu archivo index.php o donde se encuentre tu página agregas al principio de todo la siguiente linea:

require("SSI.php");

justo después de tu etiqueta de php:

<?php
require("SSI.php");

si quieres ver la ruta correcta para tu foro, entra a tu propio archivo de ejemplos:  tuforo.com/foro/ssi_examples.php logeado como administrador, obviamente reemplaza "tuforo.com" por tu direccion correcta.


¿Quieres mostrar un listado de temas o solo uno? quieres mostrar solo el título o todo el contenido del tema (el contenido del primer mensaje)
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 30, 2014, 07:05:12 PM
Sep, de eso busque info hace tiempo e incluso lo intente, pero al querer hacerlo me tiraba estos errores:
http://www.simplemachines.org/community/index.php?topic=517708.msg3662716#msg3662716

Por eso agarre un script de una web que conozco y lo hice yo mismo. Como te mostre en el otro mensaje de la manera que lo estoy haciendo ahora funciona pero al querer mostrar el titulo del tema me aparece en blanco, pero si muestro el ID del topic si funciona.
Nose si puedo dejar el link de la web aca para que lo veas online y me entiendas mejor.

Al inprimir el codigo dentro de php lo hago asi:


<a href="<? echo constant("linkforum"); ?>/index.php/topic,<? echo utf8_encode($r2["id_topic"]); ?>.html" target="_blank"><? echo utf8_encode($r2["id_topic"]); ?></a>


y el resultado deberia de ser este:


<a href="127.0.0.1/foro/index.php/topic,7.html" target="_blank">titulo del tema.</a>


El ID del topic claramente deebria de ir cambiando, puse el 7 porque es con el que estoy tratando de hacerlo funcionar ahora. El link lo arma bien, lo que no muestra es el titulo del tema. Si en vez de mostrar el titulo muestro el ID si me lo hace, pero con el titulo no
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 30, 2014, 07:26:06 PM
Es muchísimo más sencillo hacerlo mediante SSI.php

Ve a la página que menciono, ssi_examples.php logeado como admin y podrás ver cual es al ruta correcta para llamar a tu archivo SSI.php

De hecho, te debe de dar el código ya completo, solo tienes que cpiarlo/pegarlo en tu página web.
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 30, 2014, 07:32:32 PM
Sip como te dije antes, lo hago tal cual me dice la pagina pero me tira estos errores:


Warning: array_keys() [function.array-keys]: The first argument should be an array in C:\xampp\htdocs\caca\Sources\QueryString.php on line 93

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in C:\xampp\htdocs\caca\Sources\QueryString.php on line 93

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\caca\Sources\QueryString.php on line 93

Fatal error: Unsupported operand types in C:\xampp\htdocs\caca\Sources\QueryString.php on line 196


cambia de foro, es decir, instala otra vez smf en una carpetta llamada "caca" para ver si funcionaba pero sigue sin funcionar
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 30, 2014, 07:35:37 PM
¿Cómo lo estas poniendo? pon aqui el código de tu página o adjuntalo
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 30, 2014, 07:46:54 PM
Lo pongo asi::


<div id="h1"><?php echo text_Ultimas?></div>
<blockquote class="home">
<?php require("C:\\xampp\\htdocs\\caca\\SSI.php"); ?>
</blockquote>


Como me muestra aca:

(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fwww.subeimagenes.com%2Fimg%2Fsin-titulo-1-832529.jpg&hash=a319b2fc605b5b6bc30aa26d2d9f6393b997233c)

y el directorio de la web seria asi:

el codigo que pegue recien es el que pertenece al modulo inicio.php que el archivo inicio .php se carga en el index de la pagina: xampp/htdocs/muweb/index.php
el directorio del foro seria xampp/htdocs/caca

(https://www.simplemachines.org/community/proxy.php?request=http%3A%2F%2Fwww.subeimagenes.com%2Fimg%2Fsin-titulo-1-832530.jpg&hash=fd137529118edcf0c60b5aa974954324969038e2)
Title: Re: Como agregar un valor a smf_topics
Post by: #jsDotx3 on January 30, 2014, 07:49:27 PM
Con respeto a @Suki y comentando aparte con mi poco nivel de PHP y de SMF al respecto de lo que se del SSI.. pero , haces un llamado al archivo ¿cual es el código que utilizas para mostrar?,  porque te explico

el require_once(); , requiere un llamado al archivo, pero no usas ninguna función para mostrar lo que solictas, eso falta.
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 30, 2014, 07:55:24 PM
Quote from: JSX3 on January 30, 2014, 07:49:27 PM
Con respeto a @Suki y comentando aparte con mi poco nivel de PHP y de SMF al respecto de lo que se del SSI.. pero , haces un llamado al archivo ¿cual es el código que utilizas para mostrar?,  porque te explico

el require_once(); , requiere un llamado al archivo, pero no usas ninguna función para mostrar lo que solictas, eso falta.

Vos decis que haga un llamado a la funcion ssi_recentTopics() ? pero como queres que llame a la funcion si apenas incluir el archivo ssi.php me tira todos esos errores ? :P

De todas maneras por mas que llame al archivo ssi y llame a la funcion me sigue tirando esos errores
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on January 31, 2014, 12:45:02 PM
Debes de ponerlo al principio de tu archivo, en la pirmer linea, no debe de haber nada antes de incluirlo. Nada, nisiquiera la e tiqueta <html>
Title: Re: Como agregar un valor a smf_topics
Post by: Smith.93 on January 31, 2014, 02:55:50 PM
Quote from: Suki on January 31, 2014, 12:45:02 PM
Debes de ponerlo al principio de tu archivo, en la pirmer linea, no debe de haber nada antes de incluirlo. Nada, nisiquiera la e tiqueta <html>


Que grande !! nunca me hubiera imaginado que ese era el error. listo lo hice como me dijsite y funciono

Pero el link me lo pone mal:


[Anuncios Generales]   Gracias por descargar mi Aporte ! por Smith    09 de Noviembre de 2013, 06:40:00 pm

y el link de eso seria:

http://127.0.0.1/muweb/index.php/topic,7.msg11/topicseen.html#new

en vez de muweb deberia de ir foro

en la funcion recenttopics lo modifique de esta manera:


$posts[] = array(
'board' => array(
'id' => $row['id_board'],
'name' => $row['board_name'],
'href' => '127.0.0.1/caca/index.php?board=' . $row['id_board'] . '.0',
'link' => '<a href="127.0.0.1/caca/index.php?board=' . $row['id_board'] . '.0">' . $row['board_name'] . '</a>'
),
'topic' => $row['id_topic'],
'poster' => array(
'id' => $row['id_member'],
'name' => $row['poster_name'],
'href' => empty($row['id_member']) ? '' : $scripturl . '?action=profile;u=' . $row['id_member'],
'link' => empty($row['id_member']) ? $row['poster_name'] : '<a href="' . $scripturl . '?action=profile;u=' . $row['id_member'] . '">' . $row['poster_name'] . '</a>'
),
'subject' => $row['subject'],
'replies' => $row['num_replies'],
'views' => $row['num_views'],
'short_subject' => shorten_subject($row['subject'], 25),
'preview' => $row['body'],
'time' => timeformat($row['poster_time']),
'timestamp' => forum_time(true, $row['poster_time']),
'href' => '127.0.0.1/caca/index.php?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . ';topicseen#new',
'link' => '<a href="127.0.0.1/caca/index.php?topic=' . $row['id_topic'] . '.msg' . $row['id_msg'] . '#new" rel="nofollow">' . $row['subject'] . '</a>',
// Retained for compatibility - is technically incorrect!
'new' => !empty($row['is_read']),
'is_new' => empty($row['is_read']),
'new_from' => $row['new_from'],
'icon' => '<img src="' . $settings[$icon_sources[$row['icon']]] . '/post/' . $row['icon'] . '.gif" align="middle" alt="' . $row['icon'] . '" />',
);


y el link ahora aparece asi:

donde dice [General Discussion] el link es este:


http://127.0.0.1/muweb/127.0.0.1/caca/index.php??board=1.0


Como puedo sacar el http://127.0.0.1/muweb/ de adelante ?
Title: Re: Como agregar un valor a smf_topics
Post by: All Colours Sam on February 01, 2014, 12:18:05 PM
Veo que nisiqueira pues esperar a que te responda: http://www.simplemachines.org/community/index.php?topic=517908.msg3664351#msg3664351 buena suerte con tu foro.

No se permiten tener multiples temas abiertos.