it-swarm.it

Mostra nodo in overlay usando drupal 7 modulo overlay

Esiste un modo per aprire un overlay con un contenuto del nodo usando drupal modulo core overlay? Se potessi riutilizzare almeno il codice javascript sarei già felice =)

6
Luiz Guilherme

Il modo più veloce è implementare hook_admin_paths_alter () in un modulo per ridefinire quali delle voci di menu definite in hook_menu() da altri moduli sono percorsi amministrativi. Il valore restituito dalle implementazioni di hook_admin_paths () , che vengono quindi modificati dalle implementazioni di hook_admin_paths_alter(), vengono utilizzati dal modulo Overlay per decidere quali pagine vengono visualizzate come overlay. Poiché altri moduli potrebbero utilizzare le stesse informazioni per eseguire il rendering delle pagine utilizzando un tema diverso, il modulo dovrebbe richiedere il modulo Overlay come dipendenza, per assicurarsi che le pagine aggiuntive vengano effettivamente visualizzate come overlay.

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*/view'] = TRUE;
}

Se noti che questa implementazione non funziona quando gli utenti visualizzano, ad esempio example.com/node/1, ma solo quando visualizzano example.com/node/1/view, implementerei l'hook usando il seguente codice. La prima implementazione che ho fornito dovrebbe funzionare, poiché la scheda "Visualizza" è quella predefinita e quando gli utenti visualizzano example.com/node/1, Drupal mostra davvero example.com/node/1/vista.

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*'] = TRUE;
  $paths['node/*/view'] = TRUE;
}

Dato che la prima riga poteva catturare tutte le pagine del nodo (non l'ho verificato), verificherei se ci sono altre pagine in quel percorso che non dovrebbero essere renderizzate; in tal caso l'implementazione può essere modificata come la seguente ("nodo/*/backlink" è solo un esempio):

function mymodule_admin_paths_alter(&$paths) {
  $paths['node/*'] = TRUE;
  $paths['node/*/view'] = TRUE;
  $paths['node/*/backlinks'] = FALSE;
}
  • Normalmente, i moduli implementano hook_admin_paths() per segnalare quali delle loro voci di menu sono pagine amministrative; ciò significa che se una pagina non è una pagina amministrativa, una voce per quella pagina non viene aggiunta all'array restituito.
  • hook_admin_paths() è implementato per le voci di menu definite nel tuo modulo; per ridefinire quando le voci di menu definite da altri moduli sono pagine amministrative, è necessario implementare hook_admin_paths_alter().
  • Alle pagine definite come pagine amministrative non viene applicato automaticamente un controllo di accesso; ciò significa che il modulo che definisce le voci di menu che sono segnalate come pagine amministrative deve ancora utilizzare "callback di accesso" e "argomenti di accesso" per definire quali utenti possono accedere a quelle voci di menu associate alle pagine amministrative. Le pagine definite come pagine amministrative vengono visualizzate in modo diverso solo se esiste un modulo che lo fa.
  • Il modulo del nodo definisce le pagine di modifica del nodo come pagina amministrativa solo quando è selezionata una casella di controllo in una pagina amministrativa; quelle pagine sono già gestite.
6
kiamlaluno

Puoi anche usare il modulo Overlay Paths . Questo è un semplice modulo che consente agli amministratori di utilizzare l'overlay integrato per le pagine non amministrative. Ciò significa che puoi usare l'overlay per fare popup senza aggiungere ancora più librerie javascript al tuo sito.

6
user842

Ho finito per utilizzare il modulo Percorsi di sovrapposizione con pannelli in modo da poter mostrare il nostro modulo di iscrizione alla newsletter. Il modulo è apparso, ma includeva anche tutto il resto della pagina (intestazione, piè di pagina, barre laterali, ecc.). Stava visualizzando la pagina di iscrizione alla newsletter attraverso il modello di sito predefinito.

Quindi la soluzione complicata era quella di creare una variante sul modello di sito predefinito in Pannelli. La variante è stata selezionata solo se Nodo: Tipo era un modulo Web. Quindi ho rimosso il contenuto in eccesso e ho reso la variante visualizzare solo il contenuto principale.

Presto! La pagina di iscrizione alla newsletter è apparsa in un overlay semplicemente come un modulo che potevo modellare sul contenuto del mio cuore CSS!

1
silentkrange