it-swarm-eu.dev

Omezení změn bloku

Jak můžete nechat editor upravit text v bloku, ale ne provést jiné změny konfigurace, jako je přesun bloku z jedné oblasti do druhé?

7
JM01

Po návratu k této otázce po roce nebo tak, existují dvě metody, které jsou velmi jednoduché.

Vytvořte blok a do těla bloku vložte následující kód:

<?php
$node = node_load(77);//77 is the nid of the node I want to put in the block.
$node_content = node_view($node,"full");
print render($node_content);
?>

Nebo můžete vytvořit blok pohledu a filtr na id uzlu.

Nyní někomu dáte oprávnění upravovat typ obsahu, ale nemáte oprávnění jej vytvářet nebo mazat.

0
JM01

V Drupalu mohou měnit nastavení bloku pouze uživatelé s oprávněním ke správě bloků, včetně toho, která oblast je bloku přiřazena.

Pokud vím, neexistují moduly, které umožňují uživatelům přiřadit granulárnější oprávnění. Měli byste napsat svůj vlastní modul, který zobrazuje pouze pole, která může uživatel upravovat.

Například následující kód by změnil sestavení formuláře z block_admin_configure () , funkce, která sestavuje konfigurační formulář pro jakýkoli blok, aby umožnil uživatelům s oprávněním „editovat názvy bloků“ upravovat blok titul.

function mymodule_form_block_admin_configure_alter(&$form, &$form_state, $form_id) {
  if (isset($form['settings']['title'])) {
    $form['settings']['title']['#access'] = user_access('edit block titles');
  }
}

Funkce je implementace hook_form_FORM_ID_alter () vytvořená pro modul s názvem mymodule.module.

Pole pro nastavení regionu (tematické oblasti, z nichž blok vychází) jsou obsažena v $form['regions']; Sada polí obsahuje výběrové pole pro každou povolenou.
Chcete-li zobrazit pole nastavené pouze pro uživatele s povolením „Upravit oblasti bloku“, můžete použít například následující kód.

function mymodule_form_block_admin_configure_alter(&$form, &$form_state, $form_id) {
  if (isset($form['regions'])) {
    $form['regions']['#access'] = user_access('edit block regions');
  }
}

Uživatelé s povolením spravovat bloky mohou změnit oblast přiřazenou k blokům z http://example.com/admin/structure/block . Chcete-li uživateli povolit přístup na tuto stránku bez oprávnění „Upravit oblasti bloku“, měli byste změnit přístupový popisovač této nabídky a nahradit výchozí popisovač přístupu vlastním, který by vrátil FALSE, když uživatelé don Nemám povolení.
Další informace viz hook_men a hook_menu_alter () .

6
kiamlaluno

Podívejte se na modul Block Access .

Tento modul přidává sadu globálních oprávnění pro vytváření, prohlížení, přesouvání, aktivaci, deaktivaci a konfiguraci bloků a oprávnění na úrovni jednotlivých bloků.

5
user842

Modul Bean je možnou alternativou k zodpovězení této otázky. Zde je citace o stránce projektu:

Bean považujte za metodu, jak poskytnout nové typy (ve srovnání s uzlem by to byl typ obsahu), který pak poskytne rozhraní pro přidání obsahu a vytvoří tolik bloků, kolik potřebujete (viz níže uvedený obrázek). Obsah fazole pak může být umístěn kolem webu stejně jako kterýkoli jiný blok.

V kombinaci s možnostmi, které jsou k dispozici pro udělení příslušného Beanova oprávnění , by vám mělo poskytnout velkou flexibilitu ohledně toho, jak přesně chcete tento (skvělý) modul používat. ve vašem konkrétním případě: pro každý jednotlivý blok vytvořený pomocí modulu BEAN můžete použít typickou stránku Permissions (na admin/people/permissions) udělit Přidat/Upravit/Zobrazit/Smazat přístup k vybraným rolím.

Tento modul také funguje skvěle v kombinaci s moduly UUID a ID Features Integration . A poté, co se seznámíte s modulem Bean, můžete na svém webu najít další případy, kdy chcete tento modul také použít (což nějak kompenzuje skutečnost, že musíte přidat další modul).

Výukový program pro video Výukový modul pro modul Drupal Bean - pomocí uživatelského rozhraní Bean Admin poskytuje skvělý úvod, aby bylo možné opravdu pochopit sílu tohoto modulu a druh věcí, které s ním můžete dělat (pouze pomocí technik vytváření webů, není zahrnuto žádné vlastní kódování). Ukazuje také, jak Beanův modul transformuje Drupal bloky) na politelné entity.

Tento modul začal až od D7 (samozřejmě kvůli „entitám“, které byly zavedeny pouze v D7), a již má přes 22 000 hlášených instalací. Ti, kteří jej dosud nepoužívají, by se na něj měli určitě začít dívat při přípravě na upgrade na D8. Protože to je to, co se aktuálně zobrazuje na jeho stránce projektu (přidal jsem tučné označení):

Tento modul je součástí jádra Drupal 8 jádro . Další informace naleznete v tomto vydání informace.

0
Pierre.Vriens

Jedno jednoduché řešení, které bych doporučil, je odhlášení z modulu Boxy . Tento modul bude poskytovat pěkné možnosti inline editace (přes AJAX) pro bloky, což by editorům velmi usnadnilo změnu textu v blocích. Oprávnění by pro editory stále musela být „spravovat bloky“, ale protože nyní budou moci upravovat bloky inline, není opravdu nutné, aby se někdy dostali na stránku konfigurace bloků.
Nyní, pokud stále trváte na odebrání přístupu na tuto stránku konfigurace bloku, můžete jednoduše provést jednoduchou změnu nabídky, která změní oprávnění vyžadovaná pro stránku konfigurace bloku, jako je například následující kód.

function hook_menu_alter(&$items) {
  //Example Use Case, switching permission from "administer block" to "administer site configuration"
  $items['admin/structure/block']['access arguments'] = array('administer site configuration');
}
0
ericduran