Làm thế nào để bộ lọc theo ngữ cảnh hoạt động?


9

Tôi đang cố gắng quấn đầu quanh các bộ lọc theo ngữ cảnh một lần nữa! Tôi đã sử dụng nó một thời gian nhưng tôi lại hoàn toàn bối rối. Đây là những gì tôi đang cố gắng làm:

  1. Tạo một trang nút nội dung được nhân bản với các thuật ngữ phân loại được chèn vào trang nhân bản này.

ví dụ: EXAMPLE.com/white-shoes/blue

Khi người dùng đến trang / giày trắng, nó sẽ hiển thị trang nút gốc hướng đến màu trắng. Bây giờ nếu người dùng hạ cánh trên / giày trắng / xanh thì nó sẽ hiển thị cùng một trang nút, nhưng lần này tất cả nội dung cơ thể sẽ được viết lại thay thế màu trắng bằng màu xanh.

Trong Chế độ xem, tôi sẽ phải tạo một màn hình Trang với đường dẫn:% /%

Bây giờ tôi sẽ tạo một bộ lọc theo ngữ cảnh để lấy nid. Tôi thêm Nội dung: nid làm bộ lọc theo ngữ cảnh. Tôi chọn CUNG CẤP GIÁ TRỊ DEFAULT và tôi đặt mã PHP này:

$ x = drupal_lookup_path ('nguồn', arg (0));

$ y = phát nổ ('/', $ x);

trả lại $ y 1 ;

Mã PHP đó về cơ bản chuyển đổi phần / giày trắng của URL thành NID. Nhưng nó không hoạt động. Tôi đã kiểm tra mã thông qua drush ev qua thiết bị đầu cuối và tôi thực sự nhận được kết quả trả về, vì vậy tôi biết nó hoạt động.

Tôi làm tương tự cho tên thuật ngữ phân loại và thêm một bộ lọc theo ngữ cảnh cho điều đó. Lần này tôi chọn CUNG CẤP GIÁ TRỊ DEFAULT và chọn GIÁ TRỊ RAW TỪ URL và chọn đối số thứ 2.

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy khi tôi nhập GIÁ TRỊ TRƯỚC cho bộ lọc theo ngữ cảnh: AAA / BBB / CCC. Giá trị mặc định của tôi bị bỏ qua. Đáng lẽ phải nắm lấy đối số thứ 2, nhưng nó chỉ nhận được đối số thứ nhất. Nhìn vào câu lệnh SQL WHERE và bạn sẽ thấy nó nhận được AAA khi nó phải là BBB.

nhập mô tả hình ảnh ở đây

Vì vậy, câu hỏi là tôi đang làm gì sai hoặc có một giải pháp tốt hơn cho những gì tôi muốn thực hiện?


Điều này nghe có vẻ ngu ngốc, nhưng bạn có thể cung cấp thêm một chút chi tiết? Tôi có một chút thời gian để hiểu những gì bạn đang cố gắng, nhiều hơn về cách bạn đang cố gắng làm điều đó. Thay vì sử dụng giá trị Nguyên hoặc Cung cấp mặc định, hãy sử dụng ID nội dung từ URL. Điều đó sẽ cung cấp NID.
kyletaylored

xin chào, không có ID nội dung kể từ khi bạn truy cập vào url: / trắng-giày / xanh .... url / xanh không tồn tại như được hiển thị bởi lượt xem. vì vậy không có ID nội dung để lấy ... nó phải phân tích đối số thứ nhất của url sau đó chuyển đổi url đó thành đường dẫn NID.
Patoshi パ ト

Câu trả lời:



5

Bộ lọc theo ngữ cảnh được sử dụng để lọc, xuất ra chế độ xem theo các đối số URL, ngoài ra bạn có thể chuyển các đối số theo cách thủ công theo định dạng này:

<?php print views_embed_view($name,$display_id,$arg1,$arg2,$arg3); ?>

trong đó "$ name" là tên của chế độ xem của bạn (ví dụ: 'example_view') và '$ display_id' là loại hiển thị của chế độ xem của bạn (ví dụ 'mặc định') và "$ arg1, $ arg2, $ arg3" là các đối số giống như trong URL.

Đối số URL có cấu trúc sau:

http://example.com/arg_1/arg_2/arg_3 (arg_2 có thành phần đường dẫn 2 (trong trang cài đặt chế độ xem)).

Khi giá trị bộ lọc không có sẵn:

nó có nghĩa là drupal không thể tìm thấy bất kỳ bộ lọc.

Cung cấp giá trị mặc định:

khi giá trị bộ lọc không khả dụng, bạn có thể sử dụng tùy chọn này để tạo bộ lọc cho đầu ra lượt xem, bộ lọc này có thể là mã PHP (nếu mô-đun bộ lọc PHP được bật) hoặc nó có thể nhận giá trị từ các đối số URL -> (Giá trị thô từ url). Hộp văn bản Exception cho phép bạn gian lận giá trị và hiển thị tất cả các kết quả.

Khi giá trị bộ lọc có sẵn

trong trường hợp này, bạn thực hiện xác nhận theo nhu cầu của mình và một số tùy chọn khác, khi drupal có thể tìm thấy giá trị bộ lọc.


đã cho hàm view_embed_view (). Làm thế nào tôi có thể tải nó lên con đường phụ của tôi / giày trắng / xanh? Hãy nhớ rằng / màu xanh không tồn tại như được tạo bởi các khung nhìn. khi người dùng đạt đến đường dẫn / màu xanh, nó sẽ phân tích đối số thứ nhất và tìm nạp NID của bí danh đó sau đó tải lên nội dung của nó. vấn đề với các bộ lọc theo ngữ cảnh là không có cách nào để cung cấp giá trị PHP cho KHI GIÁ TRỊ LỌC CÓ S AVN.
Patoshi パ ト

@duckx, Có một tùy chọn xuất sắc để cung cấp giá trị PHP khi bộ lọc khả dụng - VALIDATION (type: PHP Code). Với tùy chọn này, bạn có thể sử dụng đối tượng xem và làm mọi thứ bạn cần. Trong trường hợp của bạn, /blueđường dẫn được tạo bởi các khung nhìn cũng sẽ được sử dụng để tìm nạp id nút của bí danh đó.
Jack-PL
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.