দ্রুপাল 8, বিটা 2 এ এইচটিএমএল হেড ট্যাগ যুক্ত করার চেষ্টা করছে


9

ড্রুপাল 8.0 বিটা 2 সহ, drupal_add_html_head() এর পক্ষে অবমূল্যায়ন করা হয়েছে#attached । সুতরাং পুরানো উপায় ছিল:

function MYTHEME_page_build(&$page) {
    $viewport = array(
          '#type' => 'html_tag',
          '#tag' => 'meta',
          '#attributes' => array(
            'name' => 'viewport',
            'content' => 'width=device-width, initial-scale=1.0, maximum-scale=2.0, minimum-scale=0.55, user-scalable=yes',
          ),
        );
        drupal_add_html_head($viewport, 'viewport');
}

আপনি এখন যে পরিবর্তন নোটিশটি ব্যবহার করছেন তার ভিত্তিতে #attached। সুতরাং উপরের কোডটি মূলত শেষ অংশে পরিবর্তনের সাথে একই রকম:

$build['#attached']['html_head'][] = [$viewport, 'viewport'];

এটি যদিও কাজ করে না এবং ওয়াচডগে কোনও ত্রুটি বার্তা নেই। আমি একটি পৃষ্ঠায় এই নির্বাণ থাকেন চেষ্টা পরিবর্তন সেইসাথে সোয়াপিং $buildসঙ্গে $variablesএবং $outputকিন্তু এটি এখনও নেই হবে। সংযোজন হিসাবে, আমি অ্যারে হিসাবে পুরো জিনিসটি চেষ্টা করেছিলাম:

  $build['#attached']['html_head'][] = array(
    '#type' => 'html_tag',
    '#tag' => 'meta',
    '#attributes' => array(
      'name' => 'viewport',
      'content' => 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no',
    ),
  );

... কিন্তু এটিও কার্যকর হয়নি। আমি নিশ্চিত না যে আমি কী ভুল করছি, মনে হচ্ছে এটি কাজ করা উচিত।

হালনাগাদ

এখানে এমন কোডিং কোড রয়েছে যা ব্যবহার করে hook_page_attachments_alterযা ডি 8 বিটা 2 তে নেই কারণ এটি কেবলমাত্র দেব প্রতিশ্রুতিবদ্ধ ছিল।

function MYTHEME_page_attachments_alter(array &$page) {
    $viewport = array(
      '#type' => 'html_tag',
      '#tag' => 'meta',
      '#attributes' => array(
        'name' => 'viewport',
        'content' => 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no',
      ),
    );
    $page['#attached']['html_head'][] = [$viewport, 'viewport'];
  }

এখন একমাত্র সমস্যা হ'ল কোর এর ভিউপোর্ট ট্যাগটি ওভাররাইট করা যায় না তাই আমি আমার কাস্টম ট্যাগ এবং কোর এর সাথে আটকে আছি। কীভাবে এটি হ্যান্ডেল করবেন তা নিশ্চিত নয় বা আমার ট্যাগটি ওভাররাইটিং কোরের হওয়া উচিত?

এখানে চিত্র বর্ণনা লিখুন

উত্তর:


7

আপনার প্রিপ্রোসেস $ বিল্ড ইন নেই, সুতরাং এর মতো কাজ করতে পারবেন না। $ বিল্ড করার জন্য একটি রেন্ডার অ্যারে হওয়া দরকার যা কোথাও রেন্ডার করা হয়েছে। এটি ইতিমধ্যে কীভাবে কাজ করতে পারে তাও আমি দেখতে পাই না, কারণ এটি ইতিমধ্যে আপনার ফাংশনটি চালুর আগে টেমপ্লেট_প্লেপ্রসেস_এইচটিএমএল () এ রূপান্তরিত হয়েছে।

হুক_পেজ_ট্যাচমেন্টস যুক্ত করুন (_াল্টার) () এবং অবচয় হুক_পেজ_বিল্ড / অল্টার () স্রেফ প্রতিশ্রুতিবদ্ধ ছিল এবং থিম হিসাবে, আপনি হুক_পেজ_ট্যাচমেন্টস_াল্টার () প্রয়োগ করতে পারেন, কমন_স্টেট_পেজ_এটাচমেন্টস_এল্টারের মতো প্রতিশ্রুতিবদ্ধ প্যাচে উদাহরণগুলি সন্ধান করতে পারেন ।

সুতরাং, কিছু $page['#attached']['html_head'][] = [$viewport, 'viewport'];এখানে কাজ করা উচিত।


ভাল, আপনার সাহায্যের জন্য ধন্যবাদ তবে আমি এখনও হারিয়েছি। আপনি এই কাজ করতে পারেন কিনা তা জানতে আগ্রহী হব। আমি হুক_পেজ_বিল্ড এবং পরিবর্তনের চেষ্টা করেছি কিন্তু এখনও কোনও আনন্দ নেই। আমি এমনকি কোনও ভাগ্য ছাড়াই কোর থেকে কিছু উদাহরণ ধরলাম। এটি এমন কঠিন হওয়া উচিত বলে মনে হচ্ছে না।
ড্যানি ইংলন্ডার

1
আপনার বর্তমান কোড উদাহরণগুলি দিয়ে আপনার প্রশ্ন আপডেট করুন। অবশ্যই আমি যে উদাহরণটি নির্দেশ করেছিলাম তা কাজ করছে, কারণ এটি পরীক্ষার জন্য ব্যবহৃত হয়। সুতরাং আপনি অবশ্যই অন্যরকম কিছু করছেন। আমি যে হুকটি ব্যবহার করার পরামর্শ দিয়েছিলাম তা হুক_পেজ_এটাচমেন্টস_ল্টার (), পৃষ্ঠা_সামগ্রী () নয়। যখন কোনও হুক বাস্তবায়ন করা হয় এবং কোনও কিছু কাজ করে না, আপনার কোডটি এমনকি একটি প্রস্থান যোগ করে, এমনকি যদি ডাকা হয় তবে যাচাই করার জন্য প্রথম জিনিসটি সর্বদা থাকে; উদাহরণ স্বরূপ.
বার্ডির

আমি কাজের কোড যুক্ত করেছি যা আপনার প্রস্তাবিত ব্যবহার করে hook_page_attachments_alter। আমার এখন দুটি ভিউপোর্ট ট্যাগ রয়েছে তার একটি দিক প্রভাবিত হচ্ছে, একটি মূল থেকে এবং একটি আমার থিম থেকে যুক্ত করেছি যাতে আমি কীভাবে এটি মোকাবেলা করব তা সম্পর্কে নিশ্চিত নই।
ড্যানি ইংলন্ডার

1
এটিই দ্বিতীয় যুক্তির জন্য থাকার কথা, এইচটিএমএল_হেড উপাদানগুলি বিষয়টিকে অনন্য রাখতে সক্ষম করতে এটি ব্যবহার করছে। মূল দিকে তাকালে, সেই উপাদানটি ডিফল্টএইচটিএমএলফ্রেজমেন্টরেেন্ডার :: সেটডফল্টমেট্যাগগুলি () এ যুক্ত হয়। সেখানে নতুন এপিআইতে কোনও কী নির্দিষ্ট করার কোনও উপায় নেই যা দেখতে বেশ গুরুতর সমস্যা বলে মনে হচ্ছে। আমি আপনাকে এটির জন্য একটি সমস্যা খোলার পরামর্শ দিচ্ছি। হতে পারে drupal.org/node/2350943 সম্পর্কিত।
বার্দির

আমি একটি মূল সমস্যাটি খুললাম: drupal.org/node/2359987
ড্যানি ইংলন্ডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.