Vai al contenuto

Creazione di Sidebar in uno specifico forum

Featured Replies

Inviato

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..

 

Inviato

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

Inviato
  • Autore

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?

Inviato

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)

Inviato
  • Autore

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..:)

Inviato

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...

Inviato
  • Autore

ad esempio un elenco dei topic è presente a questo indirizzo

http://www.miosito.com/forum/index.php?/forum/2-a-test-forum/
Quali parametri devo sostituire, se volessi far appari lo spazio laterale in quella pagina?

Modificato da speranzoso

Inviato

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

</div>

<div class='ipsLayout_right clearfix'>

IL CONTENUTO AGGIUNTIVO QUI

</div></if>

Inviato
  • Autore

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...

Inviato

??? Non hai i Topic più ordinati in ordine cronologico?

Inviato

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...

Inviato
  • Autore

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.

Inviato

errore mio, avevo letto ultimi topic

Inviato

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...)

Inviato
  • Autore

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

Inviato
  • Autore

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

Inviato

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...

Inviato
  • Autore

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

Inviato

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 

Inviato
  • Autore

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

Inviato

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

Inviato
  • Autore

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

Inviato

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.

Inviato
  • Autore

Si si credo proprio che farò così  :D

grazie per la pazienza e per l'aiuto

Inviato
  • Autore

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

Per favore accedi per lasciare un commento

Potrai lasciare un commento dopo aver effettuato l'accesso

Accedi Ora

Chi sta navigando 0

  • Nessun utente registrato visualizza questa pagina.

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.