it-swarm-vi.com

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

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?

10
big_smile

Tôi biết, muốn có một giải pháp không có mô-đun, nhưng trong Drupal 7, có một mô-đun thực hiện chính xác những gì bạn cần: Vô hiệu hóa thuật ngữ Node Liệt kê

Nó cho phép bạn chọn theo Từ vựng, nếu bạn muốn tắt đầu ra của danh sách thuật ngữ.

5
Martin Schlagnitweit

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.

8
Peter Lozovitskiy

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 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 khỏi tất cả các từ vựng và thuật ngữ. Nếu bạn muốn xóa 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, hãy sử dụng arg(2) có chứa tid để tải thuật ngữ và sau đó cập nhật câu lệnh if.

2
Martin Schlagnitweit

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.

0
Joseph Coco

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.

0
marcvangend