จะลบเมตาแท็กบางอย่างได้อย่างไร


18

ฉันจะลบแท็กเหล่านี้ออกจากหน้าเว็บของฉันใน Drupal 7 ได้อย่างไร

<link rel="shortlink" href=" .... " />
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
<link rel="canonical" href="...." />

อัปเดต : ฉันมีรหัสสำหรับ template.php ซึ่งจะลบตัวสร้างและแท็กบัญญัติ

function program_html_head_alter(&$head_elements) {
  unset($head_elements['system_meta_generator']);
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
      unset($head_elements[$key]); 
    }
  }
}

ใครสามารถเพิ่มบางสิ่งเพื่อลบแท็กลิงก์สั้น ๆ ได้หรือไม่


1
ทุกอย่างดูดี แต่ทำไมต้องออกมาตรฐาน สิ่งนี้มีประโยชน์จริง ๆ

คำตอบ:


11

สิ่งนี้ถูกแสดงในhtml.tpl.phpในตัวแปร $ head $ หัวจะถูกเพิ่มตัวแปรในtemplate_process_htmlโดยใช้drupal_get_html_head () ในฟังก์ชั่นนั้นคุณจะเห็นว่ามีการเรียกhook_html_head_alter ()

คุณสามารถลบสิ่งเหล่านี้ได้

อย่างไรก็ตามโปรดทราบว่าลิงก์เหล่านี้อาจมีความสำคัญสำหรับ SEO เพื่อหลีกเลี่ยงการที่เครื่องมือค้นหาคิดว่าคุณมีเนื้อหาที่ซ้ำกันในเว็บไซต์ของคุณหากตัวอย่างเช่นโหนดสามารถใช้งานได้ผ่าน node / nid และนามแฝง


อืมฉันพบ แต่ยังคงไม่สามารถลบได้ :) ฉันคิดว่าฉันควรเรียนรู้ php เร็ว ๆ นี้ :) ฉันค้นหารหัสที่สามารถเพิ่มไปยัง template.php (ในแม่แบบ) และรหัสลบบรรทัด "ตัวสร้าง" function program_html_head_alter (& $ head_elements) {unset ($ head_elements ['system_meta_generator']); }

แต่ฉันยังคงมีปัญหากับ 2 บรรทัดเพิ่มเติมที่ฉันต้องการลบ มันไม่ดีสำหรับ seo ถ้าคุณมีหน้าแรกที่กำหนดเองและ canonical ให้ URL ไม่ใช่สำหรับโดเมนหลักสำหรับหน้าย่อยเท่านั้น ... เหมือนกันกับ shortlink - ทำไมบางคนเห็นว่าบทความนั้นมีที่อยู่เพิ่มเติมพร้อมกับ /node/...stupid เพิ่มความคิด สายเหล่านี้ไปยัง d7

ดังนั้นหากฉันมีการติดตั้ง D7 ใหม่พร้อม URL สะอาดและเส้นทางอัตโนมัติลิงก์ URL มาตรฐานจะถูกตั้งค่าโดยอัตโนมัติ
Andy

ควรจะใช่
Berdir

5

ฉันใช้ฟังก์ชันต่อไปนี้ภายในไฟล์ template.php ของฉัน:

/**
 * Used to remove certain elements from the $head output within html.tpl.php
 *
 * @see http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_html_head_alter/7
 * @param array $head_elements
 */
function YOUR_THEME_NAME_html_head_alter(&$head_elements) {
    $remove = array(
        'system_meta_generator',
        'metatag_canonical',
        'metatag_shortlink'
    );

    foreach ($remove as $key) {
        if (isset($head_elements[$key])) {
            unset($head_elements[$key]);
        }
    }

    // Use this loop to find out which keys are available.
    /* -- Delete this line to execute this loop
    echo '<pre>';
    foreach ($head_elements as $key => $element) {
        echo $key ."\n";
    }
    echo '</pre>';
    // */
}

สิ่งนี้ไม่ได้ผลสำหรับฉัน - 'metatag_canonicalและ'metatag_shortlinkไม่มีอยู่ในฐานะดัชนีของ$head_elements(นี่คือใน Drupal 7) คำตอบที่ได้รับจาก @Levente ทำงานได้ดี

4

ฉันแก้ไข shortlink ด้วยเช่นกันการแก้ไขรหัสของคุณ

บางคนสามารถจัดระเบียบได้อย่างถูกต้องเพราะฉันไม่รู้วิธีใส่อย่างถูกต้องและไม่ว่าจะมีผลข้างเคียงในลักษณะนี้หรือไม่ มันทำให้ลิงก์ที่ไม่ต้องการหายไปจากหัว

function nameof_mytheme_html_head_alter(&$head_elements) {
  unset($head_elements['system_meta_generator']);
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
      unset($head_elements[$key]);
    }

    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'shortlink') {
      unset($head_elements[$key]);
    }
  }
}

ใช่มันเป็นทัศนคติของคนขายเนื้อต่อการเชื่อมโยงที่เป็นที่ยอมรับ แต่จนกระทั่งไม่มีความรุนแรงเกิดขึ้นมันก็ยังดีกว่า

นั่นคือเหตุผล: คุณต้องมีลิงก์แบบบัญญัติซึ่งแสดงเฉพาะในหน้าที่ซ้ำกัน, หน้าที่ไม่ใช่รุ่นที่ต้องการ หน้าต้นฉบับควรอยู่คนเดียว: ไม่มีมาตรฐานที่ควรแสดงที่นั่น! นั่นเป็นเหตุผลที่ฉันยังคงเขียงอยู่รอบ ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.