Permissions für einzelne Nodes durch Authentifizierung mit verschiedenen(!) FB-Apps?
am 10.09.2012 - 20:35 Uhr in
Ich hab hier grad eine knifflige Aufgabe auf dem Tisch, für die es zwar fertige Tools gibt. Lieber wäre uns jedoch was Eigenes mit Drupal als Backend.
Die Überlegung ist, Nodes mit Webform anzulegen. Dabei soll jeder einzelne Node als FB-App verdrahtet sein, mit App-Id und allem, Darstellung als IFrame. Das ist dann soweit auch kein Problem.
Schwierig wird es nun, weil nur Nutzer, die die jeweilige App zugelassen bzw. Seite geliked haben, auch auf die Website bzw. die jeweilige Unterseite kommen sollen - es sollen also keine unauthentifizierten Zugriffe erfolgen.
Bei den ganzen einschlägigen FB-relevanten Modulen gibt es meines Wissens nur welche, wo EINE App-Id für die ganze Website eingetragen werden kann. Die wären also an der Stelle nicht brauchbar.
Auch soll im IFrame bei Benutzern, die die zugehörige Seite noch nicht geliked haben, eine entsprechende Aufforderung statt des Inhalts angezeigt werden, Stichwort Fangate. Ich muss mich also sowieso noch in die ganze OpenGraph-Thematik einarbeiten. Kann ich mir die benötigten Werte für beide Teilaufgaben da einfach rausziehen und dann per Modul oder im Template bestimmte Bereiche anzeigen und verbergen bzw. auf eine andere Seite redirecten? Es soll nach Möglichkeit alles im IFrame laufen und die Drupal-Site selbst nicht erreichbar sein.
Mir erscheint das jetzt erstmal eine halbwegs sinnvolle Vorgehensweise, aber vielleicht hat ja auch jemand schon mehr Erfahrungen in der Thematik und weiß, was geht und was definitiv nicht geht?
Merci!
- Anmelden oder Registrieren um Kommentare zu schreiben
Nach ein paar Tests denke
am 11.09.2012 - 16:40 Uhr
Nach ein paar Tests denke ich, das sollte so eigentlich funktionieren, mit Einbindung von Facebooks PHP-SDK und entsprechendem Code in ein Modul
Ich seh nur aktuell den Wald vor Bäumen nicht und übersehe was Offensichtliches. Hab bislang mit den üblichen Hooks Variablen verändert etc.
Was mir aber gerade irgendwie fehlt, ist eine Funktion, die mir ganz simpel die Werte von zwei Feldern des jeweiligen Nodes als Rückgabewert liefert, und die umgekehrt die Parameter so hat, dass ich innerhalb der Funktion an die Werte komme. Hab schon viel rumprobiert, aber waren alles Sackgassen. Und die ganzen Hooks etc. sind ja immer dermaßen "standalone" dokumentiert, dass man für eine solche Anwendung auch nicht wirklich ein Beispiel findet.
Per
hook_node_load($nodes, $types)
komme ich an die Felder ran, das ist kein Ding - nur brauche ich die außerhalb der Funktion, um sie an anderer Stelle im Modul verwursten zu können. Also so wie$meineVariable = hook_node_load($nodes, $types);
- was aber so natürlich nicht funktioniert. hook ist natürlich durch den Modulnamen ersetzt.Drupal Freelancer im Rheinland gesucht?
Nur node_load($id) verwenden.
am 11.09.2012 - 17:19 Uhr
Nur node_load($id) verwenden. Das ist kein hook, sondern eine Funktion des Node-Modules.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Danke für Deine Antwort,
am 11.09.2012 - 21:38 Uhr
Danke für Deine Antwort, Werner, aber:
'nen Hook mit den oben genannten Parametern gibt es aber auch. Und wie binde ich die von Dir genannte Funktion jetzt ein? Einfach so, da krieg ich nur die Info, dass die leider undefined ist - das hatte ich nämlich vorhin auch schon versucht.
Deklariere ich die Funktion in meinem Modul, dann meckert das Node-Modul mit "Cannot redeclare ...".
Ich komm irgendwie "from scratch" und ohne Hooks einfach nicht ran an $node und alles, was dahinter hängt.
Drupal Freelancer im Rheinland gesucht?
Du brauchst aber die normale
am 11.09.2012 - 22:27 Uhr
Du brauchst aber die normale Funktion [api:node_load]. Wenn er die nicht findet, musst Du auf Existenz prüfen und falls noch nicht da, mittels include_once die entsprechende Datei des Node Moduls von Hand laden.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Mich wundert das auch
am 11.09.2012 - 22:56 Uhr
Mich wundert das auch irgendwie jetzt. Hab haufenweise Beispiele gesehen, auch in Modulen mit quasi nichts außer dieser Funktion, wo die zu funktionieren scheint. Wieso bei mir nicht?
Also mal ganz simpel, angenommen, ich hätte ein Modul, das genau so aussähe, nichts weiter macht:
<?php
$nid = 1;
$node = node_load($nid);
dsm($node);
Und natürlich auch angenommen, dass es den Node mit der $nid 1 gäbe.
Das Ganze wird auch auf einer Seite mit einem Node, bzw, sogar genau diesem Node aufgerufen.
Wenn ich auf Existenz prüfe, kommt nach dem include_once der node.module (natürlich im entsprechenden Unterverzeichnis) bei einer weiteren Existenzabfrage immer noch, dass die Funktion nicht existiert?
Was fehlt mir da bloß, dass so 'ne popelige Funktion nicht will?
Drupal Freelancer im Rheinland gesucht?
Verstehe ich jetzt nicht. Da
am 11.09.2012 - 23:21 Uhr
Verstehe ich jetzt nicht. Da müsste man Deinen Code genauer untersuchen. Arbeitest Du da evtl. mit OO-Code? Dann wäre so etwas denkbar, wenn die Funktion in einen speziellen Context geladen wird und dann anderswo nicht zur Verfügung steht.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Den genauer zu untersuchenden
am 11.09.2012 - 23:58 Uhr
Den genauer zu untersuchenden Code habe ich doch gerade im letzten Post zitiert! Um das unabhängig von der restlichen Funktionalität des geplanten Moduls zu überprüfen, habe ich in der .module-Datei ausschließlich diese drei Zeilen stehen, die so oder ähnlich jetzt in zig Threads zu dieser Funktion zu finden waren.
Da ist nix mit OO-Code, da ist sonst überhaupt nix custom, das ist ein frisches D 7.15 mit ein paar gängigen Modulen und zwei Nodes, bei einem von mir angelegten Content Type mit zwei (Text-)Feldern und dazu Webform enabled.
Drupal Freelancer im Rheinland gesucht?
Und wie denkst Du, wird
am 12.09.2012 - 08:31 Uhr
Und wie denkst Du, wird dieser Code aufgerufen oder von wo? Du musst doch diesen Code in einer Funktion haben die über einen definierten Mechanismus, z.B. einen Menüpunkt oder einen Hook, aufgerufen wird. Jetzt ist mir auch klar, was passiert: beim Booten von Drupal wird dieser Code einmal durchlaufen (vielleicht auch gar nicht) und vom Node-Modul ist noch nichts zu sehen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
wla schrieb Und wie denkst
am 12.09.2012 - 10:39 Uhr
Und wie denkst Du, wird dieser Code aufgerufen oder von wo? Du musst doch diesen Code in einer Funktion haben die über einen definierten Mechanismus, z.B. einen Menüpunkt oder einen Hook, aufgerufen wird.
Genau DAS war ja meine Frage, und genau DESHALB hab ich ja auch lieber über einen Hook arbeiten wollen.
Ich will an dem Punkt beim Node-Aufruf nix modifizieren, nix speziell rendern oder so, das soll alles normal ausgegeben werden. Ich brauche nur den Wert zweier Felder des Inhaltstyps, den ich an eine andere Funktion übergeben kann, die dann mit Facebook interagiert.
Drupal Freelancer im Rheinland gesucht?