Drupal 7 - Loại bỏ đầu ra của các nút trên trang phân loại


10

Có cách nào để ngăn chặn đầu ra của các nút trên các trang phân loại, mà không phải cài đặt một mô-đun (tức là chỉ trong template.php) không?

Các nút được gắn thẻ với thuật ngữ phân loại xuất hiện trên "Trang chỉ mục phân loại" (ví dụ: yoursite.com/taxonomy/term/[id]).

Mới trong Drupal 7, các trang Chỉ mục phân loại có thể có các trường được đính kèm với chúng. Tuy nhiên, nếu bạn cố gắng vượt qua trang phân loại bằng Chế độ xem (ví dụ: để kiểm soát cách hiển thị các nút), các trường trên trang Chỉ mục phân loại sẽ không xuất hiện.

Do đó, tôi đã đặt Chế độ xem phân loại của mình dưới dạng khối trên trang Chỉ mục phân loại. Bằng cách đó, tôi có thể kiểm soát cách các nút xuất hiện và vẫn có các trường trang Chỉ mục phân loại.

Bởi vì điều này, trang phân loại vẫn xuất ra các nút của nó. Tôi có thể ẩn chúng bằng cách đặt lời trêu ghẹo của các nút thành ẩn, nhưng nó vẫn tải lên các nút (và do đó, bất kỳ CSS / Jquery nào được gắn vào các nút ngay cả khi các nút không được hiển thị). Làm cách nào tôi có thể ngăn chặn các nút xuất hiện, lý tưởng là từ bên trong template.php?


Tại sao bạn không muốn cài đặt một mô-đun? Một số điều dễ dàng hơn để đạt được với các mô-đun.
Martin Schlagnitweit

Câu trả lời:



8

Giải pháp từ http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ hoạt động tốt với tôi:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

Lưu ý: bạn nên đặt lại bộ đệm của trang web.


LƯU Ý: điều này sẽ vô hiệu hóa danh sách nút cho bất kỳ trang thuật ngữ phân loại nào trên trang web.
Duncanmoo

@Peter Lozovitskiy Tôi làm điều này và phải đối mặt với lỗi "Thông báo: Sử dụng lỗi 'phân loại' không đổi không xác định!
shekoufeh

@shekoufeh, tôi đã sửa mã (dấu phẩy thay thế) hãy thử mã này ngay bây giờ.
Peter Lozovitskiy

2

Bạn phải loại bỏ các nút khỏi biến $ page.

Trong template.php bạn có thể làm như thế này:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

Trong page.tpl.php của bạn sử dụng mã này:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

Điều này loại bỏ các nút từ tất cả các từ vựng và thuật ngữ . Nếu bạn muốn loại bỏ chúng chỉ theo một số thuật ngữ nhất định hoặc tất cả các thuật ngữ từ một từ vựng sử dụng arg(2)có chứa tidtải thuật ngữ và sau đó cập nhật câu lệnh if.


Nó hoạt động nhưng vẫn để máy nhắn tin trên. Điều đó có nghĩa là các nút đang được tải và lãng phí máy chủ. Dù sao, cảm ơn vì tiền boa, tôi đã sử dụng phương pháp của bạn :) Nhưng về mặt lý thuyết thì vẫn tốt hơn.
int_ua

0

Bạn thực tế có thể làm bất cứ điều gì trong template.php, nhưng điều đó không được khuyến khích. Điểm của việc sử dụng CMS là bạn phân tách dữ liệu, hành vi và ngoại hình. Tệp template.php là một phần của lớp theo chủ đề và bạn nên sử dụng nó để điều chỉnh phong cách trực quan của trang web của mình.

Nếu bạn muốn điều chỉnh hành vi của một trang web (trong trường hợp này: kiểm soát mục nào được hiển thị trong một danh sách nhất định), bạn cần thay đổi hành vi, do đó bạn cài đặt và định cấu hình mô-đun. Nếu bạn muốn xây dựng danh sách nội dung tùy chỉnh, mô-đun Lượt xem chính xác là những gì bạn cần.

Trong trường hợp của bạn (nếu tôi hiểu chính xác), bạn muốn các trường của thuật ngữ phân loại được hiển thị phía trên danh sách các nút được gắn thẻ với thuật ngữ đó. Bạn có thể tạo lại điều đó trong chế độ xem của mình bằng cách tạo khối lượt xem lấy ID thuật ngữ từ URL và hiển thị thông tin bạn cần.


Cảm ơn vi đa trả lơi! Tôi đã sử dụng Lượt xem để ghi đè trang phân loại. Tuy nhiên, tôi đang sử dụng Ghi đè Lượt xem dưới dạng khối thay vì trang, vì tôi cần giữ các trường trên trang phân loại hiển thị. Vấn đề duy nhất là trang phân loại vẫn tải các nút, có vẻ như không cần thiết.
big_smile

Tôi không hiểu ý của bạn với "các trường trên trang phân loại", nhưng ẩn nội dung trang và thay thế nó bằng một khối không có vẻ là giải pháp chính xác. Nếu bạn chỉ ghi đè trang phân loại bằng chế độ xem trang thông thường, chính xác bạn đang thiếu chức năng nào? (Có lẽ bạn có thể cập nhật câu hỏi ban đầu của mình và tôi sẽ cải thiện câu trả lời của mình cho phù hợp.)
marcvangend

Trả lời cập nhật là tốt.
marcvangend

Thật không may, câu trả lời của bạn dường như không hoạt động. Nếu bạn cố gắng đưa các trường phân loại vào chế độ xem, nó sẽ hiển thị nội dung của từng trường duy nhất (chứ không phải các trường chỉ thuộc về trang cụ thể đang được xem).
big_smile

0

Tôi đã sử dụng CSS để ẩn các công cụ phân loại nhưng đặt màn hình của chúng thành tùy chỉnh và bỏ trống có vẻ như là một lựa chọn tốt hơn.

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.