سؤال

لإضافة JavaScript ، يمكنك استخدام:

drupal_add_js

وتشبه CSS:

drupal_add_css

ولكن ماذا لو كنت أرغب فقط في إضافة HTML في نهاية صفحتي. أي إضافة div مع بعض النصوص فيه في نهاية الصفحة؟

هل كانت مفيدة؟

المحلول

تعمل الكثير من الاقتراحات هنا إذا كنت تريد أن يكون تغييرك قائمًا على السمات ، ولكن إذا كنت تريد أن يأتي هذا من وحدة نمطية ، باستخدام منطقة كتلة أو قالب الصفحة أو الصفحة الأولية لن يقطعها ، لأنها أنت تربط التغيير بالموضوع.

من وجهة نظر معيارية ، تكون الخيارات التالية الأفضل:

hook_footer () -- http://api.drupal.org/api/function/hook_footer/6 :: my_module_footer () يجب أن يعيد سلسلة من HTML ، والتي يمكن أن تكون JavaScript. على سبيل المثال

function my_module_footer(){

    return "<script type='text/javascript'>//your script</script>"

}

يمكنك استخدام Drupal $ _get ['Q'] للحصول على عنوان URL للصفحة وأن يكون ذلك مشروطًا لعنوان URL للصفحة.

وإلا ، فأنا أستخدم أحيانًا $ globals ["_ add_my_footer"] باعتباره منطقية ، وأضعه في نقاط مختلفة في الوحدة النمطية ، ثم في hook_footer () ، معرفة ما إذا كان هذا صحيحًا.


drupal_add_js -api.drupal.org/api/drupal/includes--common.inc/function/drupal_add_js/6 :: يمكنك استخدام هذا لإضافة javaScript

function my_module_init(){

    $script = "your script "; // notice no <script> tags
    drupal_add_js($script, 'inline', 'footer');
    // you can also use this function to grab a .js file

}

لاحظ أنني وضعت DRUPAL_ADD_JS في hook_init () - لقد فعلت ذلك لأنه إذا لم تفعل ، فقد يضيع البرنامج النصي عند استخدام ميزة التخزين المؤقت العدوانية لـ Drupal.

لسوء الحظ ، لا توجد معلمة نطاق $ لـ DRUPAL_ADD_CSS

نصائح أخرى

مثل hook_footer لم تنجو من دروبال 6 ، إليك الوظيفة المكافئة وكيفية تنفيذها في دروبال 7:

/**
* Implements hook_page_alter().
*/
function example_page_alter(&$page) {
  if (variable_get('dev_query', 0)) {
    $page['page_bottom']['devel']= array(
      '#type' => 'markup',
      '#markup' => '<div style="clear:both;">' . devel_query_table() . '</div>',
    );
  }
}

(من عند http://preprocess.me/drupal-hookfooter-in-drupal-7)

يمكنك إضافة ما يلي إلى ملف template.php الخاص بك:

  
function phptemplate_preprocess_page(&$vars) {
  $vars['closure'] .= 'Add markup here';
}
  

يحتوي Drupal على خطاف يمكنك تطبيقه وإضافته في أي رمز ترغب في تذييل الصفحة - Hook_Footer. يرى http://api.drupal.org/api/function/hook_footer/6

يمكنك كتابة كتلة للقيام بذلك ووضع الكتلة في الإغلاق.

... أو ، ربما لا ينصح بالإجابات الأخرى ، ولكن أكثر مباشرة ، يمكنك إضافة HTML مباشرة إلى ملف page.tpl.php.

لقد قدمت بالفعل بعض الاقتراحات الجيدة:

  • باستخدام كتلة
  • قوالب التحرير
  • باستخدام وظيفة المعالجة المسبقة.

سيكون أسهل شيء هو إضافة كتلة تقوم بإنشائها ، حيث يمكنك وضع علامة مخصصة. يمكنك حتى إنشاء قالب خاص لذلك ، حتى لا تحصل على علامة Drupal Block المعتادة ، ولكن فقط ما تكتبه في محتوى الكتلة.

يجب أن يغطي احتياجاتك:

  • لديك سيطرة 100 ٪ على المكان الذي يتم إنشاؤه العلامات (يمكنك تحديد المنطقة الموجودة فيها)
  • لديك سيطرة 100 ٪ على ما يتم إنشاؤه العلامات

الآن إذا كنت لا ترغب في استخدام الكتل ، لأنك لا تريد أن يعرف مدراء الموقع عن الكتلة ، فإن أفضل شيء سيكون:

  1. أضف مربع اختيار إلى إعدادات السمة الخاصة بك.
  2. في خطاف صفحة المعالجة المسبقة ، قم بتعيين متغير منطقي إذا تم التحقق من مربع الاختيار أم لا.
  3. في قالب صفحتك ، يمكنك التحقق من المتغير ، إذا كان هذا صحيحًا ، فأنت تكتب علاماتك حيث تريده.

سيؤدي ذلك إلى نفس الشيء على النحو الوارد أعلاه ، فقط لديك الإعداد في المظهر الخاص بك ، بدلاً من إضافة كتلة. سوف يتطلب المزيد من العمل.

يمكنك أن تفعل الشيء نفسه في وحدة مخصصة ، لكن لن يكون من المنطقي القيام بذلك في وحدة نمطية ، نظرًا لأنه عرض تقديمي بحت وأنت تعتمد على موضوعك على أي حال.

هذه خدعة صغيرة تعمل في دروبال 6 و 7

    $script = '//--><!]]></script><strong>this is bold html code</strong><script type="text/javascript"><!--//--><![CDATA[//><!--';
    drupal_add_js($script, 'inline', 'footer');

نظرًا لأنه من الواضح أنك لا ترغب في تعديل ملفات القالب أو استخدام أي من الطرق الأخرى المقترحة أعلاه ، فإن هذا يجب أن يعمل على إضافة HTML إلى الصفحة تمامًا كما هو الحال بالنسبة لـ JS و CSS

لا أوصي باستخدام Block ، حيث أن المبالغة في إضافة بعض العناصر على تذييل. إليك الخطاف الذي يمكنك استخدامه لإضافة المحتوى من قبل </body> علامة لدروبال 7.

function hook_page_build(&$page) {
  $page['page_bottom']['YOUR_MODULE'] = array(
    '#markup' => '<div> I want to get inserted at the bootom of the page </div>',
  );
} 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top