Làm cách nào để thêm thẻ meta trong phần <head> '<> head>?


19

Làm cách nào để thêm thẻ meta sau vào bên trong <head>...</head>phần trong Drupal 8?

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

Câu trả lời:


49

Từ các nguồn khác nhau, tôi tìm thấy cách thêm các thẻ meta khác nhau trong Drupal 8, do đó biên dịch tất cả các cách.


1. Sử dụng tệp THEME.theme

Tôi nghĩ rằng câu hỏi tương tự đã được hỏi về dòng chảy bên ngoài: thêm thẻ meta vào đầu trong drupal 8 và nếu bạn thấy câu trả lời của @Danielishko , anh ấy đã cung cấp mã sau đây,

Chỉ cần thêm mã sau vào THEME.themetệp của bạn , xóa bộ nhớ cache và bạn sẽ ổn. Lưu ý: function theme_preprocess_html(&$variables) {...}nên đã có sẵn trong tệp .theme của bạn, do đó không tạo tệp mới, nếu không nó sẽ báo lỗi.

function theme_preprocess_html(&$variables) {

  $xuacompatible = [
    '#tag' => 'meta',
    '#attributes' => [
      'http-equiv' => 'x-ua-compatible',
      'content' => 'ie=edge',
    ],
  ];


  $variables['page']['#attached']['html_head'][] = [$xuacompatible, 'x-ua-compatible'];
}

Hình ảnh đầu ra:

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


2. Thông qua tập tin mẫu:

Một câu hỏi khác đã được hỏi về chủ đề này: Làm thế nào để thiết lập / xóa 8 thẻ meta drupal .

Nếu bạn đọc câu hỏi trong liên kết được đề cập ở trên, Người hỏi đã đề cập rằng bằng cách sử dụng html.html.twigtệp mẫu, bạn có thể trực tiếp thêm thẻ meta vào<head>....</head>

html.html.twigtệp bạn có thể tìm thấy tại core/modules/sytem/templates/html.html.twig, Bạn có thể sao chép và dán tệp đó vào thư mục mẫu của chủ đề và chủ đề của bạn sẽ sử dụng tệp đó.

từ html.html.twig

