Vai al contenuto
claudiuzz

3.4 Creazione di Sidebar in uno specifico forum

Recommended Posts

claudiuzz

Ciao a tutti ho installato questa app Custom Sidebar Blocks 2.1.1.

mi crea degli spazi laterali nella home page.

Io invece vorrei inserire uno spazio laterale solo e soltanto nella pagina di elencazione dei topic di determinati e specifici forum.

Come posso fare?

​Ho provato ad utilizzare ad code integration, ma mi inserisce lo spazio laterale in ogni elenco dei topic di ogni forum.

 

Grazie in anticipo a chi vorrà aiutarmi..

 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

Ciao a tutti ho installato questa app Custom Sidebar Blocks 2.1.1.

mi crea degli spazi laterali nella home page.

Io invece vorrei inserire uno spazio laterale solo e soltanto nella pagina di elencazione dei topic di determinati e specifici forum.

Come posso fare?

​Ho provato ad utilizzare ad code integration, ma mi inserisce lo spazio laterale in ogni elenco dei topic di ogni forum.

 

Grazie in anticipo a chi vorrà aiutarmi..

http://www.invisionita.it/forum/topic/3035-posizionare-banner-pubblicitari-e-adsense-su-ipboard/

http://www.invisionita.it/forum/topic/3723-pubblicit%C3%A0-a-destra-nel-primo-post-di-ogni-topic-o-in-alcuni/?hl=in_array#entry26264

dai un occhiata in queste discussioni

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

Ciao Booale ti ringrazio per le info.

Credo che si posso lavorare su questo codice.

 

<if test="showAds:|:$post['post']['post_count'] % $this->settings['display_max_posts'] == 1 && in_array( $topic['forum_id'], array( 14, 17, 48 ) )">
<div style="border:0px; float:right; width:130;">
CODICE BANNER
</div>
</if>

 

Vorrei ottenere un risultato tipo questo in immagine:

post-2314-0-76681800-1389440692_thumb.pn

 

Si può fare qualcosa?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

Ciao Booale ti ringrazio per le info.

Credo che si posso lavorare su questo codice.

 

<if test="showAds:|:$post['post']['post_count'] % $this->settings['display_max_posts'] == 1 && in_array( $topic['forum_id'], array( 14, 17, 48 ) )">

<div style="border:0px; float:right; width:130;">

CODICE BANNER

</div>

</if>

 

Vorrei ottenere un risultato tipo questo in immagine:

attachicon.gifImmagine2.png

 

Si può fare qualcosa?

ci sono principalmente 2 possibili strade per fare ciò che chiedi. la prima è la più rapida ma bisogna ripetere il procedimento con altre skin che si installano in futuro, mentre la seconda è attraverso una hook (che si aggancia a dei punti nel template per modificare la struttura) un codice php che genera la sidebar scrivendolo una volta sola e modificando quando si vuole solo un file (consigliato se si usano molte skin).

 

1° metodo (rapido, ma ripetitivo su ogni skin installata)

collegati all'acp > tab Look & Feel > scegli la skin > vai nel template forumIndexTemplate nel gruppo "Forum View"

trova

<if test="showtopics:|:$forum_data['sub_can_post']">

e aggiungi prima

<if test="in_array( $forum_data['id'], array( xxx, yyy, ssss ) )"><div class='ipsLayout ipsLayout_withright ipsLayout_largeright clearfix'>	<div class='ipsLayout_content clearfix'></if>

trova (la fine di quell'< if >)

	</div></if><br class='clear' />

e aggiungi prima di <br...>

<if test="in_array( $forum_data['id'], array( xxx, yyy, ssss ) )"></div></div><div class='ipsLayout_right clearfix'>IL CONTENUTO AGGIUNTIVO QUI</div></if>

2° metodo con un template hook (quando avrò tempo ti scrivo il codice, ci vuole poco se scrivi tutto tramite php senza usare template)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

ma seguendo il primo metodo, lo spazio laterale apparirà in ogni elenco topic di ogni forum?

Se volessi far apparire lo spazio laterale in uno specifico forum dove devo inserire inserire l'id topic?

Grazie per la risposta....

Rimango in attesa anche del secondo metodo, naturalmente quando avrai tempo..:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

ma seguendo il primo metodo, lo spazio laterale apparirà in ogni elenco topic di ogni forum?

Se volessi far apparire lo spazio laterale in uno specifico forum dove devo inserire inserire l'id topic?

Grazie per la risposta....

Rimango in attesa anche del secondo metodo, naturalmente quando avrai tempo.. :)

