Views mit Parameterübergabe
am 28.09.2015 - 12:38 Uhr in
Guten Tag,
vorab: ich bin ein Drupal-Anfänger und habe ein großes Projekt vor mir, dass ich auch unbedingt bewältigen muss.
Es wäre echt toll wenn ihr mir helfen könntet und es auch etwas detaillierter erklärt. :)
Genaue Details des Projekts nenne ich jetzt nicht, nur die Grundidee. (also nicht über den Sinn wundern)
Die Idee:
Ich habe ein vorgefertigtes Bild, in viele einzelne Rechtecke geteilt und als View wieder zu einem ganzen Bild vereint.
User sollen nun einen Abschnitt des Bildes (oder auch mehrere) auswählen können und ihr eigenes Bild an dieser Stelle einfügen.
Am Ende entsteht eben eine große Collage durch viele Nutzer.
Probleme:
1) Wie kann ich die css verändern (wo finde ich diese) um den Rand zwischen den Bildern zu ändern?
Die Tabelle (Spalten/Zeilen) haben kein Padding, ich denke es liegt am div in dem das Bild steckt.
2) Was kann ich machen damit ich nicht für jeden Content - der Bildabschnitt (es werden mehrere hunderte) - eine einzelne Seite machen muss.
Ich habe mir das so vorgestellt, dass es 2 verschiedene Seiten gibt:
belegt - mit Infos zu der Person/dem Bild und nicht belegt - hier können die User ihre Bilder hochladen.
Also sollte nur eine ID mit dem Bild und dem angemeldeten Nutzer übergeben werden und daraus soll erkannt werden ob eine Seite mit Infos kommt oder die Seite fürs Hochladen.
3) Die Abschnitte sollen in bestimmte Kategorien eingeordnet werden. Ich vermute das funktioniert mit "Taxonomy" aber irgendwie bekomme ich die Kategorien nicht in die Views :/
Was haltet ihr bisher von der Idee der Umsetzung?
Sollte ich das Bild in einzelne Views spalten oder gibt es auch sowas wie bei html IMAGE MAP, wo man das ganze Bild in einzelne Teile teilt und mit IDs bestückt?
Ich danke euch schonmal für eure Hilfe und Interesse. :)
- Anmelden oder Registrieren um Kommentare zu schreiben
?
am 30.09.2015 - 00:38 Uhr
Also die css habe ich
am 30.09.2015 - 10:59 Uhr
Also die css habe ich gefunden, aber sie ist schreibgeschützt?!
Wie meinst du das mit dem Rasten? Wenn ich ein view mache wird in der Html automatisch eine Tabelle erstellt.
Belegt heisst, ein User hat das Bild ausgetauscht durch sein eigenes, nicht belegt, dass man das Ursprungsbild sieht.
Habs bisher so gemacht: für jeden Bildabschnitt hab ich den Inhalt (in php) der prüft ob es belegt ist oder nicht und dann auf die entsprechende Seite weiterleitet. Da ich mich gestern in die Datenbank von Drupal reingefuchst habe sieht das schon alles einfacher aus ^^
Taxonomy geht jetzt auch.
Das mit der Imagemap suche ich nochmal.
Falls ihr trotzdem noch Anregungen habt, ich bin offen für alles :D
Größeres Problem was ich noch habe: wie finde ich Parameter wie 'aktuell angemeldeter User (ID)' oder 'gerade angeklickte Node(ID)' heraus? Das brauche ich für die Datenbankeinträge, also:
User X hat gerade Node Y angeklickt und Bild Z hochgeladen und in der Datenbank wird dann abgespeichert das Bild Z von User X auf Platz Y ist.
Lieber mit Kabeln?
am 30.09.2015 - 11:24 Uhr
CSS, vielleicht hast Du css-Dateien aggregiert?
Du verlötest also lieber die Kabel neu, ich begnüge mich mit den Schaltern an der Oberfläche.
Ein View unterscheidet Raster und Tabelle, im HTML ist natürlich beides eine Tabelle.
Wenn Du z.B. die Uid des angemeldeten Benutzers in der Ansicht (View) als Filter verwenden möchtest, geht das prima im Kontext (Context) Filter (Advanced Views-Bereich rechts).
Ich kenne deine Anforderungen nicht. Bisher vermute ich, dass jeder User ein Benutzerbild hat und durch das Anklicken in einer Map sein Bild dort platziert werden soll, richtig?
Ja genau. Jeder User soll bei
am 30.09.2015 - 12:12 Uhr
Ja genau.
Jeder User soll bei der Anmeldung Bild, Name, Kommentar etc eintragen und kann sich dann eine Fläche aussuchen.
Das Bild soll dann an der Stelle zu sehen sein und wenn man drauf klickt sollen seine Daten auf einer extra Seite zusehen sein.
Da bin ich auch grad dran, wie ich die Registrierung ändern kann, dass man gleich Bild etc einfügen kann.
(Ist ja standardmäßig nur username und passwort)
Mit dem User habe ich auch bereits hingekriegt. Gibt da in php einfach die Anweisung $user->uid bzw $node->nid.
Benutzerbilder
am 03.10.2015 - 18:31 Uhr
Hier kannst Du Benutzerbilder aktivieren:
/admin/config/people/accounts
In den Feldern des Benutzers kannst Du ja auch das Feld "Kommentar" oder so einfügen.
Klappt das mit deiner php-Änderung nach einem Update reibungslos?
Wie gesagt, im View-Modul gibt es das alles abrufbar.
Also die Registrierung ist
am 06.10.2015 - 16:24 Uhr
Also die Registrierung ist jetzt fertig (inklusive Bild) mit dem Modul profile2.
Mit php klappt alles. Kann jetzt einen Teil des Bildes auswählen und für mich beanspruchen, bzw sehen wer das Bild beansprucht hat.
Jetzt stehe ich vor dem nächsten Problem:
Ich ändere wenn ein Bild "beansprucht" wird bei file_usage und field_data_field_bild (der 'typ' für die Profilfotos und Contentfotos) die file-id von dem standardbild in das Profilbild des Users. Allerdings ändert sich nix.
Also wenn Node 1, anfang Foto 1 war, und User X mit Profilbild Y nun das Bild 'überschreibt', steht zwar in der Datenbank Node 1 gehört zu Foto Y, aber es ist immer noch Bild 1 im View zusehen. Gibts da was was ich noch beachten muss?
2.Problem (noch gar nix gemacht, also vllt bekomme ich es auch selbst hin):
Die Bilder skalieren, also wenn die Bilder der Nutzer nun in der View auftauchen, sollen die Benutzerbilder die gleiche Größe haben wie die restlichen View-Bilder.
Ich danke dir schonmal für all deine hilfreichen Tipps. Sieht schon ganz gut aus das Projekt :)
mmhh
am 06.10.2015 - 16:11 Uhr
toll, dass Du das mit php so weit hinbekommen hast. Aber eigentlich hättest Du für die Bilder und das Kommentarfeld kein Profile2 gebraucht. Ich schau mir das später nochmal an, muss jetzt bissl arbeiten.
Die Frage ist immer noch, ob das nach einem Update noch klappt. Welche php hast Du denn bearbeitet (neugierig)?
Hab gerade meinen Beitrag(den
am 06.10.2015 - 16:34 Uhr
Hab gerade meinen Beitrag(den vorherigen) nochmal überarbeitet, da ich jetzt die Verbindung zwischen profile und dem benutzerfoto gefunden habe^^
(Für alle die es interessiert: in der DB unter profile findet man uid und pid, und die pid ist in file_usage gleich der id)
Aber das mit den "Überschreiben" klappt nicht so :/
Wie meinst du das mit dem Update?
Hab keine bestehende php bearbeitet (wie geht denn das? :D ), nur neue hinzugefügt.
Also wenn ein Bild angeklickt wird, kommt man entweder auf die Seite eines Users, oder eine Seite bei der man das Bild mit seinem eigenen überschreiben kann.
(Die php-Seite im content prüft halt ob das Feld belegt ist oder nicht und leitet dann weiter).
Und eine php, die das halt alles in die Datenbank einfügt, also wenn jemand das Bild überschreiben will:
-In eine 'eigene' Tabelle "belegt" wird die entsprechende nodeid und userid eingefügt, und
-Die fileid wird für das Bild geändert (funktioniert noch nicht so ganz im view)
Wow
am 07.10.2015 - 15:20 Uhr
In der View heißt das einfach Benutzerbild oder Bild des Benutzers.
Mit Update meinte ich, dass Du beim Update der Drupalinstallation (demnächst also 7.40) dein php wieder neu einfügen musst, was natürlich kein Problem darstellt.
Wenn Du eine php-Datei geändert (überschrieben) hättest, und Du so etwas öfter machst, wäre eben der Aufwand größer. Für dich wird das OK sein, für mich, der das nur nebenbei macht, bedeutet das Arbeit.
Dieser Register/Bild-Vorgang ist interessant und in Rechteverwaltung und Workflow komplex. Da muss Dir jemand mit php-Wissen helfen. Ich kann nur Wege an der Oberfläche aufzeigen.
Mir fällt da nur noch das Modul Rules ein.
Mich interessiert aber schon, wie das so aussieht ;-)
Also Update habe ich (noch)
am 09.10.2015 - 09:19 Uhr
Also Update habe ich (noch) nicht gemacht. Von daher kann ich nichts dazu sagen^^
Okay, wenn du mir bei der Oberfläche helfen kannst:
Ich habe gehört, dass man in der View die Fields (also was in der View angezeigt wird?) mittels Filter Criteria (oder etwas anderem?) mit einer Bedingung versehen kann.
Zb mit Taxonomy, also am Beispiel:
Wenn das Feld/der Content/Bildabschnitt belegt ist (Taxonomie: belegt = angeklickt) dann zeige dass benutzerbild (müsste ich dann denke ich in der Datenbank mittels php herausfinden) ansonsten zeige das Field_Bild des Contents (also was am Anfang im Content eingetragen wurde).
Kennst du dich damit aus?
Bräuchte ja iwie das Filterkriterium "Taxonomie belegt" und ein Feld (evtl php-Code?) wo ich sagen kann, was dann angezeigt werden soll.
Oder vllt auch ohne Taxonomie, also dass ich einfach anstatt einem vorgegeben kriterium ein feld habe ich dem ich selbst die Bedingung schreibe?!
(Müsste ja nur in meiner DB - schon erledigt - raussuchen ob es belegt ist und dann dazu das Profilbild suchen)
Taxo
am 09.10.2015 - 19:22 Uhr
Mit Taxonomie wäre zwingend ein Eintrag notwendig, aber das System soll ja selbst erkennen, ob das Bild belegt ist.
Ist nicht der "Urzustand" ein Stellvertreter-Bild mit einem bestimmten Namen?
Den könnte man eher filtern.
Sorry, bin gerade kaputt, morgen wieder.
Zwischenstand
am 19.10.2015 - 10:57 Uhr
Also habe es nicht mit Taxonomie gemacht (hast du Recht ist zu umständlich weil man immer noch einen extra Wert hat), sondern mit einer Datenbanktabelle (belegt mit Bild und User).
Mittels Views PHP habe ich es jetzt soweit, dass das Userbild angezeigt wird bei belegten Bildern, ansonsten das Ursprungsbild.
Jetzt bin ich dabei einen Weg zu finden Nodes automatisch einzufügen.
Heißt: ich habe seeeehr viele Bilder/Nodes die eingefügt werden müssen und da die Bilder alle durchnummeriert sind würde es sich anbieten ein kleines Skript zu schreiben. ^^
Den Code habe ich bereits gefunden, aber nie eine Anleitung wo man dass ganze eingibt/ausführt/speichert wie auch immer.
Weiteres Problem (aber das ist HTML) wie ich das Ursprungsbild anzeige und das Userbild transparent darüber lege.
Und: wenn mehrere aneinanderliegende Bilder vom gleichen User belegt sind, sollte es eigentlich (ist kein Muss, damit werde ich mich als letztes beschäftigen) auf der gesamten Fläche das Userbild zusehen sein, und nicht auf den x Flächen einzeln.
swimming
am 19.10.2015 - 11:22 Uhr
ich gebe zu, bei deinem Vorhaben komme ich in's Schwimmen. Bist Du mit dem Durchnummerieren noch in Views? Da gibt es die Möglichkeit, Ergebnisse z.B. nach Namen zu sortieren.
Und hast Du dich bei Views schon mit dem Kontextfilter und den Beziehungen (Relations) im Abschnitt "Erweitert" (Advanced) beschäftigt? (ich weiß nicht, ob Du eine englische oder deutsche Installation hast)
Und sind deine Bilder alle Nodes? Das ist ja nicht zwingend, es können auch Dateien sein.
Ja also jedes Bild ist ein
am 19.10.2015 - 12:12 Uhr
Ja also jedes Bild ist ein eigener Content. Die Titel habe ich wiefolgt genannt 0101 für das Bild 1.Reihe 1.Spalte, 0102 für das Bild 1.Reihe 2.Spalte usw. und so habe ich die Bilder auch im View sortiert (das am Ende das Bild auch schon richtig dargestellt wird). Also eine Tabelle die Reihenweise das Bild aufbaut mit x Spalten (0101,0102,0103,...,01xx, 0201,...)
Naja mit Filtern habe ich mich bisher noch nicht so beschäftigt.
(und englische Version habe ich, war bsiher zu faul umzustellen :D )
Ja die Bilder sind alle Nodes, weil ich (denke ich) den Inhalt brauche, also dass ich auf das Bild gehe und dann weitergeleitet werde zur User- oder "Ich will den Abschnitt haben"-Seite ^^
Hab das auch schon so gemacht, dass die Node-Id mit den Usern verknüpft ist (wäre schade, das überall nochmal zu ändern)