News:

SMF 2.1.2 has been released! Take it for a spin! Read more.

Main Menu

opzione devi registrarti

Started by laudia, December 10, 2012, 03:17:53 PM

Previous topic - Next topic

laudia

ciao a tutti,
volevo fare in modo che per vedere il link nei post bisogna registrarsi o fare login e ho scovato questo

http://custom.simplemachines.org/mods/index.php?mod=342

ma, vorrei, che sia solo per i link esterni e non quelli del mio dominio e se ci fosse qualcosa di simile ma per le email che vengono inserite nel post.
Come posso fare questo?

grazie in anticipo

emanuele

Non mi ricordo più se lo fa, prova: http://custom.simplemachines.org/mods/index.php?mod=2861

Invece per i link interni non ricordo vi sia nulla...ma magari ricordo male (ce ne sono almeno 3 o 4 di mod simili che fanno tutti più o meno la stessa cosa).


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

grazie emanuele, la mod che mi dici mi sembra che funzioni anche con le email ma ci sono troppe opzioni che non mi servono e non voglio aggiungere troppo codice che non mi serve. Io vorrei solo per link e email gli altri 3 o 4 che dici quali sono?
magari nel codice del mod che ti ho detto all' inizio si può aggiungere una funzione che lo faccia anche per le email senza dover aggiungere altro codice di cose che non mi servono
// Registered Links
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(.*?)</a>#i', $txt['no_view_links'] . "\n" . ' <a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>', $message);
}

// End Registered Links

emanuele

Sei sicura che non le mascheri già così?


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

non sò ma da quanto ho capito è solo per url ma, leggendo meglio la sezione supporto o visto questo
in Subs.php
<search position="replace"><![CDATA[
'tag' => 'email',
'type' => 'unparsed_content',
'content' => '<a href="mailto:$1">$1</a>',
]]></search>
<add><![CDATA[
'tag' => 'email',
'type' => 'unparsed_content',
'content' => $user_info['is_guest'] ? '<span style="color: red">[<a href="' . $scripturl . '?action=register">Register</a>&nbsp;or&nbsp;<a href="' . $scripturl . '?action=login">Login</a>' . $txt['no_view_email'] . ']</span>' : '<a href="mailto:$1">$1</a>',
]]></add> 


ora non ho il tempo per provarlo ma che dici devo aggiungerlo o non serve

emanuele

Siccome una mail che clicchi usa lo stesso tag di un link, e se quello che hai postato sopra è il codice del mod, non dovrebbe essere necessario modificare un bel nulla e dovrebbe già nascondere anche le mail.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

#6
ok meglio così. Ho provato a modificarlo per far uscire:
[Devi Registrarti o Accedi per vedere questo link]
// Registered Links
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
}
// End Registered Links


dimmi se ho fatto qualche errore ma, comunque c' è un modo per far uscire la parola "link" quando si tratta di link e "email" quando si tratta di email?

Passando ai link interni che al contrario vorrei che fossero visibili se non c' è soluzione pensavo che un alternativa valida sarebbe fare in modo di nascondere i link solo in alcune sezioni e in altre no, così almeno per discussioni importanti con link che attirano utenti gli incentivo a registrarsi spostando le discussioni in tali sezioni. Come faccio questo? magari con un semplice checkbox nell' opzione modifica sezione cosi da poter scegliere in quale si e in quale non attivarlo.

emanuele

Quote from: laudia on December 11, 2012, 12:58:55 PM
dimmi se ho fatto qualche errore
Se funziona ed esce quello che vuoi non hai ci dovrebbero essere errori. :P

Quote from: laudia on December 11, 2012, 12:58:55 PM
ma, comunque c' è un modo per far uscire la parola "link" quando si tratta di link e "email" quando si tratta di email
mmm...prova, non ho idea se funziona:
// Registered Links
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(http.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
$message = preg_replace('#<a href="(mailto.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_mails'] . ']</span>', $message);
}
// End Registered Links

E poi aggiungi:
$txt['no_view_mails']
a modifications.english.php e modifications.italian.php copiando quello che è $txt['no_view_links'] e mettendogli mail.