devi cambiare xxx yyy ssss con gli id dei forum dove far apparire il blocco... questo apparirebbe solo mentre si visualizza una sezione (forum) ma non mentre si visualizzano i topic...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

<if test="in_array( $forum_data['id'], array( '2' ) )"></div>

</div>

<div class='ipsLayout_right clearfix'>

IL CONTENUTO AGGIUNTIVO QUI

</div></if>

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

Ciao BoomAle,

Ho inserito lo spazio laterale. Ho inserito il secondo blocco del codice dopo </if> altrimenti lo spazio mi appariva in basso e non lateralmente.

 

Volevo chiederti un ultima cosa. Vorrei utilizzare uno spazio laterale per indicare "gli ultimi post di un forum specifico". Come posso fare?

 

<if test="in_array( $forum_data['id'], array( '2' ) )"></div>
</div>
<div class='ipsLayout_right clearfix'>
CODICE PER GLI ULTIMI POST DI UN FORUM SPECIFICO

</div></if> 

 

Grazie in anticipo...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

Il contenuto da mettere sarebbe

<php>$_topics = array();$this->DB->build(array('select' => 't.*','from' => array('topics' => 't'),'where' => 't.forum_id=ID_NUMERICO','limit' => array( 0, 5 ),'add_join' => array(    array(        'select' => 'm.member_id, m.members_display_name, m.member_group_id, m.members_seo_name',        'from'    => array( 'members' => 'm' ),        'where' => 't.started_id=m.member_id',    ),)));$query = $this->DB->execute();while($r = $this->DB->fetch( $query )){$r['pp_small_photo'] = IPSMember::buildProfilePhoto( $r['started_id'], 'small' );$_topics[] = $r;}</php><if test="!empty( $_topics ) && count( $_topics )"><div class='ipsSideBlock clearfix'>    <h3>{$this->lang->words['recently_added_topics']}</h3>    <div class='_sbcollapsable'>        <ul class='ipsList_withminiphoto'>        <foreach loop="$_topics as $r">        <li class='clearfix'>            {parse template="userSmallPhoto" group="global" params="$r"}            <div class='list_content'>                <a href="{parse url="showtopic={$r['tid']}" base="public" template="showtopic" seotitle="{$r['title_seo']}"}" rel='bookmark' class='ipsType_small' title='{parse expression="strip_tags($r['topic_title'])"} {$this->lang->words['topic_started_on']} {parse date="$r['start_date']" format="LONG"}'>{$r['topic_title']}</a>                <p class='desc ipsType_smaller'>                    <if test="$r['members_display_name']">{parse template="userHoverCard" group="global" params="$r"}<else />{$this->settings['guest_name_pre']}{$r['starter_name']}{$this->settings['guest_name_suf']}</if>                    - {parse date="$r['start_date']" format="short"}                </p>            </div>        </li>        </foreach>        </ul>    </div></div></if>

Nota: la parte HTML occorre farla seguendo lo standard < table >, se vuoi ti scrivo io tutto più tardi...
Per configurarlo occorre sostituire ID_NUMERICO con l'ID del forum scelto.

Dovrei tornare dopodomani...

Modificato da BomAle
completamento codice...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

grazie BomAle sei molto gentile. Aspetterò il tuo rientro per avere il codice completo da inserire.

Per najaru , vorrei creare un spazio latera , visibile in un forum specifico, che metta in mostra i post recenti degli utenti. In pratica su ipb esiste uno spazio laterale che mostra i post recenti degli utenti, ma che si riferisce a tutti i forums e che appare unicamente nella home. Io vorrei riproporre uno spazio simile, riferito ad un forum specifico e visibile nella pagina "elenco topic" di un solo forum.

