2016-05-13 96 views
1

在此先感谢您的帮助。我很难保持我的代码库清洁。我想避免混用PHP,HTML和CSS。动态地包含来自外部文件的JavaScript - PHP

目前,我的主站点被分解成许多较小的选项卡。在进行ajax调用后,这些选项卡的PHP代码被动态包含。

elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) { 
include 'templates/custom/'.$center."/".$section."/".$tab.".php"; 
} 

它工作的很好,但我也想从外部文件动态包含JavaScript。在我的脑海里会像这样工作,

elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) { 
include 'templates/custom/'.$center."/".$section."/".$tab.".php"; 
include 'templates/custom/'.$center."/".$section."/".$tab.".js"; 
} 

如何动态包括基于用户想要去,同时仍保持通过标签对单个文件进行分离与JavaScript选项卡的JavaScript。

我花了整整一天寻找到这个问题,并保持跨越例子看起来像这样的未来,

echo "<script language='javascript' type='text/javascript'>"; 
echo "alert('hello worldio');"; 
echo "</script>"; 
$URL="page.php"; 
echo "<script>location.href='$URL'</script>"; 

这个网站是一个单页的应用程序。再次感谢!

回答

1

只是print<script>标签,包括它:

print '<script src="templates/custom/'.$center.'/'.$section.'/'.$tab.'.js'" type="text/javascript"></script>'; 
1

Javascript函数不能包含Javascript文件。使用下面的代码

elseif (file_exists('templates/custom/'.$center."/".$section."/".$tab.".php")) { 
include 'templates/custom/'.$center."/".$section."/".$tab.".php"; 
$file_path = "javascript external file path"; // replace with correct file path 
?> 
<script language="JavaScript" type="text/javascript" src="<?php echo $file_path;?>"></script> 
<?php } ?> 
+0

谢谢你的评论,但你能解释一下这个更详细干什么? – linuxisthebest33

+0

以上代码用于根据您的情况在php文件中包含JavaScript文件。包含js文件的代码与包含php文件不一样。 –

+0

感谢您的帮助! – linuxisthebest33

0

喜在我来说,我使用seprated较小parts.i模块基本模板有3个主要的UI部分我网站 1.所有模板jquery,bootstrap,...在所有模板中使用的公共js必须放在这里 2.每个样式或模板都有一个js文件夹,该模板的所有公共js文件必须存在 3。模板中的每个模块都有js文件夹,该文件夹必须是该模块特有的js文件夹有 我这样做对CSS too.in事实上,当我通过

array_slice(scandir($st_css_style_public_path), 2) 

加载模块检查所有这些文件夹,并创建CSS链接或JS脚本并打印地址的最后串在我的网页。 但有些时候你需要注入的代码和平直接到您的网页,我使用的文件夹,并用插件 - > plugins.php名称的文件把所有一段脚本那里得到它的内容,并将其打印到我的网页

