标签归档:pligg

pligg beta 9.8 (中文支持)中文乱码解决

1,升级办法我就不说啦在readme文件中说的很详细啦
2,升级前基本的注意事项(readme文档中提到的)我就不说啦
2,升级前推荐修改/libs/db.php
这个可以参考9.7中修改办法:http://blog.csdn.net/clin003/archive/2007/08/16/1745853.aspx
大致在:202行回车添加代码

                $dbcharset='utf8';
                
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary"); 

这部分添加后的样子是这样的:

            if ( ! isset($this->dbh) || ! $this->dbh )
            {
                
$this->connect($this->dbuser, $this->dbpassword, $this->dbhost);
                
$dbcharset='utf8';
                
mysql_query("SET character_set_connection=$dbcharset, character_set_results=$dbcharset, character_set_client=binary"); 
                
$this->select($this->dbname);
            }

这是解决中文文章乱码问题。

—————————-
另外一个问题是:9.8升级后查看文章内容后,在Pligg beta 9 Home » About i0Day »后便显示的文章标题会变成乱码的

这个解决办法目前我就知道一个:
这个问题的解决办法参考自:http://forums.pligg.com/bug-report/8793-chinese-characters-bug.html

打开/libs/html1.php在大致124行找到函数function do_sidebar($var_smarty)使用9.7中的相应函数替换即可。
替换前的9.8的样子是这样的:

