không thể theo dõi lượt xem với các tính năng


6

Tôi đang sử dụng Featuresđể tạo một tính năng được gọi là footheo dõi các loại nội dung và chế độ xem để chúng có thể được mô tả bằng mã, được cam kết với kho lưu trữ của tôi và cuối cùng được đẩy vào các máy chủ dàn dựng và sản xuất.

Một số mô-đun (ví dụ: http://drupal.org/project/nodequeue , http://drupal.org/project/view_bulk_operations , http://drupal.org/project/admin_view ) tạo ra một số chế độ xem như là một phần của chức năng của chúng. Vấn đề là tôi không thể đưa những quan điểm đó vào footính năng của mình . Vì vậy, đối với những quan điểm cụ thể đó, tôi phải lặp lại (bằng tay) bất kỳ tùy chỉnh nào tôi đã thực hiện tại địa phương cho các máy chủ dàn dựng và sản xuất.

Có ý kiến ​​gì không?

Những gì tôi đã thử:

1) Tôi đã thử thêm thủ công tên xem trong foo_features.infotệp:

features[views_view][] = admin_content_node

nhưng khi tôi thực hiện drush fu foo_features -ythì dòng đó sẽ bị xóa và .infotập tin và định nghĩa khung nhìn không được đưa vào foo_features.views_default.inctập tin.

2) Tôi đã xem xét cơ sở dữ liệu:

mysql> select vid, id, display_title, display_plugin, position from views_display;
+-----+----------+---------------+----------------+----------+
| vid | id       | display_title | display_plugin | position |
+-----+----------+---------------+----------------+----------+
|   3 | default  | Master        | default        |        1 |
|   3 | page     | Page          | page           |        2 |
|  30 | block    | Block         | block          |        2 |
...
|  46 | default  | Defaults      | default        |        1 |
|  46 | system_1 | System        | system         |        2 |
+-----+----------+---------------+----------------+----------+

Hàng cuối cùng đó (vid: 46, display_plugin: system) có vẻ đáng ngờ nên tôi đã thay đổi (trực tiếp qua SQL) systemthành page. Sau đó, tôi đã làm drush cc allvà thử lại quy trình tại [1] để đưa chế độ xem vào tính năng nhưng không gặp may. Tôi đã thử điều này bởi vì tôi nghĩ rằng "hiển thị chế độ xem hệ thống" (bất cứ điều gì có nghĩa) không thể được bao gồm trong các tính năng.

Câu trả lời:


10

Điều này có thể bỏ qua bằng cách nhân bản các chế độ xem bạn cần từ bốn chế độ xem mà mô-đun cung cấp, vô hiệu hóa các chế độ xem ban đầu và thực hiện tất cả công việc của bạn trong các bản sao có thể theo dõi 100%.


2

Theo đề xuất của magtak, điều này có thể phá vỡ bằng cách nhân bản các Chế độ xem. Chúng sẽ cần được lưu trữ dưới một tên khác để làm việc này; xuất và nhập Chế độ xem (theo đề xuất của Varshith) sẽ chỉ hoạt động nếu bạn làm như vậy trong khi thay đổi tên máy của Chế độ xem. Nhân bản sẽ có kết quả tương tự như xuất / nhập, ngoại trừ việc nó sẽ thực thi thay đổi tên máy và bao gồm ít hành động hơn.

Lý do bạn cần làm điều này là các mô-đun này thêm Chế độ xem không phải bằng cách nhập chúng vào cơ sở dữ liệu, nhưng thêm chúng thông qua mã, giống như những gì xảy ra khi bạn thêm Chế độ xem vào Tính năng. Các tính năng sẽ kiểm tra xem Chế độ xem đã tồn tại trong mã chưa và sẽ không cung cấp nó để thêm nó vào Tính năng của bạn nếu có. (Ngẫu nhiên, điều xảy ra khi bạn thay đổi Chế độ xem được xác định bằng mã thông qua giao diện, đó là Chế độ xem lấy bản sao của Chế độ xem và nhập vào cơ sở dữ liệu. Đó là nơi lưu trữ các thay đổi của bạn. Đây là lý do bạn có thể tìm thấy Chế độ xem được xác định bởi các mô-đun trong cơ sở dữ liệu dù sao đi nữa, điều này sẽ xảy ra ngay khi bạn thay đổi chúng. Đây cũng là điều xảy ra khi bạn hoàn nguyên Chế độ xem bị ghi đè, từ chính Chế độ xem hoặc từ Tính năng; bản sao trong cơ sở dữ liệu bị bỏ qua và Chế độ xem mặc định trở lại mật mã).

Một nhược điểm của phương pháp nhân bản là từ thời điểm đó trở đi, bạn tự mình duy trì Chế độ xem ban đầu được thêm bởi mô-đun; bản sao của bạn hoàn toàn độc lập với bản gốc, vì vậy nếu có các bản cập nhật mô-đun bổ sung các tính năng mới tiện lợi, có lẽ bạn không thể tìm ra. Nếu bạn đã làm, bạn phải thêm những thay đổi đó vào bản sao của mình bằng tay. Một cách khác là sử dụng hook_view_default_view_alter () để thêm các bổ sung của bạn vào mã. Tuy nhiên, điều này hoàn toàn không được hỗ trợ bởi Tính năng (bạn có thểthêm mã này vào một tính năng; nếu bạn làm như vậy trong tệp .module cho Tính năng, Tính năng sẽ để nó một mình khi tạo lại tính năng). Bạn sẽ cần phải biết những gì bạn đang làm khi xác định Lượt xem bằng mã. Bạn có thể đi một chặng đường dài bằng cách so sánh xuất khẩu Chế độ xem tùy chỉnh của mình với mã gốc trong mô-đun (có thể tìm thấy trong themodule.view_default.inc), nhưng nó vẫn không dành cho người yếu tim (và có thể hóa ra là ít bảo trì hơn là chỉ làm điều nhái).

Bên cạnh đó, đối với Nodequeue, bạn chắc chắn có thể sử dụng Chế độ xem mà nó thêm theo mặc định, nhưng hầu như không đáng để nỗ lực và sao chép Chế độ xem theo nút. Tất cả chỉ là Chế độ xem Nút, với mối quan hệ bắt buộc trên nút, được sắp xếp theo trọng số của nút. Đây có thể là về cùng một nỗ lực bắt đầu từ đầu vì nó đang nhân bản Chế độ xem mặc định và sau đó thực hiện các thay đổi của bạn.


0

Tôi cũng có một vấn đề tương tự. Những gì tôi đang làm hiện đang xuất các lượt xem tôi cần từng cái một và nhập lại và sau đó tạo tính năng này để bạn cũng có thể bao gồm chúng.


Thật không may, thủ thuật này đã không hoạt động. Sau khi xuất / nhập, chế độ xem vẫn "không thể theo dõi" bởi các tính năng.
cherouvim

0

Tôi đến bữa tiệc muộn một chút, nhưng FYI, bạn có thể may mắn nhận được nó trong Tính năng nếu bạn bỏ chọn "Tự động tạo một chế độ xem cho mỗi hàng đợi" trên trang cài đặt Nodequeue / admin / architecture / nodequeue / settings sau đó quay lại Tính năng và cố gắng Tái tạo lại.

Ngoài ra, theo dõi mà bạn đã bỏ chọn hộp kiểm đó trong Tính năng. Nếu bạn quên bỏ chọn nó trên prod, nó sẽ không hoạt động.

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.