任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

WordPress Sandbox 主题介绍

Sandbox 是一个给主题设计者的主题。它能够轻易的被换一个皮(译者注:这里感觉有点像 K2 主题),所以初学者只需了解 CSS 就能够样式化它。有经验的设计师则会垂涎于它的丰富的语义标记和由一些函数动态产生的充沛的 Classes 。 所以 Sandbox 包含了很多东西: 代码的内在美 兼容 WordPress 2.0.2 — 2.2.x 符合 XHTML 1.0 Transitional 友好支持 Widgets plugin 一个全新的基础的,GPL 授权的主题 主题产生的过程:Andy 增加了一些创新性的语义 class 产生函数,从而使 Scott 的原始主题成为一个高级的语义基础的主题。 你能对 Sandbox 做什么呢? 你可以仅仅把它当作是有一个超级酷的,真正最简洁的主题。 你可以完全只通过 CSS 来定制化它 — 而不必去动别的文件。 只是作为你自己的主题的时候,你可以修改函数和主题文件 你可以把它作为学习 CSS,XHTML 的一个好地方,也许也可以学以下 PHP Sandbox 下载地址:The Sandbox 本文翻译自:The Sandbox,根据个人理解翻译,可能部分内容未忠于原文。 Sandbox 的一些链接 Scott 的博客:plaintxt.org […]

WordPress 数据库探究 #1 — 介绍

这个系列教程翻译自:A look inside the WordPress database。由于原文比较长,我把它分成一系列教程,今天第一篇是开篇介绍。 WordPress 和其他现代内容管理系统 (CMS) 一样,它是以数据库为中心的程序。它把所有信息都保存到数据中 — 博客设置,日志,评论,链接,用户等等。所以理解数据库是怎么组织是非常重要的,如存储的是什么是数据类型,数据表之间是链接有什么不同。 在我们深入研究之前,我需要强调三点: WordPress API 提供了很多操作数据库的方法而不用直接访问数据库而不用直接访问数据库。所以,从技术层面上说,你不需要知道数据库是怎么组织的。但是如果你知道,你可能在遇到问题的时候能更快找到解决方案,而且更容易实现。 WordPress 数据库模式是小巧而简单的。所以没有什么好怕的。它只有10个数据表,而且每个都只有一些字段。总的来说,它的模式是非常有意义的。它能使你在几秒之后就能记住大部分,尽管你没有必要这样做。 WordPress 数据库模式是有非常详细文档描述的。WordPress Codex 文档以字母顺序解释了数据表,这个在查找东西的时候是有帮助的。但是对于初次使用,最好有不同的顺序,这也是这系列日志尝试做到的。 在这接下来的日志,你可能在另外的浏览器标签页中打开前面提到的 WordPress Codex 中的数据库描述,或者数据库工具,如 PHPMyAdmin 或者 MySQL 命令行。你可以通过运行 “SHOW TABLES” 查询列出 数据库表名列表,可以通过 EXPLAIN 这个命令得到表的详细描述,如:“EXPLAIN wp_posts“。 好的,那我们首先看看 WordPress 默认安装之后有哪些数据表: wp_posts wp_postmeta wp_users 和 wp_usermeta wp_comments wp_options wp_categories 和 wp_post2cat wp_links 和wp_link2cat 这篇到此为止,下一篇我们将给给大家详细介绍 wp_posts 这个表。 […]

Simple Tags 介绍和中文版

升级到 WordPress 2.3 之后,WordPress 引进了原生的 tag 功能,现在不用通过插件就能实现了 tag 功能,但是使用 WordPress 2.3 一段时间之后,对其 tag 管理功能非常失望,只有日志编辑框处有一个添加 tag 功能。不能编辑 tag 的 slug,不能重命名 tag,不能删除 tag 等等,真的可以说没有任何管理的功能。 幸好,Simple Tags 及时出现在我的视野。Simple Tags 的前身是大名鼎鼎的 Simple Tagging。作者对 Simple Tags 的开发原则是性能最优、安全更佳、功能更多(best performances, more secured and brings a lot of new functions)。目前的最新版本是1.02,主要特性有: 自动推荐标签 标签管理(重命名、删除、合并、搜索、添加、编辑标签 ID) 列出未加标签的内容 批量编辑标签 — 这个功能非常好,很多在 2.3 之前没有使用 tag 插件的用户(比如我)就可以通过他给所有文章添加 tag。 给页面加标签 […]