function do_sidebar($var_smarty) {
    
// show the categories in the sidebar
    global $db, $dblang, $globals, $the_cats, $navwhere;
    
    
// fix for 'undefined index' errors
        if(!isset($navwhere['text4'])){$navwhere['text4'= '';}else{$navwhere['text4'= htmlentities($navwhere['text4']);}
        
if(!isset($navwhere['text3'])){$navwhere['text3'= '';}else{$navwhere['text3'= htmlentities($navwhere['text3']);}
        
if(!isset($navwhere['text2'])){$navwhere['text2'= '';}else{$navwhere['text2'= htmlentities($navwhere['text2']);}
        
if(!isset($navwhere['text1'])){$navwhere['text1'= '';}else{$navwhere['text1'= htmlentities($navwhere['text1']);}
        
if(!isset($navwhere['link4'])){$navwhere['link4'= '';}
        
if(!isset($navwhere['link3'])){$navwhere['link3'= '';}
        
if(!isset($navwhere['link2'])){$navwhere['link2'= '';}
        
if(!isset($navwhere['link1'])){$navwhere['link1'= '';}
        
$var_smarty->assign('navbar_where', $navwhere);
    
        
$var_smarty->assign('body_args', '');    
    
// fix for 'undefined index' errors

    
$_caching = $var_smarty->cache;     // get the current cache settings
    $var_smarty->cache = true;             // cache has to be on otherwise is_cached will always be false
    $var_smarty->cache_lifetime = 1;   // lifetime has to be set to something otherwise is_cached will always be false
    $thetpl = $var_smarty->get_template_vars('the_template_sidebar_modules'. '/categories.tpl';

    
// check to see if the category sidebar module is already cached
    // if it is, use it


    
if(isset($_REQUEST['category'])){
        
$thecat = sanitize($_REQUEST['category'], 3);
    }
else{
        
$thecat = '';
    }
    
if ($var_smarty->is_cached($thetpl, 'sidebar|category|'.$thecat)) {
        
$var_smarty->assign('cat_array', 'x'); // this is needed. sidebar.tpl won't include the category module if cat_array doesnt have some data
    }else{
        
if(isset($_REQUEST['category'])){$thecat = $db->get_var("SELECT category_name FROM " . table_categories . " WHERE `category_safe_name` = '".urlencode(sanitize($_REQUEST['category'], 1))."';");}
    
        
if(!empty($_REQUEST['id'])) {
            
$doing_story=true;
        } 
else {
            
$doing_story=false;
        }
    
        
$var_smarty->assign('UrlMethod', urlmethod);

        
foreach($the_cats as $cat){
            
if($cat->category_id == $thecat && $cat->category_lang == $dblang && $cat->category_parent == 0)
            { 
                
$globals['category_id'= $cat->category_id;
                
$globals['category_name'= $cat->category_name;
            }
        }
    
        
$pos = strrpos($_SERVER["SCRIPT_NAME"], "/");
        
$script_name = substr($_SERVER["SCRIPT_NAME"], $pos + 1, 100);
        
$script_name = str_replace(".php", "", $script_name);
    
        
include_once('dbtree.php');
        
$array = tree_to_array(0, table_categories);
        
$var_smarty->assign('lastspacer', 0);
        
$var_smarty->assign('cat_array', $array);        
    
        
// use the 'totals' table now 
        $published_count = get_story_count('published');
        
        
$var_smarty->assign('published_count', $published_count);
        
$categories = mysql_query("select *,  count(*) as count from " . table_links . "" . table_categories . " where category_lang='$dblang' and category_id=link_category group by link_category ORDER BY category_name ASC");
    
        
$categorylist = array();
        
while ($rows = mysql_fetch_array ($categories, MYSQL_ASSOC))&
nbsp;
array_push ($categorylist, $rows);
        
$var_smarty->assign('categorylist', $categorylist);
        
$var_smarty->assign('category_url', getmyurl('maincategory'));

    }

    
$var_smarty->cache = $_caching// set cache back to original value

    check_actions(
'do_sidebar');

    
return $var_smarty;
}

替换后的为9.7中的对应函数样子是这样的:

function do_sidebar($var_smarty) {
    
// show the categories in the sidebar
    global $db, $dblang, $globals, $the_cats;

    
$_caching = $var_smarty->cache;     // get the current cache settings
    $var_smarty->cache = true;             // cache has to be on otherwise is_cached will always be false
    $var_smarty->cache_lifetime = 1;   // lifetime has to be set to something otherwise is_cached will always be false
    $thetpl = $var_smarty->get_template_vars('the_template_sidebar_modules'. '/categories.tpl';

    
// check to see if the category sidebar module is already cached
    // if it is, use it


    
if(isset($_REQUEST['category'])){
        
$thecat = sanitize($_REQUEST['category'], 3);
    }
else{
        
$thecat = '';
    }
    
if ($var_smarty->is_cached($thetpl, 'sidebar|category|'.$thecat)) {
        
$var_smarty->assign('cat_array', 'x'); // this is needed. sidebar.tpl won't include the category module if cat_array doesnt have some data
    }else{
        
if(isset($_REQUEST['category'])){$thecat = $db->get_var("SELECT category_name FROM " . table_categories . " WHERE `category_safe_name` = '".urlencode(sanitize($_REQUEST['category'], 1))."';");}
    
        
if(!empty($_REQUEST['id'])) {
            
$doing_story=true;
        } 
else {
            
$doing_story=false;
        }
    
        
$var_smarty->assign('UrlMethod', urlmethod);

        
foreach($the_cats as $cat){
            
if($cat->category_id == $thecat && $cat->category_lang == $dblang && $cat->category_parent == 0)
            { 
                
$globals['category_id'= $cat->category_id;
                
$globals['category_name'= $cat->category_name;
            }
        }
    
        
$pos = strrpos($_SERVER["SCRIPT_NAME"], "/");
        
$script_name = substr($_SERVER["SCRIPT_NAME"], $pos +&nb
sp;
1, 100);
        
$script_name = str_replace(".php", "", $script_name);
    
        
include_once('dbtree.php');
        
$array = tree_to_array(0, table_categories);
        
$var_smarty->assign('lastspacer', 0);
        
$var_smarty->assign('cat_array', $array);        
    
        
// use the 'totals' table now 
        $published_count = get_story_count('published');
        
        
$var_smarty->assign('published_count', $published_count);
        
$categories = mysql_query("select *,  count(*) as count from " . table_links . "" . table_categories . " where category_lang='$dblang' and category_id=link_category group by link_category ORDER BY category_name ASC");
    
        
$categorylist = array();
        
while ($rows = mysql_fetch_array ($categories, MYSQL_ASSOC)) array_push ($categorylist, $rows);
        
$var_smarty->assign('categorylist', $categorylist);
        
$var_smarty->assign('category_url', getmyurl('maincategory'));

    }

    
$var_smarty->cache = $_caching// set cache back to original value

    check_actions(
'do_sidebar');

    
return $var_smarty;
}

Pligg 中文乱码和对中文用户名的支持

       昨天搞了一个下午的 PLIGG,如果用来建英文站的话 是一个不错的程序,但是用来建中文站,确实有很大的麻烦,首先他不支持中文用户名的注册,还有他对中文文章的乱码问题等等,对与文章的乱码问题好像不用理会,我试了9.8的安装,发布中文文章没有发现有乱码问题,但是中文用户名支持真是一个头痛的问题。昨天自己瞎忙乎着虽然可以中文用户名注册发帖等,就解决了。但是还有一个严重的问题就是 中文用户名的用户的个人资料管理里面,查询不到自己发布的文章,估计这个很编码问题有关,因为我看数据库了,用UTF-8连接前台是可以显示正常,但是数据库里面还是乱码的。。所以可能用中文用户名他查询搜索的时候就查找不到文章了,心理有点喜欢这个程序,但是这个东西不知道怎么解决了,看了如果不行的话也就只能放弃了

UTF-8编码 BOM的一些资料

UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。我在研究Firefox的时候就知道,在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。由于必须在<?或者<?php后面的代码才会作为PHP代码执行,所以这三个字符将会直接输出。如果插件的文件有这个问题,将会导致在后台页面里激活或者不激活插件后显示白屏,如果是模版文件有这个问题,将会导致这三个字符直接输出,造成页面上方有一个小空行。国外的英文插件和模版一般都是用的ASCII码的编码方式,不会有BOM,只有国内的插件和模版会由于作者的不知情造成问题。还有,大家修改模版的时候,由于输出页面使用UTF-8编码,那么修改模版的时候如果有加入中文字符的话,必须把文件转成UTF-8编码才能正常显示,这个时候如果所使用的编辑器自动加上了BOM的话,将会造成在页面上输出这三个字符,显示效果就要看浏览器了,一般是一个空行或是一个乱码。

PLIGG 中文语言文件下载

   昨天弄了个PLIGG程序玩玩,用来建英文站可以说是不错的,但是用来建中文站好像有点问题了,主要是编码问题。下次好好解决下、

这个中文包,在 pligg 9.8 下使用,应该最新版下也支持。

765

pligg SEO 关键词设定 URL优化

pligg版本:Pligg_Beta_9.8.2

1、meta keywords和descriptions的配置

Pligg缺省情况下以提交digg内容时候定义的keywords和summary作为页面的keywords和description内容。对于一些站点缺省的keyword或description的维护,可以直接修改tempaltes/meta.tpl,但这样很麻烦,可以通过“后台管理”提供的对lang.conf维护工具来实现keyworkds和descriptions缺省值进行动态维护和修改。

方法如下:

  • 在libs/lang.conf中增加如下内容:

//<SECTION>MISC</SECTION><ADDED>0.5</ADDED>
PLIGG_Meta_Description = “ENTER YOUR DESCRIPTION HERE”
//<SECTION>MISC</SECTION><ADDED>0.5</ADDED>
PLIGG_Meta_Keywords = “ENTER YOUR KEYWORD HERE”

  • 在templates/meta.tpl增加PLIGG_Meta_Description和PLIGG_Meta_Keywords
{* define your meta data here *}  {if $meta_description neq ""}         <meta name=”description” content=”{$meta_description},{#PLIGG_Meta_Description#}” /> {else}         <meta name=”description” content=”Yeeach.com” /> {/if}  {if $meta_keywords neq “”}         <meta name=”keywords” content=”{$meta_keywords},{#PLIGG_Meta_Keywords#}” /> {else}         <meta name=”keywords” content=”Yeeach.com” /> {/if}         <meta name=”Language” content=”{#PLIGG_Visual_Meta_Language#}” />         <meta name=”Robots” content=”All” />  {* the extra tabs are to make it lineup when viewing the source *}
 
  • 从“后台管理”->“设定配置”->“Modify Language”修改keyworkds和descriptions

2、URL搜索引擎友好

  • 从“后台管理”->“设定配置”->“Outgoing”将Outgoing links的值设定为id
  • 从“后台管理”->“设定配置”->“UrlMethod”将URL method将值设定为2
  • 从“后台管理”->“设定配置”->“FriendlyURLs”将Friendly URL’s for stories和Friendly URL’s for categories的值设定为false
  • cp htaccess.default .htaccess
  • 登录“后台管理”->“类别管理”,得到最下方自动生成的RewriteRule,拷贝到.htaccess,替代如下内容后面的内容##### You can find the below lines pre-made for you in the category management section of the admin panel
  • 如果新增了类别,需要重新到“后台管理”->“类别管理”得到新的RewriteRule,然后拷贝到.htaccess中。
  • 之所以将Friendly URL’s for stories和Friendly URL’s for categories的值设定为false,就是为了采用id号方式,避免中文编码urlencode后,mod_rewrite处理的问题。

http://forums.pligg.com/wiki-articles/8594-url-method.html

原文

Dynamic vs Static urls

Dynamic urls contain variables and are typically seen on database driven sites like blogs and forums. A static url does not contain any variables and does not change. Static urls are easier for your users to read. They are also sometimes ranked higher by search engines.
Examples
Dynamic url: yoursite.com/pligg/story.php?title=storytitle
Static url: yoursite.com/pligg/news/yourstorytitle

Url Method options

There are three options on the Url Method page in the admin panel. Choose Url Method 2 to enable static urls.

  • Method 1 = dynamic urls (default)
  • Method 2 = static urls

.htaccess

If you enable Url Method 2 in the admin panel you should see static urls on your site but when you click on an internal link you’ll probably get a 404 this page can not be found error. In order to work properly Url Method 2 requires modifications to your .htaccess file so that so that the new friendly urls are properly mapped to the actual files they refer to.
There is a default .htaccess file included in your Pligg installation called htaccess.default that contains a long list of rewrite commands that are meant to get you started. But you will probably need to modify this file in order to get static urls working properly on your site.

Step by Step Instructions
  1. Check with your host to see if mod rewrite is allowed. If not buy a DreamHost package to help pligg dev.
  2. Check with your host that Apache is configured to use .htaccess files (AllowOverride All)
  3. Get the latest htaccess.default from the SVN on sourceforge.
  4. Go to your admin panel/category management. At the bottom there is a rewrite rule for the categories. Copy this whole line and in htaccess.default paste over You need to copy the line for this whole thing to work right. Paste over the line: RewriteRule ^(all|pligg|category1|category2)/([a-zA-Z0-9-]+)/?$ story.php?title=$2 [L]
  5. Upload htaccess.default to your webserver in the root directory of your install. Overwrite the existing one.
  6. Rename “htaccess.default” to “.htaccess” (no quotes). Note the period in front. That period denotes a hidden file, and may cause it to disappear from some FTP clients. (You might need to enable showing of hidden files or call it by name when downloading).
  7. Turn on URL Method 2 in the admin panel.
  8. Enjoy friendly URL’s

If your Pligg is installed in a subfolder

If Pligg is installed in a subfolder: (ie : yourdomain.com/pligg/) then you will need to modify the RewriteBase in .htaccess:
Change RewriteBase / to RewriteBase /pligg/

Rewrite rule for categories

Every time you add a new category to your site you need to update the mod rewrite rules for the category urls. Simply go back to the admin panel / category management page copy the new rewrite rule and paste it on top of the old one in your .htaccess file.

It’s not working. How do i go back?

If this doesn’t work, mod_rewrite probably isn’t enabled on your webserver. You can go back to the admin panel and set Url Method to 1 again. No harm was done to any files during the instructions above and your site should operate fine without friendly urls.