Bộ lọc ngữ cảnh Drupal 7 trên Bí danh URL


7

Tôi có một cái nhìn cho thấy một danh sách các bài báo, nằm ở:

mypage.com/articles

Mỗi bài viết được liên kết với chế độ xem trang phụ chính của nó, như thế này:

mypage.com/articles/name-of-my-artile-yay

Đường dẫn URL được tạo với các bí danh autopath & URL.

Trong chế độ xem, làm cách nào để tạo bộ lọc theo ngữ cảnh để chỉ hiển thị chế độ xem trang phụ đã chọn?

Tôi có điều này là con đường của tôi trong quan điểm:

bài viết/%

nhưng không biết đi đâu từ đây. Tôi đã thử tiêu đề và đặt chữ thường và thay thế dấu cách bằng dấu gạch nối, nhưng điều đó sẽ không luôn hoạt động và các bí danh URL thay đổi URL sao cho nó xóa các từ như:

a, an, như, tại, trước, nhưng, bởi

Và nếu một tiêu đề trang là:

Đây là tiêu đề trang của tôi - với cái này

Bí danh URL trở thành:

tiêu đề của tôi

Do đó, nó sẽ không thể khớp với bộ lọc theo ngữ cảnh của tôi bằng tiêu đề trang.

Tôi đang thiếu gì?


Điều gì bạn muốn có xảy ra nếu 2 nút có cùng tiêu đề?
Charlie Schliesser

Bí danh đường dẫn URL sẽ khác nhau. Đó là một trong những lý do tôi muốn sử dụng URL path Aliasvà không phải tiêu đề.
chuông điện tử

À, vậy bạn có đang tìm cách ghép các bài viết / tiêu đề trang của tôi và tải vào nút tương ứng không? HOẶC bạn đang tìm kiếm bài viết / My% 20Page% 20Title để làm việc?
Charlie Schliesser

articles/my-page-titleđó là bí danh đường dẫn URL.
chuông điện tử

Câu trả lời:


8

Tôi nghĩ cách đơn giản nhất là sử dụng Bảng và ghi đè trang Nút. Thêm một biến thể và đặt chế độ xem của bạn vào đó và gửi đối số nid của nút cho nó, sử dụng đối số theo ngữ cảnh của nút: nid.

  1. (cài đặt trình quản lý trang)
  2. Cho phép trang xem nút (nút /% nút)
  3. Thêm một biến thể, đặt tiêu chí xác thực chọn loại nút liên quan của bạn
  4. Sử dụng hiển thị một cột đơn giản
  5. Thêm quan điểm của bạn trong cột của bạn
  6. Nó yêu cầu một đối số, gửi nút: nid , (hoặc entity_id hoặc bất cứ điều gì)Gửi nid của nút của bạn để xem của bạn
  7. Theo quan điểm của bạn, hãy sử dụng nút: nid bộ lọc theo ngữ cảnhQuan điểm của bạn

Tất cả đã xong.


Xin chào @Gregory - Tôi đã cài đặt bảng điều khiển và xem một vài hướng dẫn nhưng không thể tìm thấy bất cứ nơi nào để làm những gì tôi cần. Tất cả các hướng dẫn dường như sử dụng phân loại. Tôi chỉ muốn sử dụng Bí danh Đường dẫn Url. Bất kỳ đề nghị về cách tôi làm điều này?
chuông điện tử

Tôi chỉnh sửa câu trả lời.
Gregory Kapustin

Xin chào @Gregory - Tôi đã làm theo hướng dẫn của bạn và tôi nhận được một trang trống trên chế độ xem nút. Tôi đoán đó là một cái gì đó nhưng tôi vẫn làm điều gì đó sai. Có ý kiến ​​gì không? Với # 3 Add a variant, set a validation criteria selecting your concerned node typetôi chỉ có một lựa chọn dưới Variant type đó là Panel. đúng không?
chuông điện tử

Chính xác. Nếu đó là một trang trống, thì biến thể của bạn được chọn, vấn đề nằm ở việc hiển thị chế độ xem hoặc đối số bạn đang gửi tới nó. Tôi cập nhật câu trả lời.
Gregory Kapustin

Awesome @Gregory - Công việc này .. Tôi chỉ có một vấn đề. Nó ảnh hưởng đến TẤT CẢ các nút của tôi và không chỉ articleloại nội dung của tôi . Tôi cho rằng nó phải làm với số 3 nhưng tôi chỉ có một lựa chọn theo loại Biến thể là Panelcái gì tôi đã bỏ lỡ?
chuông điện tử

3

Đặt bí danh đường dẫn cho loại nội dung thành một cái gì đó như articles/[node:title]

Tùy chọn 1: sử dụng chế độ xem để chạy các trang chi tiết

Theo quan điểm:

  1. Tạo Pagechế độ xem với đường dẫn được đặt thành/articles/%
  2. Thêm bộ lọc theo ngữ cảnh Nội dung: Nid và đặt thành các phần sau:

    • Khi giá trị bộ lọc KHÔNG có trong URL => Cung cấp giá trị mặc định
    • Loại => Giá trị thô từ URL
    • Đường dẫn => Thành phần 1 (Kiểm tra "sử dụng bí danh đường dẫn")