`$st_plugins .= (file_exists($st_plugin_style_public_path)) ? file_get_contents($st_plugin_style_public_path) : ' '; 

所有我在我看来渲染方法是这样的:

public function render($address, $data = '', $cache = 1, $showstyle = 1) { 
     $data['LINKPREFIX'] = '/' . $this->current_holding_unique_name 
       . '/' 
       . $this->current_lang; 
     if (isset($address)) { 
      $path = explode('/', $address); 
      $path[0] = $path[0]; 
      $path[1] = $path[1]; 
     } 
     $template = $this->twig->loadTemplate($path[0] . DS . $path[1] . '.twig'); 
     if ($showstyle) { 
      $css_links = ''; 
      $js_links = ''; 
      $st_plugins = ''; 

      //################################################## 
      //########################## CREATING CSS,JS ADDRESS 
      //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 
      //####### SITE PUBLIC CSS & JS FILES 
      $st_js_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'js'; 
      $st_css_public_path = '.' . DS . PUBLIC_DIR . DS . $this->set_address($path[0]) . 'css'; 

      if (file_exists($st_js_public_path) && is_dir($st_js_public_path)) { 
       $ar_public_jsfile_list = array_slice(scandir($st_js_public_path), 2); 
       foreach ($ar_public_jsfile_list as $js_file_name) { 
        $js_links .= $this->create_css_js_link($st_js_public_path . DS . $js_file_name, 'js'); 
       } 
      } 
      if (file_exists($st_css_public_path) && is_dir($st_css_public_path)) { 
       $ar_public_cssfile_list = array_slice(scandir($st_css_public_path), 2); 
       foreach ($ar_public_cssfile_list as $css_file_name) { 
        $css_links .= $this->create_css_js_link($st_css_public_path . DS . $css_file_name, 'css'); 
       } 
      } 

      //####### STYLE PUBLIC CSS & JS & PLUGINS FILES 
      $st_js_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'js'; 
      $st_css_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'css'; 
      $st_plugin_style_public_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . 'public' . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php'; 
      if (file_exists($st_css_style_public_path) && is_dir($st_css_style_public_path)) { 
       $ar_cssfile_list = array_slice(scandir($st_css_style_public_path), 2); 
       foreach ($ar_cssfile_list as $css_file_name) { 
        $css_links .= $this->create_css_js_link($st_css_style_public_path . DS . $css_file_name, 'css'); 
       } 
      } 
      if (file_exists($st_js_style_public_path) && is_dir($st_js_style_public_path)) { 
       $ar_jsfile_list = array_slice(scandir($st_js_style_public_path), 2); 
       foreach ($ar_jsfile_list as $js_file_name) { 
        $js_links .= $this->create_css_js_link($st_js_style_public_path . DS . $js_file_name, 'js'); 
       } 
      } 
      $st_plugins .= (file_exists($st_plugin_style_public_path)) ? file_get_contents($st_plugin_style_public_path) : ' '; 
      //####### MODULE CSS & JS FILES 
      $st_js_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'js'; 
      $st_css_style_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'css'; 
      $st_plugin_path = '.' . DS . VIEW_DIR . DS . $this->current_style . DS . $path[0] . DS . $this->current_direction . DS . 'plugins' . DS . 'plugins.php'; 
      if (file_exists($st_css_style_path) && is_dir($st_css_style_path)) { 
       $ar_cssfile_list = array_slice(scandir($st_css_style_path), 2); 
       foreach ($ar_cssfile_list as $css_file_name) { 
        $css_links .= $this->create_css_js_link($st_css_style_path . DS . $css_file_name, 'css'); 
       } 
      } 
      if (file_exists($st_js_style_path) && is_dir($st_js_style_path)) { 
       $ar_jsfile_list = array_slice(scandir($st_js_style_path), 2); 
       foreach ($ar_jsfile_list as $js_file_name) { 
        $js_links .= $this->create_css_js_link($st_js_style_path . DS . $js_file_name, 'js'); 
       } 
      } 
      $st_plugins .= (file_exists($st_plugin_path) && $showstyle) ? file_get_contents($st_plugin_path) : ' '; 

      //################################################ 
      //################################################ 
      //################################################ 
      //################################################ 
      //@ @ @ CREATING CSS,JS ADDRESS 
      $data['VARCSSADDR'] = $css_links; 
      $data['VARJSADDR'] = $js_links . $st_plugins; 
      $data['VARURL'] = '/'; 
      $data = array_merge($data, lang_translate::$lang); 
      $template->display($data); 
     } else { 
      //$ar_langpropr = language::$ar_lanuage[session::get('current_lang')]; 
      //$data['lang_code'] = $ar_langpropr['lang_code']; 
      $data = array_merge($data, lang_translate::$lang); 
      return $this->twig->render($address . '.twig', $data); 
     } 
    } 

我用树枝模板引擎所以有一些不相关的代码,在这里你的问题,其他部分是Ajax调用。 结论: 1 - 您可以使用此结构来添加或删除模块中的文件,就像从文件夹中复制或删除文件一样简单。 2 - 你可以用它来创建正确的JS或CSS通过Ajax创建的地址,并打印在你的代码

我希望它帮你,不要犹豫,因为如果你需要

+0

感谢您的帮助! – linuxisthebest33

0

PHP更多的问题include()是服务器端。

JavaScript是客户端。

因此,您不能在JavaScript上使用include()。

不过,如果你想加载一个JavaScript与你想有一个网址,使用: $url = "JAVASCRIPT URL HERE"; echo('<script src="'. $url .'"></script>');

相关问题