WordPress 主题教程 #1:介绍

WordPress 主题教程 #1:介绍是从零开始创建 WordPress 主题系列教程 的第一篇。 从零开始制作 WordPress 主题的教程不会一次就教会你所有的东西,那样也是不可能的,这个教程也不是 WordPress 主题制作的参考,我所做的是一步一步从零开始教你如何制作 WordPress 主题,所以一定要耐心。 所以这一篇介绍首先是 WordPress 主题制作的一个最基本的介绍。这里会涉及到 HTML 和 WordPress 的基本规则,一些专业术语,以及 WordPress 主题的层式结。这些概念是很重要的,在接下来教程的很多地方都会涉及到,所以开始之前一定要搞清楚。 基本规则: 规则 #1:以正确顺序关闭所有 HTML 标签。 在上图中在错误关闭标签的演示中,关闭的 ul 标签是不按次序的。 每个 HTML 标签都是在 < 和 > 中,如果有斜线 /,则说明这个标签是开始标签,没有则是结束标签。如:<> 是开始标签,而</> 是结束标签。 在上面的例子中,使用 ul(无序列表)li (列表元素)标签。注意 li 的开始和结束标签在 ul 的开始和结束标签的里面,这就是标签正确嵌套方式。 规则 #2:每个主题至少要有这两个文件 – style.css 和 index.php。index.php 告诉主题中所有的元素如何布局,style.css 则告诉主题中所有的元素该如何展示和样式。下面是一个完整的主题含有的文件列表(现在我们不用详细了解这个列表每个文件的意思,有个这样的印象就可以了): […]

bbPress 介绍,安装和中文包

bbPress 介绍 什么是 bbPress? bbPress 是 WordPress 母公司 Automaticc 出品的一款开源论坛程序,它是一个符合 Web 标准,非常容易使用的轻量级论坛程序,由于 bbPress 保持了体积小,重量轻,所以速度非常快。bbPress 没有提供过多复杂的功能,所以你要安装一个轻量型的论坛,bbPress 是很好的选择。 对于有更多需求的用户来说,bbPress 也和 WordPress 一样提供了一个非常强大插件系统,让你添加各种功能扩充论坛。并且 bbPress 的 API 接口和 WordPress 也类似,同样是 Action 和 Filter 两种 Hook,如果你熟悉 WordPress 插件制作,那么你也会很快学会 bbPress 插件制作。 在使用方面,bbPress 和 WordPress 拥有基本相同的使用和操作方法,特别是 bbPress 1.0 版本之后,bbPress 后台管理界面和 WordPress 基本类似,使用了相类似的描述和名字,习惯使用 WordPress 的同学对 bbPress 应该很快能够上手。 bbPress 主要特点和功能 快速和轻量级 — bbPress 保持代码简洁,让用户得到最好的体验。 […]

WordPress 主题教程 #9:Style.css 和 CSS 介绍

Style.css 和 CSS 介绍是从零开始创建 WordPress 主题系列教程的第九篇,学习 CSS 最好的方法就是去使用它,不像 XHTML 和 PHP 需要接触模板的核心文件,同样不要需要理解任何基本概念,只要去用它,通过试用和修正错误是可以让你快速学会。 我们现在已经在 style.css 文件有些内容,让我们先来看看这部分内容是干什么的? 第一行显而易见就是主题的名字。 第二行是这个主题的地址,如果你的主题只是私用的而不准备发布的话,那就不用管它了。 第三行是主题的描述。 第四行是版本号,这是非常重要的,特别是当你公开发布你主题新版本的时候。 第五和第六行分别是主题作者的名字和主页。 在主题信息两边的 /* 和 */ 符号是为了让主题的信息不影响该文件的其他内容,这是 CSS 的注释。当输入 CSS 代码去样式化你的网页的时候,你可能想在这里增加些注释使得能够在以后更清楚知道这部分是干什么的。显然我们并不想你的注释影响实际的代码,所以可以使用 /* 和 */ 这一对符号使得注释不被解释。 下面是处理后的主题信息 第1步:打开 style.css 文件 打开 Xampp,主题文件夹,FireFox,IE 浏览器和 style.css 文件。 在两个浏览器的地址栏都输入:http://localhost/wordpress 从这里开始,我们需要同时在 FireFox 和 IE 上测试主题,不同的浏览器对 CSS 的代码解释是不同的。如果能够在尽可能多的浏览器器上和尽可能多的操作系统上测试你的主题是最好的(Safari,Opera,Linux,Netscape 等等)。如果你和我一样懒,那就只在 FireFox 和 IE 上测试你的主题吧。 […]

