Làm cách nào để sử dụng tiêu đề nút hoặc bí danh đường dẫn thay vì id nút trong bộ lọc ngữ cảnh tham chiếu nút trong chế độ xem?


8

Tôi có nút A với tham chiếu nút đến nút B.

Trong một khung nhìn, tôi hiển thị tất cả các nút A có nút B được tham chiếu cụ thể (nid: 123, title: node-B-title).

Thay vì sử dụng nid trong bộ lọc theo ngữ cảnh, tôi muốn sử dụng tiêu đề nút. Ví dụ: thay vì:

view-name/123

Tôi muốn sử dụng

view-name/node-B-title

Làm thế nào tôi có thể làm điều đó?

Câu trả lời:


11

Tôi đã có một vấn đề rất giống nhau và tôi không chỉ tìm ra giải pháp cho nó, mà còn học được những điều mới về cách hoạt động của view. Hãy để tôi chia sẻ những gì tôi học được và giải pháp cho vấn đề của bạn.

Khi bạn đang tạo chế độ xem bằng một hoặc nhiều bộ lọc theo ngữ cảnh, chế độ xem phải nhận giá trị của các bộ lọc đó từ một nơi nào đó. Điều này có thể được thực hiện bởi -

  1. Chọn (các) giá trị bộ lọc ngữ cảnh từ URL
    • Thông thường, bạn sẽ có chế độ xem trang cho các mục đích như vậy có URL của biểu mẫu foo/%/barhoặc foo/bar/%cho một bộ lọc theo ngữ cảnh HOẶC của biểu mẫu foo/%/bar/%hoặc foo/bar/%/%cho nhiều bộ lọc
    • Trong trường hợp bạn có nhiều bộ lọc, giá trị url xuất hiện đầu tiên được ánh xạ tới bộ lọc thứ nhất, bên cạnh bộ lọc thứ hai, v.v.
  2. Chế độ xem cho phép bạn biết phải làm gì nếu các giá trị bộ lọc không có sẵn trong URL . Điều này thường được sử dụng cho chế độ xem khối .
    • Bạn có thể chọn từ các hành động khác nhau và sau đó cấu hình lựa chọn. Bạn có thể chọn từ các hành động khác nhau và sau đó cấu hình lựa chọn. asdfj kajsdf
  3. Một quan điểm khác cho phép bạn nói là phải làm gì với các giá trị bộ lọc nếu chúng được tìm thấy trong URL như được mô tả trong # 1 ở trên. Các trường hợp sử dụng điển hình là - Tạo tiêu đề động dựa trên giá trị bộ lọc, Xác thực giá trị bộ lọc, v.v.
    • Khi xác thực các giá trị bộ lọc, bạn cũng có thể thay đổi các giá trị! (Đó là nơi giải pháp của chúng tôi nằm btw). Điều này rất giống với cách chúng ta có thể thay đổi giá trị biểu mẫu $ trong các cuộc gọi lại xác thực hình thức drupal. nhập mô tả hình ảnh ở đây

Giải pháp cho vấn đề cụ thể của bạn nằm ở việc sử dụng một mã rất giống nhau trong các phần được chỉ ra bởi các mũi tên trong hình trên.

Liên kết này đã được chứng minh là giúp đỡ rất nhiều cho tôi. Đây là một đoạn trích từ nó:

$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
  $handler->argument = $np[1];
  return TRUE;
} else {
  return FALSE;
}

Điều này không làm việc cho tôi, nhưng lại gây ra lỗi ajax trong chế độ xem khi lưu.
DrCord

1

Điều này sẽ không hoạt động trong mọi trường hợp, nhưng một cách tiếp cận vấn đề trong câu hỏi là sử dụng hiển thị nút thực tế của nút B (hoặc loại nút B) và đặt đường dẫn của nó theo cách bạn muốn với mô đun đường dẫn hoặc pathauto. Sau đó sử dụng khối lượt xem để thêm mối quan hệ nội dung và chế độ xem bạn muốn.

Sử dụng bộ lọc theo ngữ cảnh trên NID và sau đó cài đặt Provide default value > Content ID from URL. Sau đó thêm khối lượt xem vào trang của bạn hoặc bộ trang.

