2013-06-26 49 views
0

我試圖在drupal中應用我的新模板,但我無法使用動畫內容部分執行此操作。問題在drupal上應用我的新主題

首先,我創建了我的模板在功能index.html和CSS ...它完美的作品:菜單

例子:

<ul id="menu"> 
<li><a href="#page_2">about us</a></li> 
<li><a href="#page_3">Products</a></li> 
</ul> 

當我點擊這兩個環節之一,內容

<article id="page_X"> 

<p>Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, ad<p> 

</article> 

通過這個jQuery動畫:

文章元件顯示器之間
$(function(){$('#content').find('article').hide().css({width:'0',marginLeft:'0%',left:'50%'}); 

var act='#page_1';$('#page_1').show();$('a').click(function(){page=$(this).attr('href'); 

if(page.substr(page.indexOf('#'),6)=='#page_'){ 

$('#menu a, footer a').parent().removeClass('active'); 

$(this).parent().addClass('active'); 

$(act).animate({width:'0',marginLeft:'0%',left:'50%'},600,'easeInCirc',function(){ 

$('#content').find('article').css({display:'none'}) 

$(page).css({display:'block'}).animate({width:'100%',marginLeft:'0%',left:'0%'},600,'easeOutCirc',function(){act=page;});});return false;}})}) 

它與靜態內容的作品完美,但我的問題是我怎麼能在page.tpl.php做到這一點與Drupal的動態內容,使用:

<?php print theme('links__system_main_menu', array('links' => $main_menu, 'attributes' => array('id' => 'menu'), 'heading' => t(''))); ?> 

<?php print render($page['content']); ?> 

請告訴我,如果你需要更多的細節。

非常感謝!

注:在引導彈出模式,我們可以用數據目標做到這一點,爲例:

<li><a class="" data-toggle="modal" **href="exemple."** **data-target="#page_2"**>Contact</a> 
+1

只是一個提示,你需要處理你的代碼格式化,它不容易閱讀 – Novocaine

回答

0

這也沒有什麼好去的,但基本上,Drupal使用了「行爲」系統附加jQuery的行動內容。這提供了一個框架,允許在$(document).ready通常已經觸發(在初始頁面加載後)後添加內容時運行腳本的框架。

這使腳本可以以一致的方式應用,無論向頁面添加對象的源和時間(AJAX等)。

你需要考慮兩兩件事:

首先是JavaScript的關閉,第二個是安裝Drupal的行爲。 這些概述可以在這裏找到在https://drupal.org/node/171213

我建議你先寫一個「Hello World」 Drupal的行爲,並得到它的工作,然後在你的菜單邏輯工作,因爲有一個顯著的學習曲線時說到做事「Drupal的方式」

要開始爲您送行,你可以創建一個運行這樣的一個js文件:

(function ($, Drupal, window, document, undefined) { 

    Drupal.behaviors.helloWorldHandlers = { 

     attach: function(context, settings) { 
      $("ul#menu").once("hello-world-handler", function() { 
       $(this).click(function() { alert("hello world"); }) 
      } 
     } 
    } 

})(jQuery, Drupal, this, this.document); 

(我想我說對了)

添加fi對您的主題.info文件進行文件操作是一種簡單的方法。一行你的主題信息的文件,運行這樣的事情應該這樣做:

scripts[] = js/helloworld_behavior.js 

你的主題.info文件位於你的主題文件夾結構的根,與像mythemename的名稱。info

一旦你有了工作,你可以擔心其餘的。 我相信你會發展與你的新cms正常的愛/恨關係。

+0

你好,感謝你的迴應,但我不明白once()函數的作用,她取代addClass?謝謝 –