Làm cách nào tôi có thể sắp xếp chế độ xem dựa trên trường viết lại?


10

Tôi có chế độ xem loại nội dung chứa hai trường ngày khác nhau (một trường lặp lại ngày và một ngày nhiều lần). Chỉ có một trường ngày được điền vào bất kỳ lúc nào. Trong màn hình của chế độ xem, tôi đã kết hợp hai trường bằng cách ẩn trường ngày đầu tiên và viết lại lần thứ hai và bao gồm mã thông báo thay thế của lần đầu tiên và lần thứ hai. Có cách nào để sử dụng trường viết lại để sắp xếp chế độ xem theo thứ tự tăng dần dựa trên trường ngày kết hợp này không? Dường như nó sắp xếp nó dựa trên giá trị ban đầu của trường ngày.

Tôi đã thực hiện nghiên cứu của mình và chỉ tìm thấy các chủ đề cũ, hơi liên quan, có ngõ cụt.

sắp xếp lượt xem theo trường viết lại?

Bảng không sắp xếp trên trường viết lại, nhưng trên trường ban đầu

Lượt xem: trường tùy chỉnh cho tiêu chí sắp xếp

Sắp xếp theo toàn cầu: văn bản tùy chỉnh. Có thể không?

Tôi đã hy vọng có một cách mới hoặc lén lút để thực hiện điều này.


Có một số lý do bạn không thể sử dụng câu trả lời của merlinofchaos? drupal.org/node/1260160#comment-4907526
Kari Kääriäinen

Anh ta không thực sự cung cấp một câu trả lời về cách sử dụng trường được tính toán. Ông chỉ khuyên bạn nên sử dụng nó. Tôi không ngại thử nó nhưng tôi không biết phải làm gì với mô-đun. Tôi cũng hy vọng rằng có thể có một cái gì đó mới để thử vì đó là 2 năm trước và cho Drupal 6.
Nigel Waters

Vâng, đó là một câu trả lời ngắn. Nguyên tắc vẫn giống nhau mặc dù. Xem câu trả lời của tôi.
Kari Kääriäinen

Bạn muốn làm gì với các trường ngày đó? Chọn ngày tiếp theo sắp tới?
Kari Kääriäinen

Tôi muốn sắp xếp loại nội dung sự kiện theo hai trường ngày theo thứ tự tăng dần.
Nigel Waters

Câu trả lời:


4

Nếu bạn không muốn đi theo lộ trình mô-đun, đây là một cách thay thế:

1) cài đặt mô-đun Trường tính toán
2) thêm trường được tính vào loại nội dung của bạn
3) trong cài đặt trường, trong văn bản mã được tính toán (PHP), bạn có thể truy cập dữ liệu trường.

Nhận các trường ngày của bạn trong langugage hiện tại của bạn đến một biến.

$repeating_dates = field_get_items($entity_type, $entity, 'field_repeating_date_example');
$multidates = field_get_items($entity_type, $entity, 'field_multidate_example');

Giá trị ngày của bạn bây giờ có thể được tìm thấy trong

$repeating_dates[0]['value'],
$repeating_dates[1]['value'],
$repeating_dates[2]['value'], etc.

$multidates[0]['value'],
$multidates[1]['value'],
$multidates[2]['value'], etc.

Làm bất cứ logic nào bạn cần với các trường ngày của bạn và gán kết quả cho

$entity_field[0]['value']

Bây giờ bạn có một trường có thể sắp xếp mà bạn có thể sử dụng trong các khung nhìn, nhưng trước tiên bạn phải cập nhật tất cả các nút vì trường được tính sẽ chỉ được tính toán và lưu vào cơ sở dữ liệu khi lưu nút. Có nhiều cách để làm điều này, một cách là sử dụng Lượt xem Hoạt động hàng loạt, nó cung cấp cho bạn một tùy chọn để lưu lại các nút tại quản trị / nội dung.


Tôi không chắc chắn điều này sẽ hoạt động với một trường ngày với ngày lặp lại và trường khác có ngày duy nhất (với cài đặt không giới hạn). Điều này có thể hoạt động trong trường hợp cả hai trường chỉ là các giá trị đơn.
Nigel Waters

Tôi chỉnh sửa câu trả lời của tôi bao gồm những trường hợp. Sử dụng dpm ($ entity) bạn có thể thấy cấu trúc của các trường ngày của bạn là gì. dpm đi kèm với mô-đun Devel.
Kari Kääriäinen

Vui lòng không đề xuất [und]cú pháp. Sử dụng field_get_items thay thế.
Letharion


0

Cách lén lút duy nhất để thực hiện điều này là nếu bạn không sử dụng phân trang, thì bạn có thể sử dụng sắp xếp PHP trong ghi đè truy vấn tùy chỉnh không phụ thuộc vào cơ sở dữ liệu.

Theo stevector ,

Phân trang là thứ thực sự ngăn chúng ta sắp xếp theo các trường được tính toán bởi vì thông thường chúng ta cần nói "Cơ sở dữ liệu! Cho tôi kết quả 21-30 khi sắp xếp theo cột nid".

Vì vậy, bạn không thể nhận được kết quả 21-30 từ db một cách đáng tin cậy nếu db không biết cách xác định 21-30 (như trong trường hợp của trường được tính toán).

Vì vậy, giải pháp thiết thực và đáng tin cậy nhất là sử dụng Trường tính toán như Kari Kääriäinen đã đề cập.


Có vẻ như ai đó đã hạ cấp tôi sau khi tôi chỉ định số phiên bản và sửa lỗi dán sao chép. Có điều gì sai với câu trả lời này?
beth

Tôi đã nâng cấp sớm hơn cho cách tiếp cận mô-đun, nhưng sau đó bị hạ cấp bởi vì điều này, giống như bất kỳ câu hỏi nào khác, bao gồm cả tôi, không phải là một câu trả lời có thể sử dụng được vì ít nhất là đối với tôi.
Kari Kääriäinen

Câu hỏi dường như rõ ràng với tôi. Tôi sẽ thêm một số làm rõ cho câu trả lời của tôi.
beth

Không sao, tôi nhận ra Lượt xem không hoạt động chính xác như tôi mặc dù vậy.
beth

0

Đây là một cách hơi khó để làm điều đó, nhưng nó hoạt động và bạn không cần thêm bất kỳ mô-đun nào.

Tạo nhãn cho trường mà bạn muốn sắp xếp và KHÔNG loại trừ nó khỏi màn hình. Thay vào đó, hãy viết lại màn hình dưới dạng "trống" bằng cách thêm một <!---->bình luận html trống làm giá trị ghi lại. Sau đó thêm trường php / viết lại khác của bạn như là một phần tử con của cột này.

Điều này sẽ hiển thị tiêu đề bảng cho cột chính xác để sắp xếp.

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.