WordPress Transients API 介绍

Transients 是瞬时的意思,WordPress 的 Transients API 就是 WordPress 用来存储一些缓存的数据到数据库中最简单也是最标准的方法,Transients API 给这些缓存的数据一个过期时间,并且时间已到就会自动删除,所以如果你在制作 WordPress 插件的时候,需要存储一些有生命周期的选项的时候,Transients API 就是最好的选择。 WordPress Transients API 函数 Transients API 是 WordPress 2.8 版本开始才有的,它和 WordPress 的 Option API (get_option, add_option, update_option, delete_option))基本一样,也是使用 WordPress wp_options 数据表来存储这些缓存数据,唯一区别就是 Transients API 有一个过期时间。 Transients API 以下三个函数:set_transient(), get_transient(), delete_transient()。 // 保存一个临时数据到数据库中 set_transient($transient, $value, $expiration);   // 从数据库中获取一个临时数据 get_transient($transient);   // 从数据库中删除一个临时数据 […]

单点登录介绍和在 WordPress 中的应用

单点登录(Single Sing On),简称 SSO,指的是用户通过一个账号(可以是邮箱,URL 或者账号)就能登陆所有支持单点登录的应用系统,其实简单的理解只要你某个的账号(如 OpenID,Gmail 邮箱账号,新浪微博账号,豆瓣账号)能够实现多个地方登陆,就可以把它理解为单点登录。 OpenID 说到单点登录,不得不提 OpenID,OpenID 是最早提出的单点登录的协议,OpenID 是一个以用户为中心的数字身份识别框架,通过 URL 来标识身份,就是你有了一个 OpenID,到所有支持 OpenID 的网站就不需要重复注册了,这样就避免老是注册的问题。 使用 OpenID,你需要你到 OpenID 提供商去注册一个 URL 来标识身份,虽然我们可以通过 OpenID 的委托机制来实现把自己的博客地址作为 OpenID,但是毕竟需要注册,而且很多人对 OpenID 的概念了解不够,使用 URL 作为身份标识相对于邮箱或者账号名来说也是不那么方便,所以 OpenID 这个概念虽然很好,但是实际用途却不广。 让 WordPress 实现 OpenID 支持可以通过一个名字也叫做 OpenID 的插件实现,OpenID 和其 WordPress 插件 这篇文章有对 OpenID 和其 WordPress 插件有详细的介绍。 但是随着很多大服务厂商对 OpenID 的支持,如 Google 账号支持 OpenID,并且 Yahoo,AOL,Facebook,微软 Live […]

单点登录介绍和在 WordPress 中的应用