Quote from: laudia on December 11, 2012, 12:58:55 PM
Passando ai link interni che al contrario vorrei che fossero visibili se non c' è soluzione pensavo che un alternativa valida sarebbe fare in modo di nascondere i link solo in alcune sezioni e in altre no, così almeno per discussioni importanti con link che attirano utenti gli incentivo a registrarsi spostando le discussioni in tali sezioni. Come faccio questo? magari con un semplice checkbox nell' opzione modifica sezione cosi da poter scegliere in quale si e in quale non attivarlo.
Onestamente ogni volta in cui capito su una pagina che mi chiede di registrarmi per vedere qualcosa, chiudo talmente velocemente che non mi resta nemmeno nella cronologia del browser. :P
Quando si tratta di board non c'è niente di semplice, perché come minmo richiede la modifica del database (dovrai pure salvare l'informazione da qualche parte), del template (purtroppo la pagina di gestione delle board è piuttosto "hard-coded") e ovviamente condizionali per verificare se la restrizione deve essere applciata o no (anche se questo alla fine è il minimo).
A mano che non vuoi il tutto "hard-coded" e allora può bastare qualcosa del tipo:

// Registered Links
global $board;
if ($user_info['is_guest'] && !isset($board) || (in_array($board, array(1, 2, 3)))
{
$message = preg_replace('#<a href="(.*?)</a>#i', $txt['no_view_d'] . "\n" . ' <span style="color: green">[<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
}
// End Registered Links


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

#8
ok funziona tranne per i link video ma è sicuramente per via di un altra mod chè ho installato ma mi va bene così. Non esce come volevo ma con un pò di prove e modifiche ce lo fatta
if ($user_info['is_guest'])
{
$message = preg_replace('#<a href="(http.*?)</a>#i', '<span style="color: green">[' . $txt['no_view_d'] . "\n" . '<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_links'] . ']</span>', $message);
$message = preg_replace('#<a href="(mailto.*?)</a>#i', '<span style="color: green">[' . $txt['no_view_d'] . "\n" . '<a href="' . $scripturl . '?action=register">' . $txt['txt_reg_links_register'] . '</a>&nbsp;' . $txt['txt_reg_links_or'] . '&nbsp;<a href="' . $scripturl . '?action=login">' . $txt['txt_reg_links_login'] . '</a>' . $txt['no_view_mails'] . ']</span>', $message);
}
// End Registered Links


Per il secondo codice che mi hai detto potrebbe andare bene ma purtroppo il problema e che se tra qualche mese voglio toglierlo o inserirlo in altre sezioni mi devo ricordare il file in cui è inserito e modificarlo manualmente invece, mettendo un checkbox se in futuro vedo che non dà i risultati sperati mi basterà togliere la spunta dal checkbox senza dover cancellare nulla o almeno potrò fare delle prove nel caso in alcune sezioni da risultati e in altre no senza modificare ogni volta il codice. Ho anche prettyurl quindi il numero della board non è semplice vederlo.

QuoteQuando si tratta di board non c'è niente di semplice, perché come minmo richiede la modifica del database (dovrai pure salvare l'informazione da qualche parte), del template (purtroppo la pagina di gestione delle board è piuttosto "hard-coded") e ovviamente condizionali per verificare se la restrizione deve essere applciata o no (anche se questo alla fine è il minimo).
Aggiungere il checkbox in modifica sezione con anche la descrizione riesco anch' io a inserirlo sotto le altre opzioni del forum ma, non sono in grado di collegarlo alla funzione. Io da non esperta pensavo bastasse inserire il check e collegarlo con il mod del tipo, se mod-no-view è abilitata nella sezione esegui funzione. Si può fare così o la cosa è molto più complessa?

laudia

emanuele ci sto solo provando quindi per il check
$txt['no_view_title'] = 'Nascondi link e email';
$txt['no_view_desc'] = 'Se abilitato, gli utenti non registrati non vedrenno link e email nella sezinone.';


e aggiungo tra le opzioni di modifica sezione
echo '
<tr>
<td>
<b>', $txt['no_view_title'], '</b><br />
', $txt['no_view_desc'], '<br /><br />
</td>
<td valign="top" align="right">
<input type="checkbox" name="no_view"', $context['board']['no_view'] ? ' checked="checked"' : '', ' class="check" />
</td>
</tr>';