Điều này thực hiện tra cứu đường dẫn trên đoạn url cuối cùng (đại loại như "my-article-title-path-alias") và trả về ID nút chính xác.

Tùy chọn 2: Lượt xem vượt qua để chạy các trang chi tiết

Thay vì thiết lập đường dẫn như /articles/%chỉ đơn giản là đặt nó /articlesvà để tất cả các /articles/%nút bí danh đường dẫn giải quyết bình thường.


Thật khó hiểu - Khi giá trị bộ lọc KHÔNG có trong URL thì hãy sử dụng giá trị bộ lọc từ URL!?!?! Cảm ơn vì đã làm rõ chuyện này mặc dù ...
Felix Eve

Tôi nghĩ rằng điều này có liên quan đến thực tế là các khung nhìn sử dụng url hệ thống (ví dụ: nút / 2) chứ không phải bí danh đường dẫn. Vì vậy, trong trường hợp này, giá trị bộ lọc (bí danh đường dẫn) thực sự không có trong url, đó là lý do tại sao chúng tôi vượt qua nó một cách rõ ràng
Kara

1

Thêm bộ lọc theo ngữ cảnh cho ID nút và cung cấp mặc định bằng PHP:

if (isset($this->view['args'][0])) {
  $path = db_query("SELECT source FROM {url_alias} WHERE alias = :alias LIMIT 1", array(':alias' => 'article/' . $this->view['args'][0]))->fetchColumn();
  if ($path) {
    $parts = explode("/", $path);
    if (isset($parts[1]) && is_numeric($parts[1])) {
      return $parts[1];
    }
  }
}

return FALSE;

Điều này sẽ trả về, ví dụ, node/123nếu tiêu đề của nút 123 là My Trang và Tiêu đề và bạn đã truy cập vào Xem tại example.com/the_view/my-page-title.


Cảm ơn @Charlie - Tôi dường như không có tùy chọn để thêm bộ lọc theo ngữ cảnh cho 'đường dẫn'. Tôi có cần phải cài đặt thêm một cái gì đó để có được điều đó?
chuông điện tử

Tôi không nên đưa ra giả định rằng nó sẽ có sẵn cho bạn. Bạn có hài lòng không khi chỉ sử dụng ID nút và phát nổ đường dẫn máy kết quả từ truy vấn, như $ part = explode ($ path); trả lại $ phần [1]; ?
Charlie Schliesser

Tôi đã cập nhật câu trả lời của tôi để làm việc cho ID nút.
Charlie Schliesser

Cảm ơn @Charlie - Cuối cùng tôi đã đi đến giải pháp bảng điều khiển của Gregory Kapustin nhưng đây là một giây gần gũi với tôi vì vậy tôi muốn nói lời cảm ơn ... đã bình chọn 1 lên !!
chuông điện tử

1
Đây thực sự là câu trả lời đầu tiên tôi đưa cho bạn, và đã xóa nó. Thx @charlieS!
Gregory Kapustin

0
**Contextual filters**

1) Toàn cầu: Không có 2) (bài viết) nội dung / nút: nid Khi giá trị bộ lọc KHÔNG khả dụng Cung cấp giá trị mặc định: Giá trị thô từ url


Xin chào @Somik Cảm ơn bạn đã bước vào để giúp đỡ với điều này. Bạn có thể vui lòng mở rộng câu trả lời của bạn một chút. Tôi đã cố gắng tự mình giải quyết nhưng không hiệu quả vì vậy tôi cho rằng tôi đã thực hiện nó một cách kết hợp
cybercampbell

0

Hãy thử phương pháp này ...

Trước tiên, bạn lấy đường dẫn drupal bình thường "node / nid" sau đó, bạn lấy nid để tải toàn bộ tải và sau đó sử dụng tiêu đề nút làm bộ lọc theo ngữ cảnh.

1) Nhận đường dẫn bình thường của nút hiện tại đang được xem ...

<?php
$ogpath = drupal_lookup_path("source",$_GET['q']);

2) Điều này có thể tốn kém nhưng hãy thử nó ... có được nid hiện tại

$ogarray = explode('/', $ogpath);
$node = node_load($ogarry[1]);
return $node->title;

Hãy cho tôi biết nếu nó hoạt động.

Pathauto của bạn đang tước các từ theo cách tôi chưa gặp, bạn có chắc nó được cấu hình đúng không?


Xin chào @Chiko - Pathauto là mặc định. Tôi sẽ thử nó ngay bây giờ. cảm ơn
cybercampbell

oh .. nhưng tôi không muốn sử dụng tiêu đề nút trong url của mình .. nó có khoảng trắng, v.v ... Xin lỗi nếu tôi đã hiểu sai. Bạn có thể vui lòng mở rộng về phương pháp của bạn. Cảm ơn một lần nữa. C
cybercampbell

0

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.

Đây là liên kết đã được chứng minh là giúp ích rất nhiều cho tôi - http://www.drupalfoo.com/drupal-7-view-contextual-filter-argument-node-reference-USE-url-alias

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.