单点登录(Single Sing On),简称 SSO,指的是用户通过一个账号(可以是邮箱,URL 或者账号)就能登陆所有支持单点登录的应用系统,其实简单的理解只要你某个的账号(如 OpenID,Gmail 邮箱账号,新浪微博账号,豆瓣账号)能够实现多个地方登陆,就可以把它理解为单点登录。 OpenID 说到单点登录,不得不提 OpenID,OpenID 是最早提出的单点登录的协议,OpenID 是一个以用户为中心的数字身份识别框架,通过 URL 来标识身份,就是你有了一个 OpenID,到所有支持 OpenID 的网站就不需要重复注册了,这样就避免老是注册的问题。 使用 OpenID,你需要你到 OpenID 提供商去注册一个 URL 来标识身份,虽然我们可以通过 OpenID 的委托机制来实现把自己的博客地址作为 OpenID,但是毕竟需要注册,而且很多人对 OpenID 的概念了解不够,使用 URL 作为身份标识相对于邮箱或者账号名来说也是不那么方便,所以 OpenID 这个概念虽然很好,但是实际用途却不广。 让 WordPress 实现 OpenID 支持可以通过一个名字也叫做 OpenID 的插件实现,OpenID 和其 WordPress 插件 这篇文章有对 OpenID 和其 WordPress 插件有详细的介绍。 但是随着很多大服务厂商对 OpenID 的支持,如 Google 账号支持 OpenID,并且 Yahoo,AOL,Facebook,微软 Live […]

WordPress 缓存插件介绍

大家可能都有这样的经验,使用 WordPress 一段时间,装了一些的插件之后,博客的速度会变慢,甚至很慢,如果服器不够强劲,比如你使用的是一些 Oversell 的主机,而非 MT 这样的 VPS,并且流量很大,那么你可能会噩梦相随,你会经常因为 CPU 超标,而被停掉服务。如果你的预算不够不能更换服务器,那你应该使用 WordPress 缓存插件来降低 WordPress 对服务器的资源占用。 WordPress 缓存插件有很多种,这里不能一一讲解,只能介绍我熟悉的几种给大家做个简单的介绍,你可以根据自己的服务器的特点给自己的 WordPress 博客选择相应的缓存插件: WordPress 对象缓存 WordPress Object Cache(WordPress 对象缓存)是 WordPress 的默认缓存机制,它的主要目的是把负责查询或者运算的结果存储到一个对象里面,下次进行同样操作的时候,可以让直接从这个对象中取出数据,不用重复到数据库中或者其他外部网站获取数据。 文件缓存 在 WordPress 2.5 版本之前 WordPress 可以使用文件缓存,需要在 wp-config.php 文件添加 define(‘ENABLE_CACHE’,’true’); 即可启用。2.5 版本之后,WordPress 取消了文件缓存和 ENABLE_CACHE 这个全局常量。 但是如果你还想继续使用文件缓存,可以安装这个插件:File-Based Extension to the WordPress Object Cache。把下载下来的文件上传到 wp-content 目录下,注意不是 plugins 目录下。 文件缓存其实把 WordPress 默认的对象缓存的对象存储为文件。这样就会有一个问题,就是每次访问页面的时候,要读取多个缓存的文件,如果你服务器的硬盘速度不是很快,这样就会造成你的服务器的 […]

WordPress 自定义菜单功能介绍和使用详解

一个常规的网站,一般都会有一个网站导航。这里的导航,通常包含网站的栏目、特殊的页面等等。对于一个博客来说,我们也需要一个这样的导航。如果仅仅是调用文章分类 或者页面链接作为导航的话,会比较难控制,无法自由的添加链接等。当然,成熟的 WordPress 系统已经为我们考虑到了这一点,添加了一个 “自定义菜单” 功能。使用这个功能,可以在 后台 > 外观 > 菜单 中编辑,当然最好前提是你使用的主题支持这一个功能。 在 WordPress 后台使用自定义菜单 当我们在后台打开 “菜单” 的时候,通常会看到类似这样的界面: 没有配置之前,是无法使用的。我们需要先输入一个菜单名称才能继续使用。这里的菜单名称,仅仅作为一个关联数据用的标记,所以可以随便起名。完成之后,左边的区域就可以配置使用了。 如果你的主题不支持自定义菜单功能,那么左边的 主题位置 面板会提示你,这个自定义菜单的选项将会在侧边栏显示。如果主题支持自定义菜单功能,那么这个面板则会提示有支持几个自定义菜单、自定义菜单的名称(需要定义)是什么。 上面提示,有一个自定义菜单,并且名称为 topnav 。现在,我要制作这个自定义菜单的内容。在左边有三个面板:分类目录、自定义链接、页面。里面包含着你当前博客里面的相关数据。 我们只需要勾选相应的内容或者直接拖动到右边的刚刚设置的菜单面板中即可。 注意的是,可以通过拖动改变显示顺序,而且还可以修改显示的名称。所以说,这个功能非常的强大而且灵活。这样,一个导航链接就做好了。 让 WordPress 主题支持自定义菜单功能 下面来详细讲解如何在主题中,添加这个功能。也很简单,只需要在两个地方,添加两小段代码即可! register_nav_menus 首先,需要在主题的 functions.php 文件中,声明一下存在这个功能。只需要添加下面一段代码即可: if(function_exists(‘register_nav_menus’)){ register_nav_menus( array( ‘header-menu’ => __( ‘topnav’ ) ) ); } 这段代码首先判断当前主题是否支持这个功能,然后注册一个名称为 topnav 的自定义菜单。也就是上面在 主题位置 面板中看到的自定义菜单名称。 实现 WordPress 自定义菜单功能这个功能有两个函数 register_nav_menu […]

