Gallery:使用嵌入模式将Gallery嵌入到你自己的网站中

来自站长百科
跳转至: 导航、​ 搜索

--- 为G2.1.x与G2.2.x的更新- 参见G2.0.x版本历史---

取自此文 http://gallery.menalto.com/node/36918.

    • 无论你选择了何种外观主题,G2总是被可视化地嵌入到你的网站中。
    • 你无需担心将模板文件复制到本地文件夹并担心会丢失某重要的更新。
    • 你无需为smarty语法劳神。
    • 你对显示的内容有更多的控制力(例如删除登入链接)。
    • 你必须新建一个文件(光有一个自定义外观主题是不够的)。
    • 你必须使用PHP代码并找到需要的路径。
    • 到你的G2突然产生两个入口点,大多用户不希望看到这个。
    • 需要对cookie路径做处理。
    • 你可能需要重置或禁用URL重写模块。

安装[ ]

  1. 你需要在Gallery2目录(或其他位置)下创建一个名为gallery2embedded.php的文件,并将以下的代码复制并粘贴到该文件中。
  2. 接下来你需要检查文件顶部的路径以确保这些gallery2安装路径以及gallery2embedded.php文件的位置是正确的。
    • path = gallery2的安装路径。
    • g2Uri = 由文档根目录到gallery2目录的绝对URL路径。
    • embedUri = 访问点的自文档根目录+文件名(以及任何查询参量,但无路径)的绝对URL路径。
    • 更多信息请见gallery2文档目录下的EMBEDDING文件。
  3. 修改<?php echo $g2moddata['bodyHtml']; ?> 之上及之下的HTML代码以满足你的需要(你还可以执行php include函数以包括header及/或footer文件)。
  4. 在gallery2的站点管理页面中修改cookie路径以/并删除cookies。
  5. 在站点管理页面,打开Modules并禁用或重新配置URL重写模块。
  6. 将至g2的链接修改为你新建的gallery2embedded.php文件。
<?php
$g2_Config['path'] = dirname(__FILE__) . '/';

$g2_Config['g2Uri'] = '/gallery2/';
$g2_Config['embedUri'] = '/gallery2/gallery2embedded.php';

//print_r($g2_Config);
require_once( $g2_Config['path'] . 'embed.php');
if (!headers_sent()) {
    header('Content-Type: text/html; charset=UTF-8');
}
$ret = GalleryEmbed::init(array(
				   'g2Uri' => $g2_Config['g2Uri'],
				   'embedUri' => $g2_Config['embedUri'],
				   'fullInit' => 'false',
				   'apiVersion' => array(1,0)
				   )); 
	GalleryCapabilities::set('login',true);

     // 出来G2请求
	$g2moddata = GalleryEmbed::handleRequest();
   // 错误消息在isDone未经定义的情况下的显示方式
   if (!isset($g2moddata['isDone']))
   {
     print 'isDone is not defined, something very bad must have happened.';
     exit;
   }
   // 如为一个二进制数据(图片)请求,则die
   if ($g2moddata['isDone'])
   {
     exit; /* uploads module does this too */
   }
    if ($ret)
    {
      print $ret->getAsHtml();
    }
	 ?>
	 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
	<html>
	<head>
	<?php
       list($title, $css, $javascript) = GalleryEmbed::parseHead($g2moddata['headHtml']);
       echo "<title>" . $title . " -- MySite</title>\n";
       
       foreach ($css as $item) {
       	echo $item . "\n";
       }
       foreach ($javascript as $item) {
       	echo $item . "\n";
       }
	?>
	<style type="text/css"> <!--  /*#gsHeader { display : none; } #gsFooter { display: none; }*/ --> </style>
	</head>
	<body class="gallery">
	<?php
	echo $g2moddata['bodyHtml'];
	?>
	</body>
	</html>