Nếu ngữ cảnh của bạn cho phép bạn sử dụng khối lượt xem trên chính nút đó chứ không phải trang xem, điều này sẽ giúp bạn có được đường dẫn bạn muốn và màn hình hiển thị bạn muốn dễ dàng hơn nhiều.


1

Tôi đã chỉnh sửa câu trả lời được chấp nhận, nhưng muốn thêm mã thực tế vào đây:

Sử dụng tùy chọn xác thực PHP dưới các tùy chọn xác thực trong bộ lọc theo ngữ cảnh.

$np = explode('/', drupal_get_normal_path($argument));
if (!empty($np[1])) {
  $handler->argument = $np[1];
  return TRUE;
} else {
  return FALSE;
}

1

Đối số khung nhìn phải là tham chiếu trường của loại nội dung, sau đó chọn tùy chọn "Cung cấp đối số mặc định" và kiểm tra tùy chọn Id Node (đại loại như thế).

1) Thêm đối số "Tham chiếu trường X" 2) Kiểm tra nút ID từ url (trong thêm đối số mặc định) 3) Trong phần xác thực, kiểm tra loại nội dung của nút và trên tập hợp "Loại nút" chọn "Id nút

Và đã xong. :)


"ID nội dung từ URL" chỉ cung cấp cho nid. Nếu tôi sử dụng tham chiếu thuật ngữ, tôi có thể sử dụng "tiêu chí xác thực" với "tên thuật ngữ được chuyển đổi thành ID hạn". Đối với tham chiếu nút không có tùy chọn tương tự để dịch tiêu đề sang nid. Có lẽ bởi vì tiêu đề không nhất thiết phải là duy nhất.
uwe

Có là đúng, nhưng cần thiết đối số phải là tham chiếu trường (nid), hãy thử điều đó.
Eleo

1) Thêm đối số "Tham chiếu trường X" 2) Kiểm tra nút ID từ url (thêm đối số mặc định) 3) Trong phần xác thực, kiểm tra loại nội dung của nút và trên tập hợp "Loại nút" chọn "Id nút"
Eleo

Url thực tế có thể có nid và bí danh đường dẫn có thể là tiêu đề nút. Điều này không làm việc phải không?
SGhosh

0

Câu hỏi cũ, nhưng đã tìm thấy nó thông qua Google và hình dung tôi sẽ chia sẻ giải pháp của mình cho bất kỳ ai khác tìm thấy nó trong tương lai:

Hiện tại có một mô-đun có tên safeword , về cơ bản thực hiện chính xác những gì Sumeet Pareek đã đề xuất: (Tự động) tạo ra một trường thân thiện với URL.


0

Tôi muốn giới thiệu mô-đun Đường dẫn mở rộng (path_alias_xt) . Nó khắc phục vấn đề này hoàn toàn bằng cách được cài đặt không có cấu hình, về cơ bản là ma thuật. : D Không thực sự, nhưng đoạn trích từ trang mô-đun nói về cách bạn chỉ cài đặt nó và nó khắc phục vấn đề này và các vấn đề khác, nhưng không đi sâu vào cách thức mô-đun làm như vậy đằng sau hậu trường ... O, tốt, chúng ta luôn có thể đọc mã: D Nó không đề cập cụ thể đến việc sửa các đường dẫn khung nhìn, nhưng tôi đã sử dụng nó để làm như vậy và nó hoạt động hoàn hảo.

Danh sách các vấn đề nó giải quyết, từ trang mô-đun:

  • Bạn có bao giờ tự hỏi tại sao, sau khi xác định một bí danh như about-us cho, ví dụ, nút / 123, các trang của bạn vẫn bị đánh đố với các tab và liên kết được tạo ra bởi máy xấu xí như / node / 123 / chỉnh sửa, nút / 123 / phiên bản, v.v. .?
  • Tương tự như vậy đối với / taxonomy / term /% và / user /% links: bạn có mong đợi thấy / khô / track nhưng got / user / 5 / track không?
  • Bạn có thấy rằng thanh địa chỉ trình duyệt của bạn cũng hiển thị những con số xấu xí đó thay vì bí danh của bạn không?
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.