Điểm:1

Cách chính xác để nhận các giá trị trường được hiển thị trong mẫu twig của chế độ xem khối là gì?

lá cờ in

Tôi có một khối trên trang chính của trang web hiển thị các câu chuyện tin tức mới nhất từ Tin tức trang (3 mục mới nhất). Đây là một chế độ xem, đây là cài đặt của nó:

nhập mô tả hình ảnh ở đây

Tôi đang cố làm cho khối này trông đẹp hơn. Vì đây là một chế độ xem, tôi sử dụng khối--lượt xem-chặn--tin tức-khối-1.html.twig tệp mẫu cho mục đích của tôi. Tất cả những gì tôi muốn là lấy các giá trị trường được hiển thị trong đó để bọc từng giá trị đó trong một <div> với lớp css riêng của nó. Tôi đã thử nhiều lần và qua thử và sai cuối cùng tôi đã viết đoạn mã sau:

{%
  đặt lớp = [
    'chặn',
    'chặn-' ~ configuration.provider|clean_class,
    'chặn-' ~ plugin_id|clean_class,
  ]
%}
<div class="container">
    <phần{{thuộc tính.addClass(lớp) }}>
        {{ title_prefix }}
            <h2 class="article_title">Tin cấp huyện</h2>
        {{ title_suffix }}
        {% khối nội dung %}
            <ul class="content article_list">
                {% cho hàng trong nội dung['#view'].result %}
                    <li class="article_item">
                        <div class="article_item-header">
                            <div class="article_release_date">
                                {{ content['#view'].field['published_at'].value(row)|date("d.m.Y") }}
                            </div> 
                            {{ content['#view'].field['title'].getItems(row) }}
                        </div>
                        <div class="article_description">
                            {{ content['#view'].field['body'].getItems(row) }}
                        </div>
                    </li>
                {% endfor %}
            </ul>
        {% khối cuối %}
        <div class="article_read_more">
            <a href="/news">Xem tất cả</a>
        </div>
    </phần>
</div>

Nó hoạt động tốt: Tôi thấy đánh dấu và các biến trong khối này trên trang chính chính xác như tôi đã thiết kế chúng. Nhưng tôi không thể nói rằng nó hoạt động hoàn hảo vì khi tôi đi đến "Tin nhắn nhật ký gần đây", tôi thấy lỗi đến từ điều này .twig tệp mẫu. Thông báo lỗi là: Lỗi người dùng: "raw" là khóa mảng kết xuất không hợp lệ trong Drupal\Core\Render\Element::children() (dòng 97 của core/lib/Drupal/Core/Render/Element.php). Khi tôi xóa tệp twig của mình, lỗi không xảy ra nữa. Vì vậy, câu hỏi của tôi là: Cách chính xác để đạt được cùng một đánh dấu mà không có lỗi như vậy là gì? Có lẽ cách tiếp cận của tôi là hoàn toàn sai và tôi nên thay đổi nó. Hoặc có thể cách tiếp cận của tôi là chính xác, nhưng có một lỗi nhỏ trong mã của tôi? Dù sao, tôi muốn biết tại sao tôi gặp lỗi như vậy trong nhật ký và làm cách nào để tránh lỗi đó. Làm ơn giúp tôi.

sonfd avatar
lá cờ in
Tôi khuyên bạn nên cập nhật chế độ xem của mình để hiển thị chế độ xem của nút tin tức, sau đó bạn có thể thực hiện tất cả logic về trường nào sẽ hiển thị và cách chúng hiển thị cho từng mục tin tức ngay trong một mẫu chuyên dụng.
Điểm:0
lá cờ eg

Tôi nghĩ rằng việc cố gắng tạo chủ đề cho các trường bên trong khối không phải là cách thực hành tốt nhất.

Cách tiếp cận được đề cập trong các ý kiến ​​​​bởi sonfd là một trong những rất tốt.

Nếu không, bạn có thể tạo chủ đề cho từng trường trong dạng xem bằng cách ghi đè mẫu trường như:

views-view-field--{tên máy xem}--{tên máy trang hoặc khối}--{tên trường}.html.twig

Đây sẽ là một cách tiếp cận tốt hơn.

Hy vọng điều này trả lời câu hỏi của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.