Grazie per il vostro aiuto.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

grazie BomAle sei molto gentile. Aspetterò il tuo rientro per avere il codice completo da inserire.

Per najaru , vorrei creare un spazio latera , visibile in un forum specifico, che metta in mostra i post recenti degli utenti. In pratica su ipb esiste uno spazio laterale che mostra i post recenti degli utenti, ma che si riferisce a tutti i forums e che appare unicamente nella home. Io vorrei riproporre uno spazio simile, riferito ad un forum specifico e visibile nella pagina "elenco topic" di un solo forum.

Grazie per il vostro aiuto.

Ho corretto appena ora... ricontrolla il mio messaggio precedente

non ho ancora provato, potresti farlo tu direttamente nel frattempo e dirmi in quale ordine vorresti i topic (in base all'ultimo post, numero di like, ecc...)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

Ciao ho provato ad inserire il codice ma ricevo questo errore:

 

There appears to be an error with the database.

If you are seeing this page, it means there was a problem communicating with our database. Sometimes this error is temporary and will go away when you refresh the page. Sometimes the error will need to be fixed by an administrator before the site will become accessible again. 

You can try to refresh the page by clicking here

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

trova

<if test="showtopics:|:$forum_data['sub_can_post']">

e aggiungi prima

<if test="in_array( $forum_data['id'], array( '2' ) )"><div class='ipsLayout ipsLayout_withright ipsLayout_largeright clearfix'>    <div class='ipsLayout_content clearfix'></if>

trova 

    

</div></if><br class='clear' />

e aggiungi prima (bomale: è dopo </if>)

<if test="in_array( $forum_data['id'], array( '2' ) )"></div></div><div class='ipsLayout_right clearfix'>
<table border="1" width="100%">  <tr>    <td width="100%">
<php>$_topics = array();$this->DB->build(array('select' => 't.*','from' => array('topics' => 't'),'where' => 't.forum_id=ID_NUMERICO','limit' => array( 0, 5 ),'add_join' => array(    array(        'select' => 'm.member_id, m.members_display_name, m.member_group_id, m.members_seo_name',        'from'    => array( 'members' => 'm' ),        'where' => 't.started_id=m.member_id',        'type' => 'left',    ),    array(        'select' => 'p.pid,p.post',        'from'    => array( 'posts' => 'p' ),        'order' => 'p.post_date desc',        'limit' => array(0,1),        'type' => 'left',        'where' => 'p.queued=0 and p.pdelete_time=0 and p.topic_id=t.tid',    ),)));$query = $this->DB->execute();while($r = $this->DB->fetch( $query )){$r['post'] = IPSText::truncate($r['post'], 20); // 20 è il numero massimo di caratteri da estrarreif(substr($r['post'], strlen($r['post']) - 3) != '...'){    $r['post'] .= '...';}$r['pp_small_photo'] = IPSMember::buildProfilePhoto( $r['started_id'], 'small' ); // avatar dell'utente che ha iniziato la discussione$_topics[] = $r;}</php><if test="!empty( $_topics ) && count( $_topics )"><div class='ipsSideBlock clearfix'>    <h3>{$this->lang->words['recently_added_topics']}</h3>    <div class='_sbcollapsable'>        <ul class='ipsList_withminiphoto'>        <foreach loop="$_topics as $r">        <li class='clearfix'>            {parse template="userSmallPhoto" group="global" params="$r"}            <div class='list_content'>                <a href="{parse url="showtopic={$r['tid']}" base="public" template="showtopic" seotitle="{$r['title_seo']}"}" rel='bookmark' class='ipsType_small' title='{parse expression="strip_tags($r['topic_title'])"} {$this->lang->words['topic_started_on']} {parse date="$r['start_date']" format="LONG"}'>{$r['topic_title']}</a>                <p class='desc ipsType_smaller'>                    <if test="$r['members_display_name']">{parse template="userHoverCard" group="global" params="$r"}<else />{$this->settings['guest_name_pre']}{$r['starter_name']}{$this->settings['guest_name_suf']}</if>                    - {parse date="$r['start_date']" format="short"}                </p>                {$r['post']}            </div>        </li>        </foreach>        </ul>    </div></div></if>
  </tr></table></div></if> 

Il forum è il 2 e l'ordine potrebbe essere in modo cronologico decrescente (dal più recente in poi, ultimi 5 post del forum)

Modificato da BomAle
corretto con caratteristiche del post 16/01 di speranzoso

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

Appena posso controllo, vedo già un problema riguardo alla procedura che hai espresso..

Dovevi aggiungere prima di <br ..> oppure dopo </if> come avevi anche detto tu prima.

 

Ma vorresti gli ultimi 5 topic che sono stati recentemente commentati o solo estrarre gli ultimi 5 post(può capitare che siano due o più dello stesso topic)? O meglio estrarre l'ultimo post da ognuno dei 5 topic recentemente risposti?

Insomma si più chiaro...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

In questo spazio laterale vorrei inserire gli ultimi 5 post di qualsiasi topic del forum di riferimento...anche se gli ultimi 5 post sono inerenti ad un solo topic...

Giusto per non complicare le cose... :D

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

Ok, per sta notte modifico direttamente il messaggio dove c'è già tutto il codice ;)

Poi in fine settimana provo anche a vedere se possiamo usare le "api" di ipb senza lavorare sulle SQL 

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

Potrebbe essere interessante esaminare il codice di questa app http://community.invisionpower.com/files/file/4548-recent-posts-sidebar-block/

Questa app fa apparire una sidebar con i topic recenti di un forum prescelto, ma mette lo spazio laterale solamente nella home....

Modificato da speranzoso

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

a bravo, potresti semplicemente aprire il file xml con un editor php...

modifica andando nella riga 100

		$forumIds = $this->_loadForumIds();

in

		if(!$this->request['f'] = 'xx')		{			$forumIds = $this->_loadForumIds();		}                // mentre si visualizza il forum xx si cercano i post recenti del forum con ID yy		else		{			$forumIds = array( 'yy' ); // gli ultimi post fatti in questa sezione		}

e poi se vorresti tenere la versione sidebar e installare la stessa hook dovresti:

modificare il nome della classe php e del file e purtroppo anche l'hook point,

infine modificare il template "recentPosts" in skin_board con le modifiche per la sidebar...

 

potresti contattare HeadStand e dire se può fare una versione per il forum view... io sarei occupato fino al 25 :S

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

a bravo, potresti semplicemente aprire il file xml con un editor php...

modifica andando nella riga 100

		$forumIds = $this->_loadForumIds();

in

		if(!$this->request['f'] = 'xx')		{			$forumIds = $this->_loadForumIds();		}                // mentre si visualizza il forum xx si cercano i post recenti del forum con ID yy		else		{			$forumIds = array( 'yy' ); // gli ultimi post fatti in questa sezione		}

Ciao @BomAle ma se faccio questa sostituzione al file .xml della hook e tolgo il codice sidebar fatto fin ora, quando installo la hook dovrebbe apparirmi la sidebar nel forum che vado a scegliere.

Modificato da speranzoso

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
BomAle

dovresti anche modificare l'hook point una volta che hai installato l'xml

e applicare le modifiche che abbiamo fatto precedentemente nel tema recent posts... insomma per ora ti conviene aspettare il 25 che potrò anche rivederla per il tuo scopo.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
claudiuzz

Ciao @BomAle se può esserti utile oggi ho trovato anche questa hook che permette la creazione di una sidebar in home page. Permette di selezionare i topic da cui estrarre gli ultimi post e anche il numero dei post da visualizzare nella sidebar.

Unico problema è quello di far apparire lo spazio laterale in uno specifico forum e non nella home come fa di default questa hook.

ecco il link http://community.invisionpower.com/files/file/6491-latest-posts-in-sidebar/ .

L'altra hook che ho linkato mostrava tutte le ultime attività fatte in un topic, questa mostra solo gli ultimi post.

A presto

Sp.

Modificato da speranzoso

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora


×