关于WordPress中Yoast SEO的Titles & Metas所用变量的说明

Yoast SEO是WordPress中一款强大的用于SEO优化的插件,在它的Titles & Metas设置中我们可以使用许多预定义的变量(以前后两个%定义)来替换标题和元标签上的数据,以下列出相关变量的说明,以供参考:

%%date%%(文章/页面的日期)
%%title%%(文章/页面的标题)
%%parent_title%%(父页面的标题)
%%sitename%%(站点名称)
%%sitedesc%%(站点描述)
%%excerpt%%(文章/页面的摘要,不存在时使用自动生成的摘要)
%%excerpt_only%%(文章/页面的摘要,不包括自动生成的摘要)
%%tag%%(标签)
%%category%%(分类目录,多个之间采用逗号分隔)
%%category_description%%(分类目录描述)
%%tag_description%%(标签描述)
%%term_description%%(分类描述)
%%term_title%%(分类标题)
%%searchphrase%%(搜索短语)
%%sep%%(标题所用的分隔符)

%%pt_single%%(文章类型,单个)
%%pt_plural%%(文章类型,多个)
%%modified%%(文章/页面的修改时间)
%%id%%(文章/页面的ID)
%%name%%(文章/页面的作者昵称)
%%user_description%%(文章/页面的作者个人说明)
%%userid%%(文章/页面的作者ID)
%%currenttime%%(当前时间)
%%currentdate%%(当前日期)
%%currentday%%(当前日)
%%currentmonth%%(当前月)
%%currentyear%%(当前年)
%%page%%(分页信息,如page 2 of 4)
%%pagetotal%%(总页数)
%%pagenumber%%(当前页码)
%%caption%%(附件标题)
%%focuskw%%(文章焦点关键字)
%%term404%%(404描述)
%%cf_<custom-field-name>%%(文章自定义字段值)
%%ct_<custom-tax-name>%%(文章自定义分类,逗号分隔)
%%ct_desc_<custom-tax-name>%%(自定义分类描述)

关于WordPress中去除Jetpack的Open Graph元标签的说明

在WordPress中如果使用了Jetpack的Sharing或者Publicize功能的话,Jetpack会自动地在网站页面上添加Open Graph的元标签。这些标签的作用是让Facebook能够获取页面的信息从而进行分享。但是对于国内而言,由于无法访问Facebook,该功能就失去了作用,那如何才能去掉这些无用的Open Graph元标签呢?

如果有其他WordPress插件处理了Open Graph元标签,那么Jetpack将自动禁用掉自身的Open Graph元标签。

我们可以在所用主题的functions.php文件中或者在所用的其他WordPress插件中添加以下代码来去除Jetpack的Open Graph元标签:

add_filter ( 'jetpack_enable_open_graph', '__return_false' );

更多信息请参阅:Open Graph — Jetpack for WordPress

关于C#中创建自定义形状控件的说明

在C#应用程序编程中有许多界面控件供我们使用,这些控件的形状都是规则的矩形,但是为了美观友好的UI体验,有时我们需要创建一些不规则的自定义形状的控件。
同样在C#中,类型Region是描述控件显示区域的类,类型GraphicsPath则表示一系列相互连接的直线和曲线,通过构造出闭合的不规则的GraphicsPath曲线来创建对应形状区域的Region对象,并设置控件的显示区域为此Region对象,就可以使控件按照GraphicsPath对象描述的形状来显示。
下面示例创建一个中间镂空的圆环控件(当然我们也可以添加其他任何形状的边界到GraphicsPath对象中,从而创建形状更加复杂的自定义控件):

一、创建一个原始的空白窗体Form:
csharp-region-control-1

二、在窗体Form的构造函数中添加如下代码:

// 创建用户控件
UserControl userControl = new UserControl();
// 设置用户控件大小
userControl.Width = 200;
userControl.Height = 200;
// 设置用户控件在父控件中居中显示
userControl.Location = new Point((this.ClientSize.Width - userControl.Width) / 2, (this.ClientSize.Height - userControl.Height) / 2);
// 设置用户控件背景色为红色
userControl.BackColor = Color.Red;
// 创建GraphicsPath对象
GraphicsPath graphicsPath = new GraphicsPath();
// 定义外部圆形区域
Rectangle outBounds = new Rectangle(0, 0, 200, 200);
// 定义内部圆形区域
Rectangle inBounds = new Rectangle(50, 50, 100, 100);
// 添加内外圆形区域到GraphicsPath对象中
graphicsPath.AddEllipse(outBounds);
graphicsPath.AddEllipse(inBounds);
// 设置用户控件Region对象
userControl.Region = new Region(graphicsPath);
// 将用户控件添加到窗体中
this.Controls.Add(userControl);

