কীভাবে থিমে শর্তযুক্ত জাভাস্ক্রিপ্ট যুক্ত করবেন?


10

আমি ব্যবহার করতে চান সেটি Selectivizr IE6-8 মধ্যে অনুকরণ সিএসএস 3 নির্বাচকদের সঙ্গে স্ক্রিপ্ট।

তবে আমার থিমটিতে এটি যুক্ত করতে আমার খুব কষ্ট হচ্ছে। এখনও পর্যন্ত চেষ্টা করা হয়েছে:

1) এটি html.tpl.php প্রধান বিভাগে জোর করে:

<!--[if lt IE 9]>
<script src="<?php print base_path() . path_to_theme(); ?>/js/selectivizr.js"></script>
<![endif]-->

তবে বেস_পথ () ডি 7-তে কোনও কিছুরই ফেরত আসবে না বলে মনে হচ্ছে (কমপক্ষে html.tpl.php - সম্ভবত পেজ.টিপিএলপিএফ ... এ)। এবং আমি জানি এটি যাইহোক এটি করার জন্য ড্রুপাল উপায় নয় ।

2) আমার থিমের ইনফো ফাইলটিতে যুক্ত করা:

scripts[] = selectivizr.js

তবে অবশ্যই এটি নিঃশর্ত, অবশ্যই :(

3) আমার টেম্পলেট.এফপি-তে ড্রুপাল_এডিডি_জেএস ( ) ব্যবহার করে ।

তবে আবারও, আমি নিশ্চিত নই যে এটি সেখানে শর্তাধীন স্থাপন করা যাবে?

উত্তর:


3

আমি মনে করি আপনার 1) সেরা বিকল্প।

আপনার কোনও ফাংশন কল করার দরকার নেই, আপনার ইতিমধ্যে সেই মানগুলি রয়েছে:

<script type="text/javascript" src="<?php print $base_path . $directory; ?>/js/selectivizr.js"></script>

এফওয়াইআই, <?php dsm($variables) ?>কোনও ভেরিয়েবল উপলব্ধ কিনা তা দেখতে কোনও টেমপ্লেট ফাইলে। (ডিভেল মডিউল ইনস্টল সহ)

একটি মডিউল কন্ডিশনাল স্টাইলশিট রয়েছে যার .info ফাইলটিতে আইই শর্ত যুক্ত করার জন্য দুর্দান্ত সমাধান রয়েছে তবে এখনও কেবল সিএসএসের জন্য। ( জেএসের জন্য বৈশিষ্ট্য অনুরোধ দেখুন )


15

এইভাবে আমি আমার টেমপ্লেট.এফপি ফাইলটিতে এইচটিএমএল 5 শিব যুক্ত করেছি:

$html5shiv = array(
  '#tag' => 'script',
  '#attributes' => array( // Set up an array of attributes inside the tag
    'src' => drupal_get_path('theme', 'mythemename') . '/js/lib/html5shiv.js', 
  ),
  '#prefix' => '<!--[if lte IE 8]>',
  '#suffix' => '</script><![endif]-->',
);
drupal_add_html_head($html5shiv, 'html5shiv');

4
কয়েকটি পরিবর্তন: '# মূল্য' যুক্ত করুন এবং এটি '' এ সেট করুন তারপর মানদণ্ডের সাথে সামঞ্জস্যপূর্ণ মার্কআপ পেতে '# সুফিক্স' পরিবর্তন করুন '<! [Endif] ->'
রাগান ড্যান

@ অ্যাগ্রিড্যানের পরামর্শে সম্পাদিত।
উইজোনসোলিউশনগুলি

1

আমি ভেবেছিলাম এটি বেকড হয়েছে তবে ভুল ছিল।

দেখে মনে হচ্ছে মাদারশিপ থিমটি এই লিবারব্রি ব্যবহার করে।

আইটি আপনার থেকে কিছুটা আলাদাভাবে কাজ করে তবে মূলত আপনার বিকল্পটি 1 করে

  $vars['selectivizr'] = '<!--[if (gte IE 6)&(lte IE 8)]>';
  $vars['selectivizr'] .= '<script type="text/javascript" src="/sites/all/libraries/selectivizr/selectivizr.js"></script>';
  $vars['selectivizr'] .= '<![endif]-->';

দেখে মনে হচ্ছে আপনার কোডটি / এর অধীনে না থাকলে এই কোডটি কাজ করবে না

তবে আপনার থিমের জন্য যদি গ্রন্থাগারটি প্রয়োজন হয় তবে আমি শর্তসই কোডটি পৃষ্ঠা.tpl.php ফাইলে রাখার ক্ষেত্রে কোনও সমস্যা দেখছি না।


আপনি যদি লাইব্রেরি এপিআই ব্যবহার করেন তবে আপনি হার্ড কডেড লাইব্রেরি পাথকে লাইব্রেরি_জেট_পথ () ব্যবহার করতে পারেন, বা ড্রপাল_জেট_পাথ () না থাকলে পরিবর্তন করতে পারেন।
মাস্টারচিফ


1

যদি আপনার জেএস ফাইলের কোনও নির্ভরতা না থাকে তবে এটি ঠিক এইচটিএমএল এর হেড ট্যাগে অন্তর্ভুক্ত করা যেতে পারে:

$selectivizr = array(
  '#tag' => 'script',
  '#attributes' => array(
    'src' => file_create_url(drupal_get_path('theme', 'theme_name') . '/js/lib/selectivizr.js'),
  ),
  '#prefix' => '<!--[if lte IE 9]>',
  '#suffix' => '</script><![endif]-->'
);
drupal_add_html_head($selectivizr, 'selectivizr');

যদি আপনার কাছে থাকে তবে আসুন, jQuery নির্ভরতা, আপনার কোডটিকে পৃষ্ঠার নীচে রাখাই বুদ্ধিমান:

function THEMENAME_preprocess_html(&$vars){
  $vars['page']['page_bottom']['jquery_dependent_js'] = array(
    'footer' => array(
      '#type' => 'markup',
      '#markup' => '<!--[if lte IE 9]><script src="' .
        file_create_url(drupal_get_path('theme', 'theme_name') . '/js/lib/jquery_dependent_js.js'). '"></script><![endif]-->',
    )     
  );
}

আপনার প্রথম কোড ব্লকে একটি অতিরিক্ত স্ক্রিপ্ট ট্যাগ রয়েছে # সুফিক্স কীতে।
পোল ডেলিয়েরা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.