e sulla funzione detta prima
if (!empty($options['no_view']) && ($user_info['is_guest'])

è la prima volta che ci provo senza aver studiato nulla su codici e simili, quindi non giudicare, sicuramente non  funziona ma che dici ci sono andata vicino? Come lo modifico per far si che funzioni?


emanuele

Quote from: emanuele on December 12, 2012, 08:29:21 AM
Quando si tratta di board non c'è niente di semplice, perché come minmo richiede la modifica del database (dovrai pure salvare l'informazione da qualche parte), del template (purtroppo la pagina di gestione delle board è piuttosto "hard-coded") e ovviamente condizionali per verificare se la restrizione deve essere applciata o no (anche se questo alla fine è il minimo).
Guarda, per dirti come farlo farei prima a scriverlo...ma al momento non posso.
Purtroppo non ho nemmeno un buon esempio da darti, il massimo è questo mod: http://custom.simplemachines.org/mods/index.php?mod=2838
Guarda tutte le modifiche apportate a ManageBoards, Subs-Boards, ManageBoards.template, per aggiungere l'opzione, poi per controllarla...non mi ricordo più... l'ho detto che non è un buon esempio... ::)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

comunque avrei sempre bisogno di aiuto.
Prendendo esempio da quello che mi hai detto e con http://custom.simplemachines.org/mods/index.php?mod=1745 che avevo instalato che fà una cosa simile ma al contrario con l' intero post ho cercato di eseguire tutte le modifiche che credo mi servino cambiando il nome con no_view ma le uniche modifiche che mi danno errore sono quelle in Subs-Boards cioè mi esce

Unknown column 'no_view' in 'field list'

e quando cerco di spuntare l' opzione per la modifica mi esce anche la scritta che mi dice di aggiornare il database.
Non credo di essere in grado di farlo senza aiuto.

Cercando tra i mod o scoperto questo http://custom.simplemachines.org/mods/index.php?mod=1566 e ho pensato ad un alternativa se propio non hai tenpo per aiutarmi con le sezioni. Questo mod crea dei tag bbc pulsante, ho provato a crearne uno [hide] ma lo nasconde soltanto il testo quindi non si vede nulla, magari è più semplice far si che un nuovo tag pulsante faccia  o sia collegato alla funzione che abbiamo detto prima per email/link.
Magari scriverò una regola nel forum che un certo tipo di link e email devono avere quel tag, anche se preferirei gestire io la cosa ma se tramite le sezioni è troppo complicato...
Emanuele che dice questo è più semplice o ugualmente complesso?

emanuele

Quote from: laudia on December 14, 2012, 03:55:21 PM
Subs-Boards cioè mi esce

Unknown column 'no_view' in 'field list'
Apputo, devi creare una nuova colonna "no_view" (di tipo tinyint dovrebbe andar bene). nella tabella boards. ;)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

#13
come già detto non sono un espera e quindi non saprei da dove iniziare, ciò provato ma...
Ho bisogno di questa funzione e se conosci un modo alternativo per gestirla in modo semplice senza dover andare a modificare ogni volta il codice mi faresti davvere un piacere enorme.
Vorrei iniziare una cosa nel forum e senza questa modifica non avrebbe senso farla poichè non porterebbe nessun beneficio in merito a nuovi utenti. Soluzioni?

emanuele

Aggiungere una colonna alla tabella è forse più semplice di quello che hai già fatto...vai in phpmyadmin, trova la tabella, entraci, vai in "struttura" ed inserisci una nuova colonna, nome (presumo) "no_view" e tipo "tinyint".


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

ok, tabella board, arrivo a inserisci ma non c'è nessuna opzione per inerire nuova colonna ci sono un sacco di opzioni con campo, tipo, funzione e valore. Comunque ci riprovo domani alla luce del solo

emanuele

Usa il menù in alto: prima "structure" (struttura) e poi "insert" (inserisci).


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

per fortuna è in italiano phpmyadmin ma, credo di aver capito, giù nella pagina struttura c' è Aggiungi campi e cliccando esegui, nella pagina che esce bisogna inserire : Campo, tipo, lunghezza/valori, predefinito, codifica caratteri, attributi, null, indice, auto_increment, commenti.

Quindi come procedo? abbiamo detto
Campo:  no_view
tipo: tinyint
e negli altri campi...

emanuele

Sostanzialmente irrilevanti.
Lasciali come sono.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

laudia

#19
ok niente più errore, per vedere se funziona sulla funzione al posto di
      if ($user_info['is_guest'])
devo mettere...
ovviamente se utente è guest e viene abilitato no_view

Advertisement: