Wie starte ich Ansichten an der Position% nid (vom Pfad)?

11

Ich habe ein Portfolio mit einigen Knoten (Ansichten3 + Ansichten Diashow mit Zyklus). Alles funktioniert gut, ich habe einen Standardpfad /portfoliofür den Zugriff darauf.

Ich versuche jedoch, für jede Folie einen Pfad festzulegen. Ich möchte in Ansichten verwenden /portfolio/%nidund verwenden, %nidum die erste angezeigte Folie standardmäßig auf diese Knoten-ID zu setzen.

Weiß jemand wie es möglich ist? Ich habe es mit der Benutzeroberfläche versucht, aber ich denke nicht, dass es genug ist.

Tag des Jüngsten Gerichts
quelle

Antworten:

1

In jQuery Cycle gibt es eine Option namens launchSlide. Standardmäßig ist dies wie folgt auf 0 gesetzt: StartingSlide: 0

Wenn ich mich richtig erinnere, gibt es eine Registerkarte / einen Textbereich für erweiterte Einstellungen, in dem Sie Optionen zu jQuery Cycle über die Benutzeroberfläche von Ansichten hinzufügen können. Ich denke, Sie können dort zum Beispiel "StartingSlide: 5" hinzufügen.

Sie müssen herausfinden, welches die Startfolie ist (konvertieren Sie die% nid in welche Zeile in der Ansicht) und sie als HTML-Element hinzufügen. Wenn dies vorhanden ist, können wir es mit jQuery abrufen und als jQuery Cycle-Option hinzufügen. Ich bin mir nicht sicher, welcher Weg der beste ist, aber ich denke, Sie könnten so etwas tun:

    function MYMODULE_views_pre_render(&$view) {
      if($view->name == "MYVIEW") {
        $view->attachment_after = $startingslide;
      }
    }

Sie müssen dort natürlich mehr Code hinzufügen, um $ startingslide herauszufinden. Schauen Sie in $ view-> result nach und finden Sie heraus, welche der Zeilen das Argument ist, das Ihre $ startingslide sein wird. Verwenden Sie dpm () in der Ansicht, um das Objekt zu durchsuchen.

Hoffe das wird dir helfen. Lass mich wissen, was du letztendlich gemacht hast :)

Pontus Nilsson
quelle
0

Sie können Ihrer Ansicht einen exponierten Filter hinzufügen, ihn so konfigurieren, dass Nids greater thanden angegebenen Wert anzeigen , und die URL entsprechend nachahmen.

Zum Beispiel / Portfolio? nid_is_greater_than = 3

Sie können dann Ihren Filter mit CSS ausblenden.

Magtak
quelle
Ich würde ein Argument (Kontextfilter) anstelle eines exponierten Filters verwenden - es sei denn, es werden bereits Argumente verwendet, und dieses zusätzliche würde die Handhabung dieser Argumente beeinträchtigen.
Alfred Armstrong
Ich kenne keine Möglichkeit, einen Feldwert mit einem kontextbezogenen Filterwert zu vergleichen .
Magtak
Guter Punkt. Muss halb geschlafen haben, als ich den vorherigen Kommentar gepostet habe, sorry.
Alfred Armstrong
0

Da es bei Ihrem Problem um das Erscheinungsbild und nicht um die Struktur geht, empfehle ich, es nicht auf dem Server und nicht im URL-Pfad, sondern auf dem Client mit einem URL-Fragement zu lösen: / Portfolio # slide- [nid].

Ich habe den Javascript-Code für Ansichten Diashow + Zyklus nicht gelesen, aber ich denke, es ist ziemlich einfach, das Verhalten beim Lesen des URL-Fragments bei der Initialisierung der Diashow zu übernehmen. Oder vielleicht ist bereits eine solche Logik implementiert, die Sie verwenden könnten ...

gue
quelle
0

Wie wäre es mit der Option "Ausgabeergebnisse umschreiben" im Abschnitt "Felder" der Ansichten?

  1. Gehen Sie in Ansichten zu Feld konfigurieren (Bild)> Ergebnisse neu schreiben
  2. Aktivieren Sie das Kontrollkästchen "Dieses Feld als Link ausgeben"
  3. Geben Sie den Linkpfad (nid /) und andere Details ein
  4. Klicken Sie auf Übernehmen
  5. Ansicht speichern

Hoffe das hilft.

Supriya Rajgopal
quelle
0

Views übergibt node_view()in diesem Fall die Anzeige an und wird nicht mit dem Markup für die Zeile in Verbindung gebracht.

Der einfachste Weg, das zu tun, was Sie wollen, besteht darin hook_preprocess_node(), im aktuellen Kontext nach einer Ansicht zu suchen. Wenn der Knoten als Teil dieser Anzeige gerendert wird, können Sie einige Änderungen vornehmen.

SCHAU DIR DAS AN:

function MYMODULE_preprocess_node(&$vars) {
  if (!empty($vars['view']) && $vars['view']->view_name == 'foo') {
    $nid = $vars['node']->nid;
    $vars['extra_link'] = l('Some text', "node/$nid");
  }
}

In Ihrer node.tpl.phpDatei haben Sie Zugriff auf$extra_link.

Ataboy Josef
quelle