VISUALIZZARE blocco quasi a tutti

20 contenuti / 0 new
Ultimo contenuto
VISUALIZZARE blocco quasi a tutti

ma come si fa a far visualizzare un blocco a tutti i ruoli tranne che all'amministratore?

se seleziono nelle proprietà del blocco tutti i ruoli tranne l'amministratore me lo visualizza ugualmente anche all'amministratore.

Metti nella configurazione del blocco:
visualizza tranne in:
metti nella textarea admin/*
Semplice no?

@danzisiweb: in quel modo non mostra il blocco nelle pagine di amministrazione, ma l'amministratore continua a vederlo nel resto del sito.
prova così: nelle impostazioni di visibilità scegli if php code returns true e inserisci

<?php
global $user;
return
$user->uid != 1;
?>

grazie bohz ma in quel campo avevo gia inserito mostra in tutte le pagine tranne che nelle pagine foto/*, come sarà eventualmente il codice php da inserire?

prova così:

<?php
$match
= TRUE;
global
$user;
if (
$user->uid == 1){
$match = FALSE;
}
//nota: questo esclude 'foto/*' ma NON 'foto'
if (arg(0) == 'foto' && arg(1)){
$match = FALSE;
}
return
$match;
?>

beh ma devo escludere anche foto/ senza l'asterisco.

beh, l'asterisco l'hai messo tu, non io.
comunque il codice di prima era sbagliato poichè controllava il path e non l'alias:

<?php
$match
= TRUE;
global
$user;
if (
$user->uid == 1){
$match = FALSE;
}
//nota: questo esclude 'foto/*' E 'foto'
$path = drupal_get_path_alias($_GET['q']);
if (
substr($path, 0, 4) == 'foto'){
$match = FALSE;
}
return
$match;
?>

grazie bohz sei stato davvero utile, nel caso oltre a "foto" volessi escludere anche "casa" dovrei modificare questa riga da:

if (substr($path, 0, 4) == 'foto'){

a:

if (substr($path, 0, 4) == 'foto', 'casa'){

giusto?

mi dite come posso mettere risolto questo post?

no.

<?php
  substr
($path, 0, 4)
?>

estrae una sottostringa di 4 caratteri a partire dall'inizio della variabile $path.
quello che devi fare è aggiungere un altro if statement che restituisce true o false.
in pratica
1. stabilisci se nella maggioranza dei casi il blocco deve essere visibile o meno e imposti la regola di base:
<?php
 $match
= TRUE; //oppure FALSE
?>

2. inserisci una condizione per ciacuna eccezione. ad esempio
<?php
 
if(substr($path, 0, 5) ==  'pippo') {$match = FALSE;}
?>

3. restituisci il valore finale
<?php
 
return $match;
?>

ATTENZIONE che senza alias 'sta roba non funziona (mentre funziona il codice in #4)

bohz cosa intendi per senza alias non funziona? cosa intendi per l'alias?

nel caso invece che il blocco lo voglio visualizzare oltre a 'pippo' come hai scritto tu anche nei content type "story" e "page" solamente in full node?

[Risolto] La domanda è "Ma come si fa a far visualizzare un blocco a tutti i ruoli tranne che all'amministratore?"

La risposta è
admin/build/block/configure/nomedelblocco
in
Show block on specific pages:
Show on every page except the listed pages.
Metti: admin/*

Testato e funzionante
Ciao da Danzisiweb

@danzisiweb: come già detto, la risposta che dai non è corretta.
la tua soluzione è relativa al path, non all'utente come richiesto.

@melissa:
per approfondimenti sulle regole di visibilità dei blocchi basate su PHP vedi http://drupal.org/node/60317
..e tieni presente che usando context tutti questi problemi non ci sono

Ciao bohz@drupal.org,
scusami ma io ho testato il caso su un sito drupal 6.19 e riguardo la visualizzazione a tutti tranne admin funziona. Non voglio fare polemiche ma dimmi perchè non ti va come soluzione semplice ed efficace scrivere admin/* nella configurazione del blocco relativo.

Scusami ma non mi soffermo a leggere una pagina in inglese che tratta di visibilità dei blocchi con codice php. Perchè devo smanettare con il codice quando posso mettere una parola sola? Ognuno faccia come vuole del resto...

Grazie per l'eventuale risposta

Quote:
io ho testato il caso su un sito drupal 6.19 e riguardo la visualizzazione a tutti tranne admin funziona.

funziona per tutti i percorsi miosito/admin/[qualcosa]
ma non negli altri, come ad es miosito/about o miosito/node/4
non funziona nemmeno in miosito/admin

il punto però è un altro: la richiesta in OP riguardava una condizione basata sull'UTENTE, non sul PERCORSO

poi certo, fai come ritieni opportuno.
Io cerco di aiutare, non di evangelizzare.

grazie, context intendi il modulo?

scusate se riapro questo post, io ho bisogno di visualizzare un blocco in una pagina

www.sito.com/pagina

solo in questa pagina, mentre in tutte le altro non deve comparire,
compreso
www.sito.com/pagina?3254rt56t547y65

potete darmi una manina?

Scusami asdomar ma il nel mio drupal 6.19 non ho un url del genere:
www.sito.com/pagina?3254rt56t547y65
bensì (ad esempio)
http://www.danzisiweb.it/sviluppo/blog/1
cioè voglio dire che il ? definisce la variabile q successivamente ci sono gli argomenti separati da / oppure &page=1
prova a postarmi l'url corretto!

Io mettendo (in admin/build/block)
blog
blog/*

nella configurazione del blocco, semplicemente funziona.

invece in alcuni casi hai anche quel tipo di url

Ah ok allora metti nella configurazione del blocco Visualizza solo alle pagine indicate:

pagina
pagina/*

E' tutto?! Ciao

Riprendo da questa iniziale :

Quote:
VISUALIZZARE blocco quasi a tutti
ma come si fa a far visualizzare un blocco a tutti i ruoli tranne che all'amministratore?

---
Senza php o altre istruzioni / moduli :
----
Amministraz. del sito > Blocchi
Aggiungo Blocco
metto > descrizione e titolo = test
metto un testo + una foto nel body del block
VISIBILITA' = mostra di default ma permetti di nascondere
MOSTRA A RUOLI = spunto "solamente" la casella Anonymous
--
Il risultato io (admin del sito) non lo vedo mai, solo quando mi sloggo e divento ANONYMOUS riesco a vederlo.
---
era questo il problema iniziale ?