By19.Published on二月 27, 2009 13:52.
26 Views .

Loading ...
全AJAX的SVN-WEB客户端浏览程序及WP插件
这个SVN的WEB客户端浏览程序是在网络找到的一套开源的PHP(原作者:Lukin <mylukin@gmail.com> )修改而来~主要是因为想要做一款可自由定制界面的SVN-AJAX WEB浏览器,浏览匿名用户有读取权限的SVN目录。提供两套:整站程序(演示地址:http://www.ll19.com/svn/),以及WP的插件(插件效果见下方),插件可以直接在文章中引入SVN的目录供浏览。这里浏览的是我在GOOGLE上的SVN:http://glll.googlecode.com/svn/trunk。
插件的用法,可以在文章中或者模板中引入SVN目录,比如:
1
2
3
4
| //激活插件后文章中
[wp_svn_add svn_server="http://glll.googlecode.com/svn/trunk" svn_path="/src/php/"]
//模板中
< ?php wp_svn_add("http://glll.googlecode.com/svn/trunk","/src/php/"); ?> |
插件引入两个参数,第一个是SVN的根路径,第二个是要显示SVN的路径。其中根目录不能以“/”结束。
glll – Revision 21: /src/php/
/src/php/
PS:我个人的主张是不在自己的站点激活很多的插件,这个插件为了在文章中输出SVN的地址加了一个文章的filter函数,当然这并不会对性能造成太大的影响,如果你还是觉得为了几篇文章就加一个filter函数很不值得的话可以照我的做法:首先我也没有激活这个插件,我只是在测试环境启用后把生成的HTML复制进来而已(本地生成的话域名别忘记改成自己的),HTML包括svn_19_main的这个ID的DIV和下面的JS及SPAN标签。这样也可以达到SVN的文章AJAX浏览效果。比如这段HTML代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <div id="svn_19_main" name="svn_19_main_1">
<h2>Revision 197: /trunk/sql/</h2><ul>
<li><a class="folder" href="#/trunk/">..</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/AddPermission.sql" target="_blank">AddPermission.sql</a></li>
<li><a class="folder" href="#/trunk/sql/LK/">LK/</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/eisp_oracle_20061130.sql" target="_blank">eisp_oracle_20061130.sql</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/eisp_sqlserver_20061130.txt" target="_blank">eisp_sqlserver_20061130.txt</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/lisw.sql" target="_blank">lisw.sql</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/readme.txt" target="_blank">readme.txt</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/xiangts.sql" target="_blank">xiangts.sql</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/yangg.sql" target="_blank">yangg.sql</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/zw.sql" target="_blank">zw.sql</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/%e6%95%b0%e6%8d%ae%e7%a7%bb%e6%a4%8d%e5%bb%ba%e8%a1%a8SQL.sql" target="_blank">数据移植建表SQL.sql</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/%e6%9c%89%e7%94%a8sql.txt" target="_blank">有用sql.txt</a></li>
<li><a class="file" href="http://localhost/wwwroot/wp-content/plugins/wp_svn_browse/view.php?svn_server=http://localhost/svn/sdww/sdww&path=/trunk/sql/%e8%bd%a6%e8%be%86%e7%ae%a1%e7%90%86.sql" target="_blank">车辆管理.sql</a></li>
</ul> </div>
<script type="text/javascript">
jQuery("div[@name='svn_19_main_1'] ul li a").svn_ajax_19("svn_19_main_1","http://www.ll19.com/wwwroot/wp-content/plugins/wp_svn_browse/","http://localhost/svn/sdww/sdww");
</script>
<span style="display:none" id="nowSvnFolder_svn_19_main_1">/trunk/sql/</span> |
当然如果你觉得这样做麻烦也可以直接激活插件,文章传入[wp_svn_add svn_server="http://glll.googlecode.com/svn/trunk" svn_path="/src/php/"]就OK了~
| 这里下载插件 | 这里下载单独的WEB Client程序 |
继续阅读…Continue reading…
By19.Published on二月 13, 2009 11:11.
415 Views .

Loading ...
全站点AJAX续.
首先声明这样做完全不会影响SEO。以前的一篇WP的相关文章http://www.ll19.com/jquery-wordpress-ajax.html,这次算是补充,写了一个较通用的JQuery插件来实现,我的Lifestream也用了类似的方法全AJAX,有兴趣可以去测试一下。这里需要用到下面3个文件:
| 19_ajax.css | 19_ajax.js | ajax_tooltips_bg.gif |
其中JS就是这个JQuery插件,其它两个是相关的css和背景的gif,引入站点后具体用法我举个例子比如在页面的最下加这句:
1
| jQuery("p.date a,li.tag_list a,p#pagination a").ajax_19("div#main_container"); |
熟悉JQuery的人应该一看就懂,这里的作用是将所有class是date的p元素、class是tag_list的li元素、id是pagination的p元素下的链接点击的时候得到这个链接的内容后显示在ID为main_container的div里,而不会去打开此链接。这样既不影响SEO又实现了AJAX。
拿Lifestream来举例,用过的人都清楚这套系统简单说就是一个RSS聚合器,官方站点Sweetcron,同样我也是用它来聚合我在各个站点留下的各种记录,有兴趣的人可以去安装一套。之后要让它全AJAX,和WP中用到的方法类似,不同的是它在控制显示页面的时候不是在主题包中,首先需要修改system\application\libraries\sweetcron.php, 两个函数get_single_item_page()和get_items_page()的三个地方:
1
2
3
| $this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/_header', $data);
$this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/single', $data);
$this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/_footer', $data); |
更改成:
1
2
3
4
5
6
7
8
| $glll = $_POST["glll"];
if ($glll != "ajax") {
$this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/_header', $data);
$this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/single', $data);
$this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/_footer', $data);
} else {
$this->CI->load->view('themes/' . $this->CI->config->item('theme') . '/single', $data);
} |
和WP中起到的作用一样,从搜索引擎或者其他链接进来是不会post一个值为ajax的参数的,所以我们在自己页面点击的时候就可以传这个进来判断他不去重复加载header和footer了。之后修改主题的_sidebar.php最上面和最下面:
1
2
3
4
5
| <!--最上面-->
<?php $glll = $_POST["glll"]; if ($glll != "ajax") { ?>
<!--最下面-->
<?php } ?> |
来判断不去重复加载sidebar,之后在_footer.php处就是页面的最后加入:
1
2
3
| <script type="text/javascript">
jQuery("p.date a,ul.tag_list li a,p#pagination a,p#breadcrumb a,ul.item_tag_list li a,p.site_info a,p.activity_image_text a,div.item_inner a.activity_image,p.youku_title a,p.youtube_title a").ajax_19("#main_container");
</script> |
则就实现了全站AJAX了,这里传入的链接都是Lifestream这个站点输出的链接,这样做的效果就是每次都只加载内容部分然后更新ID为main_container的div。有可能每个站点输出的链接都不同所以这些细节还是要自己对照着自己的站点修改,不建议直接传入jQuery(“a”),毕竟很多链接比如外部链接并不需要ajax,所以你自己要清楚哪部分要去AJAX,哪部分不需要。这里的19_ajax.js还是要做一个简单的修改,在success : function(resource) {后面加一句
1
| jQuery("#main_container p.date a,#main_container ul.tag_list li a,#main_container p#pagination a,#main_container p#breadcrumb a,#main_container ul.item_tag_list li a,#main_container p.site_info a,#main_container p.activity_image_text a,#main_container div.item_inner a.activity_image,#main_container p.youku_title a,#main_container p.youtube_title a").ajax_19("#main_container"); |
作用是在AJAX后让更改的这部分内容再次调用ajax_19,否则这部分内容就直接打开链接了。这句和上面提到的_footer.php页面最后处加入的那句JS基本是相对应的,直接复制过来在每个元素前面加个#main_container就行。
顺便提供一个优酷的Sweetcron插件,效果就和youtube一样:youku_com.php
用法:
1
2
3
4
| <?php elseif ($item->get_feed_domain() == 'youku.com'): ?>
<?php echo $item->get_video()?>
<p class="youku_title"><a href="<?php echo $item->get_permalink()?>/<?php echo $item->get_name()?>"><?php echo $item->get_title()?></a></p>
<p><?php echo word_limiter(strip_tags($item->get_content()), 8)?></p> |
再简单说下这个19_ajax.js的插件,所有传入的链接如果打开方式是_blank都不会去AJAX,如果有锚点则AJAX之后会自动移动到这个锚点的位置,无锚点则自动移动到顶端。如果加载时间过长左上角会出现提示“点击LOADING直接打开链接”(AJAX时的链接其实就在左上角的LOADING上)。对照以前文章的WP全AJAXhttp://www.ll19.com/jquery-wordpress-ajax.html在引入这个插件后就很简单了,比如我在index.php下面写:
1
2
3
| <script type="text/javascript">
jQuery(".more-link,.wp-pagenavi a").ajax_19("#ajaxPost");
</script> |
则当点阅读更多、页数这些链接时就实现AJAX了。