Tillåtna och icke tillåtna nodvisningar när man använder Domain-modulen

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
AdamEvertsson's picture

Hallojs.

Sitter med ett problem som jag inte lyckas lösa mer än på det teoretiska planet, men vill slänga ut frågan här i gruppen för att se ifall någon sitter på lösningen.

Min setup är Drupal 7-installation med en massa noder. Dessa noder ska spridas till två sajter. På Site1 ska alla Article-noder inte går att accessa förutom via Views (de ska visas på framsidan i en listning, men du ska inte kunna komma åt dem på site1.com/node/1).

På Site2 (med en egen domän) så ska alla noder går att visa, både i listningar och som egna nod-visningar).

Så - med andra ord - går det att stänga nodvisningen på Site1, men ändå hålla dem öppna på Site2.

Jag har testat Rabbit hole-modulen och den fungerar ju fint med det som jag vill åstadkomma - med undantaget att den slår över alla domäner, så plötsligt kan vyerna använda noderna, men på Site2 får vi inte se noderna då....

Teoretiskt sett borde jag kunna skriva kod som kollar vilken site man är på och neka tillstånd att se Articles på Site1, men tillåta det på Site2, men finns det någon bättre väg att gå? Det kanske till och med går att ställa in i Domain att det ska fungera så?

Alla tips mottages varmt.

Mvh
Adam

Comments

Hej Adam, Jag kommer helt

rashidkhan's picture

Hej Adam,

Jag kommer helt enkelt att göra det så här istället för att installera en ny modul.

function personal_node_view($node, $view_mode, $langcode) {
  if(base_path() == 'currentDomain' && $node->type == 'article') {
        drupal_access_denied();
    }
}

Hej Rashidkhan, och tack för

AdamEvertsson's picture

Hej Rashidkhan, och tack för ditt svar. Tyvärr fick jag inte det hela att fungera med din kod. Först och främst tror jag att det är base_url() som man bör använda, så du får domänen, men oavsett där så lyckades jag inte få önskad effekt. Om du har några idéer så tar jag gärna emot dem, annars försöker jag vidare.

Mvh
Adam




✄-----------------------------------------------------
Adam Evertsson - Came for the code, stayed for the community!

En fundering om Panels

Göran's picture

Borde du inte med hjälp av Panels eller Panels Everywhere kunna styra detta genom:
1. Add visibility rule
2. och där välja - String: URL path

Har aldrig testat men det borde vara möjligt? Eller ?
Funkar det kan du dessutom välja de här villkoren för varje panel-conten-setting...

// Göran

Panels och Panels Everywhere

AdamEvertsson's picture

Panels och Panels Everywhere har nog kunnat lösa det på det sättet du beskriver, men det är en så liten sajt så jag vill inte blanda in Panels här.

Löste det dock igår kväll efter en vända på Drupal IRC med följande kod:

function mymodule_node_access($node, $op, $account) {

  if($GLOBALS['base_url'] == 'http://www.mydomain.com' && $node->type == 'article') {
   return NODE_ACCESS_DENY;
    }

}

Hoppas att det hjälper någon annan.

// Adam




✄-----------------------------------------------------
Adam Evertsson - Came for the code, stayed for the community!

Ja, det är definitivt

rashidkhan's picture

Ja, det är definitivt base_url. Jag hade inte testat det, men jag visste att det skulle en hook relaterad till nod. Jag är glad att node_access fungerat för dig :). Jag tror Installera en ny modul är en overhead för en sådan liten uppgift särskilt när det kan göras genom normala hooks.