<!DOCTYPE html>
<html{{ html_attributes }}>
  <head>
    <head-placeholder token="{{ placeholder_token|raw }}">
    <title>{{ head_title|safe_join(' | ') }}</title>
    <css-placeholder token="{{ placeholder_token|raw }}">
    <js-placeholder token="{{ placeholder_token|raw }}">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  </head>
  <body{{ attributes }}>
    {#
      Keyboard navigation/accessibility link to main content section in
      page.html.twig.
    #}
    <a href="#main-content" class="visually-hidden focusable">
      {{ 'Skip to main content'|t }}
    </a>
    {{ page_top }}
    {{ page }}
    {{ page_bottom }}
    <js-bottom-placeholder token="{{ placeholder_token|raw }}">
  </body>
</html>

Hình ảnh đầu ra:

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

LƯU Ý: Đây là logic riêng của tôi và đã cố gắng tìm tài liệu tham khảo cho điều này, tôi không tìm thấy bất kỳ tài liệu tham khảo nào về vấn đề này ngoại trừ một dòng do Người hỏi cung cấp trong liên kết ở trên, nhưng vì chúng tôi chỉnh sửa tệp mẫu để thêm các nội dung khác tại sao chúng tôi không thể sử dụng để thêm thẻ. XIN VUI LÒNG CUNG CẤP Ý KIẾN NẾU ĐÂY KHÔNG PHẢI LÀ MỘT CÁCH QUYỀN ĐỂ LÀM, Nó cũng sẽ học hỏi kinh nghiệm cho tôi, Cảm ơn.


3. Tạo mô-đun tùy chỉnh của riêng bạn

Nếu bạn tham khảo hướng dẫn này về: Thêm các thẻ HTML mới trong Drupal 8 , anh ấy đã mô tả cách chung để thêm thẻ vào đầu trong Drupal 8. Tôi đã sửa đổi theo yêu cầu của bạn. Bạn có thể tham khảo hướng dẫn này: Drupal 8: Tạo Mô-đun đơn giản để biết cách phát triển mô-đun đơn giản trong Drupal 8 và mã sau sẽ đi vào tệp module_name.module của bạn, đó là nó.

cho module_name.moduletập tin,

<?php
/**
 * Implements hook_page_attachments().
 */
function module_name_page_attachments(array &$page) {
  $xuacompatible = [
        '#tag' => 'meta',
        '#attributes' => [
          'http-equiv' => 'x-ua-compatible',
          'content' => 'ie=edge',
        ],
      ];
  $page['#attached']['html_head'][] = [$xuacompatible, 'x-ua-compatible'];
}

Tôi nghĩ rằng, phương pháp và phương pháp này được mô tả trong tùy chọn 1 khá giống nhau.


4. Sử dụng mô-đun Drupal

Tôi không chắc chắn, làm thế nào để sử dụng phương pháp này, tôi đã cố gắng để tìm. Ở đây tôi đang đề cập bởi vì khi điểm thêm thẻ meta xuất hiện, mô-đun này luôn bật lên.

Tôi nghĩ rằng phương pháp này bạn nên sử dụng. Trong câu trả lời được chấp nhận, anh ta đã mô tả cách mô-đun và bạn có thể sử dụng, mô-đun Metatag cho điều đó. Mô-đun này có các mô-đun phụ thuộc Token & Ctools , đây là điều rất phổ biến. Trong câu trả lời đó, toàn bộ quy trình đã được mô tả, vì vậy tôi không đề cập ở đây.


Tôi đã kiểm tra modat metatag trước khi tôi viết bài đăng của mình, nhưng tôi không biết tôi phải chọn lĩnh vực nào để xuất ra những gì tôi muốn. Và ngay cả khi nó sẽ như vậy hơn tôi phải làm điều này cho mọi loại nội dung. Có lẽ có một cách thoải mái hơn?
lesley n.

@lesleyn. Tôi đã cập nhật câu trả lời của mình, tôi đã bao gồm nhiều cách khác nhau để thêm thẻ meta, nhưng giống như bạn, tôi cũng không tìm ra cách thêm bằng mô-đun Metatag, tôi nghĩ, thông qua mô-đun đó, chúng tôi có thể truy cập bất cứ thứ gì được cung cấp trong danh sách mã thông báo, do đó sử dụng thẻ meta được liệt kê của bạn, tôi nghĩ rằng chúng tôi đã đóng đinh để tạo mã thông báo cho điều đó, Đây là dự đoán hoang dã của tôi. Tôi đã tiếp cận tôi đã thử nghiệm và họ đang làm việc.
CodeNext

1
Điều này nên được đánh dấu là chính xác =) +1
Cyclonecode

1
@ AntonínSlejška, Cả n-1 và n-3 đều có cùng một phương thức, sự khác biệt là ở n-1 bạn đang thêm mã trong tệp .theme trong khi ở n-3 bạn đang tạo mô-đun tùy chỉnh cho điều đó. Tôi muốn nói đi n-1, sẽ sạch sẽ và dễ dàng. Và đối với HOMEPAGE, bạn cần thêm dòng mã trong mã mà tôi đã cung cấp trong n-1. Tôi vừa thêm bản cập nhật trong n-1 cho nhu cầu của bạn, cho tôi biết nếu bạn sao chép-dán đó, tôi cần xóa nó. Nếu vẫn còn, có vấn đề, xin vui lòng cho tôi biết.
CodeNext

@CodeNext Tôi xin lỗi. Tôi đã quên xóa bộ nhớ cache. Nó hoạt động hoàn hảo. Cảm ơn đã giúp đỡ. Tôi đã sao chép mã.
Antonín Slejška

4

Khi thêm nội dung vào bộ điều khiển, khối, thực thể, trường hoặc các vị trí khác bạn không cần tạo móc.

Bạn có thể thêm thẻ meta trực tiếp đến bất kỳ chủ đề hoặc làm cho phần tử ( #theme, #type, #markup):

$build['username'] = [
  '#theme' => 'username',
  '#account' => \Drupal::currentUser(),
  '#attached' => [
    'html_head' => [
      [
        [
          '#tag' => 'meta',
          '#attributes' => [
            'name' => 'foo',
            'content' => 'bar',
          ],
        ],
        'my_module_foo',
      ],
    ],
  ],
];

Khi kết xuất thẻ bong bóng lên đến cấp độ trang và được thêm vào <head>...</head>phần.

Trong móc tiền xử lý, bạn có thể đính kèm vào cấp cao nhất $variables, xem /drupal//a/288989/47547


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.