三、运行窗体Form,其中红色的圆环控件就是我们创建的自定义形状的控件:
csharp-region-control-2

更多信息请参阅:GraphicsPath 类 (System.Drawing.Drawing2D)Region 类 (System.Drawing)

关于C#中获取屏幕图像的说明

获取显示器屏幕当前显示的画面在许多场景中都会用到,比例截图。在C#中我们可以通过Graphics对象获取屏幕图像:

// 获取主屏幕的显示范围
Rectangle bounds = Screen.PrimaryScreen.Bounds;
// 创建大小与主屏幕一直的空图像
Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
// 通过图像创建Graphics对象
Graphics graphics = Graphics.FromImage(bitmap);
// 将屏幕图片完整绘制到图像上
graphics.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
// 释放Graphics对象
graphics.Dispose();
// 返回屏幕图像
return bitmap;

获取到屏幕图像后,我们就可以根据需求对该图像进行后续处理了。

关于JavaScript中获取和设置Url参数的说明

在Web编程时,一般我们都只是在服务端获取请求的Url参数,但是在前端交互过程中我们也有可能希望通过JavaScript获取Url中的参数。
我们可以通过以下JavaScript方式获取和设置Url中的参数信息:

一、定义Url参数操作方法:

// 定义获取和设置Url参数的方法
(function (window, undefined) {
    // 定义获取Url参数方法
    if (typeof (window.getUrlParam) != "function") {
        /**
        * url:要获取参数的Url
        * key:要获取参数的键
        * return:返回获取到的参数值
        */
        window.getUrlParam = function (url, key) {
            // 定义默认值
            var value = "";
            // 定位到Url参数部分
            var index = url.indexOf("?");
            if (index >= 0) {
                // 获取Url中参数集合
                var params = url.substr(index + 1);
                params = params.split("&");
                // 遍历查询对应键值的参数
                for (var param in params) {
                    param = params[param];
                    index = param.indexOf("=");
                    // 获取对应键值的参数值
                    if (index >= 0 && key == param.substring(0, index)) {
                        value = param.substr(index + 1);
                    }
                }
            }
            // 返回获取到的参数值
            return value;
        };
    }
    // 定义设置Url参数方法
    if (typeof (window.setUrlParam) != "function") {
        /**
        * url:要设置参数的Url
        * key:要设置参数的键
        * value:要设置参数值
        * return:返回设置了参数的新Url
        */
        window.setUrlParam = function (url, key, value) {
            // 定位到Url参数部分
            var index = url.indexOf("?");
            if (index >= 0) {
                // 获取Url中参数集合
                var baseUrl = url.substring(0, index);
                var hasKey = false;
                var newParams = new Array();
                var oldParams = url.substr(index + 1);
                oldParams = oldParams.split("&");
                // 遍历Url中所有的参数
                for (var oldParam in oldParams) {
                    oldParam = oldParams[oldParam];
                    index = oldParam.indexOf("=");
                    if (index >= 0 && key == oldParam.substring(0, index)) {
                        // 将需要设置的参数重新赋值
                        newParams.push(key + "=" + value);
                        hasKey = true;
                    } else {
                        // 记录不需要设置的参数信息
                        newParams.push(oldParam);
                    }
                }
                // 没有找到参数的话添加新的参数
                if (!hasKey) {
                    newParams.push(key + "=" + value);
                }
                // 重构设置了参数的Url
                newParams = newParams.join("&");
                url = baseUrl + "?" + newParams;
            } else {
                // 重构设置了参数的Url
                url += "?" + key + "=" + value;
            }
            // 返回设置了参数的新Url
            return url;
        };
    }
})(window);

二、调用实例:

getUrlParam("index.php?a=1", "a"); // 结果:1
setUrlParam("index.php?a=1", "a", 2); // 结果:index.php?a=2