android.hardware.USB类介绍 Android开发技术

  在最新的Android版本中,android.hardware.USB是一个新增类,提供了USB相关事件的插拔,以及状态模式的广播。这里,可以看到USB连接、断开、是否为U盘、ADB模式等等。定义如下 public class Usb {    public static final String ACTION_USB_CONNECTED =            "android.hardware.action.USB_CONNECTED";      public static final String ACTION_USB_DISCONNECTED =            "android.hardware.action.USB_DISCONNECTED";     public static final String ACTION_USB_STATE =            "android.hardware.action.USB_STATE";     public static final String USB_CONNECTED = "connected";     public static final String USB_FUNCTION_MASS_STORAGE = "mass_storage";     public static final String USB_FUNCTION_ADB = "adb";     public […]

WebView使用技巧和介绍 Android开发技术

  在Android的所有控件中,WebView的功能是最强大的作为直接从android.webkit.Webview实现的类可以拥有浏览器所有的功能,Webview可以让开发人员从Java转向html+js这样的方式,如果你掌握ajax可以方便通过这种方式配合远端server来实现一些内容。   Webview中设置字体,可以使用 WebView.getSettings().setDefaultFontSize() 方法,设置屏幕的缩放级别可以使用 WebView.getSettings().setDefaultZoom() 来实现。   目前在Android 2.2中已经加入了Adobe Flash Player功能,我们可以WebView.getSettings().setPluginsEnabled(true); 设置允许Gears插件来实现网页中的Flash动画显示。   Webview可以帮助我们设计内嵌专业的浏览器,相对于部分以省流量需要服务器中转的那种 html解析器来说有本质的区别,因为它们没有JavaScript脚本解析器,Android123认为未来这种方式不会有什么发展空间,代表软件Opera Mini以及国内的一些名为“XX浏览器”。   在WebView中显示AlertDialog窗口提示,这里我们通过JavaScript脚本直接互通,在一个WebView中直接显示js的alert可以重写onJsAlert方法即可。   public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result)       {           new AlertDialog.Builder(myApp)               .setTitle("Android开发网")               .setMessage(message)    //从形参中传递的,同时还有String url等等            .setPositiveButton(android.R.string.ok,                       new AlertDialog.OnClickListener()                       {                           public void onClick(DialogInterface dialog, int […]

Odex文件的作用以及介绍 Android开发技术

  细心的网友可能发现Android的ROM中有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中可以让一般用户无法正常导出使用。   很多网友可能想到的是合并odex和apk变成apk中包含dex文件的,这样合并后最终apk文件安装在/data/中,而rom存放时在/system/bin中,所以最终导致了用户可装在Android手机中的软件会变少,占用系统空间。   一、APK生成odex文件方法:   编译开源GIT上的build/tools/dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤   将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录,   cd /data/local   ./dexopt-wrapper android123.apk android123.odex  二、合并odex和 少dex的apk 为完整的apk文件    1. 下载 http://smali.googlecode.com/files/smali-1.2.2.jar 和 http://smali.googlecode.com/files/baksmali-1.2.2.jar,既然是需要盗版,还需要odex所在rom中的一些引用类,一般在 /system/framework 目录中    2 .  通过odex生成class文件           java -jar baksmali-1.2.2.jar -x android123.odex          执行完上面这行命令后,会生成一个out 文件夹里面是android123.odex的class文件。出现问题,根据提示可以从rom的 /system/framework 中的xxx.jar放到pc上的java环境变量中一起生成。   3. 通过class生成classes.dex 文件。         java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex   4. 将classes.dex放到apk文件         […]

Android ANR介绍与避免 Android开发技术

  很多初入Android开发的网友可能发现ANR的字样,到底Android ANR是什么呢? 其实ANR就是Application Not Responding的全称,当某个应用处于长期假死状态时Android系统会弹出一个窗口上面写道,XXX is not responding给出两个按钮一个为force close一个为wait。    可能触发ANR的情况   1. 长时间的I/O处理,比如读写大文件,网络访问时造成的阻塞。   2. 执行耗时的运算,Android默认为超过5000ms即5秒开始弹出ANR窗口,某些应用可能首次执行时没有缓存十分耗时,可以通过Splash播放闪屏Logo等方式来延缓加载   3. Service和appWidget中也要注意多线程的使用,除非它和Activity工作在不同的进程。   避免ANR的方法  1. 单独开工作者线程,通过独立的Thread或使用类似AsyncTask的方式来处理耗时的内容。  2. 耗时的操作尽量分段处理,使用类似状态机的方法,类似Symbian的活动对象将一个复杂的事情,分段执行。  3. UI线程中不要处理过多的内容,比如将一个5MB的文本,让TextView去setText,要知道这种UI操作,没有什么好方法去解决的,所以Android123提示,遇到UI中需要执行复杂的操作,可以参考上面2提到的分段处理方式。

Android上鲜为人知的UI控件介绍和使用 Android开发技术

  很多Android应用开发者可能习惯了常见的ListView和GirdView其实,Google还提供了一些不错的UI控件,丰富了Android应用的UI显示,只要了解View和Adapter之间的关系,相信你可以很方便的了解每个种控件的使用和扩展,今天Android123一起来谈下,鲜为人知的Android UI控件。   1. SlidingDrawer 抽屉式滑动控件   在Android 1.x时代,功能表是通过Home Screen底部的一个按钮,可以拖拉出来一个View,这种控件其实Android上从1.5开始加入,使用时直接在layout中定义即可,xml布局代码如下: 当然了下面的match_parent就是fill_parent在2.2中被重命名了   <SlidingDrawer     android:id="@+id/drawer"     android:layout_width="match_parent"     android:layout_height="match_parent"      android:handle="@+id/handle"     android:content="@+id/content">      <ImageView         android:id="@id/handle"         android:layout_width="88dip"         android:layout_height="44dip" />      <GridView         android:id="@id/content"         android:layout_width="match_parent"         android:layout_height="match_parent" />  </SlidingDrawer>   有关控制,大家可以看下Android 1.5或1.6的Launcher源码,这里SlidingDrawer主要实现了void  setOnDrawerCloseListener(SlidingDrawer.OnDrawerCloseListener onDrawerCloseListener) 和 void  setOnDrawerOpenListener(SlidingDrawer.OnDrawerOpenListener onDrawerOpenListener) 以及 void  setOnDrawerScrollListener(SlidingDrawer.OnDrawerScrollListener onDrawerScrollListener) 这三个接口,可以获取抽屉控件的打开,关闭和拉动,同时本类提供了很多方法,详细的大家可以在Android SDK中的android.widget.SlidingDrawer分支查看   2. PopupWindow 气球提示控件   有关PopupWindow可以让我们想起Android刚刚开始有输入法框架的时候,当用户按下屏幕软键盘时,弹出的气球提示,这个View可以用PopupWindow来实现,PopupWindow比较方便的就是可以浮动在一个Activity中,设置成为透明或什么可以当做工具栏来使用。具体的大家可以翻看GIT代码中有关Android输入法的代码了解。   3. […]

100% Secure Checkout

PayPal / MasterCard / Visa