立即注册 登录
彼岸网 返回首页

天香公主的个人空间 http://www.bian-wang.com/discuz/?10005 [收藏] [复制] [分享] [RSS] txgz999@yahoo.com

评论

回复 天香公主 2018-6-23 07:04 AM 分离出Discuz模板机制的尝试   (天香公主)
carry0987: 我研究出一個結論了,如果要像我的留言板那樣支援多國語言,那麼lang這種函數是不可能的,因為如果把$lang陣列的內容寫入緩存,那麼一但有多個使用者選擇不同的 ...
不知你的留言板是如何决定使用哪种语言?
回复 天香公主 2018-6-18 11:32 PM 分离出Discuz模板机制的尝试   (天香公主)
carry0987: 天香,我這裡有個問題,
假如我令 $var = 'Success';
然後使用了
$lang = array('test' => 'Show {$var}');
作為language,
然後用
    public function language ...
我不知道理解得对不对,你有个下述内容的PHP文件
------------------------------------------------------------------
<?php
$var = 'Success';
$lang = array('test' => 'Show {$var}');

function languageVar($var)
{
    $var = preg_replace("/\{(\\\$[a-zA-Z0-9_\-\>\[\]\'\"\$\.\x7f-\xff]+)\}/s", "<?php echo \\1;?>", $var);
    return $var;
}
?>

<?php echo languageVar($lang['test']) ;?>
------------------------------------------------------------------
运行后显示的结果是
    Show
而你希望显示
    Show Success
对吗?可以将第二句改为
    $lang = array('test' => "Show {$var}");
回复 天香公主 2018-6-13 10:25 AM 分离出Discuz模板机制的尝试   (天香公主)
carry0987: 對了,html一旦改動,刷新一次就會更新,不過css與js的部分要刷新兩次,我估計是因為沒有即時讀取模板緩存中的hash,我試著改改 ...
>> 不過css與js的部分要刷新兩次

对,我文中的最后一段说的就是这事
回复 天香公主 2018-6-4 11:07 PM 分离出Discuz模板机制的尝试   (天香公主)
carry0987: 我做了2個修改 :
1. 基於 function template 在第一次使用時會因為尚未生成緩存文件而找不到,我加入 file_exists 用以判斷檔案是否存在
https://gist.github.c ...
关于1),你的意思是我的代码在第一次使用时会出现错误?我的测试结果是在第一次使用时会自动生成缓存文件,因为那时在函数 template($file, $gettplfile = 0) 里到达
    checktplrefresh($tplfile, $tplfile, @filemtime(DISCUZ_ROOT.$cachefile), $cachefile, $file);
时第三个变量的值是 false,所以条件
    if(empty($timecompare) || @filemtime(DISCUZ_ROOT.$depfile) > $timecompare)
必然满足,所以会生成缓存文件。

关于2),这句在我的文件demo.htm里吧,我查了产生的demo.tpl.php里对应的代码是
    <?php echo count($testArr) ; ?>  
这是预期的结果啊。

你测试的是我新贴的dztemplate.zip, 还是在改善原来的discuztemplate.zip?两者在结构上有些细微的差别。起初我是在Akon的代码产生的discuztemplate.zip,但后来觉得直接从Discuz3.4里分离代码更容易,dztemplate.zip是这样产生的。
回复 天香公主 2018-6-1 11:33 AM 关于数据库迁移问题   (牛肉炖土豆)
牛肉炖土豆: 大概在2月份,我买的同样规格的一模一样的,全新安装DZ,没有任何问题,我还进了那台数据库,看了下存储引擎,发现这个两个表的是MyISAM,其他的都是INNODB ...
那就对了,看来这是个innodb特有的要求
回复 天香公主 2018-6-1 11:18 AM 关于数据库迁移问题   (牛肉炖土豆)
牛肉炖土豆: -.-执行第一个,居然创建这个表了,InnoDB后面多了一个M?
嗯,笔误

有点怀疑你说的"全新安装是没问题的"
回复 天香公主 2018-6-1 11:01 AM 关于数据库迁移问题   (牛肉炖土豆)
牛肉炖土豆: 去掉最后的之后提示

执行失败,失败原因:Incorrect table definition; there can be only one auto column and it must be defined as a key ...
这应该就是这两个数表与众不同之处了:the auto column is not defined as a key

试试

CREATE TABLE pre_common_member_grouppm (
    uid mediumint(8) unsigned NOT NULL DEFAULT '0',  
    gpmid smallint(6) unsigned NOT NULL AUTO_INCREMENT,
    `status` tinyint(1) NOT NULL DEFAULT '0',  
    dateline int(10) unsigned NOT NULL DEFAULT '0',  
    PRIMARY KEY (uid,gpmid),
    KEY gpmid (gpmid)
) ENGINE=InnoDbM

或者

CREATE TABLE pre_common_member_grouppm (
    uid mediumint(8) unsigned NOT NULL DEFAULT '0',  
    gpmid smallint(6) unsigned NOT NULL AUTO_INCREMENT,
    `status` tinyint(1) NOT NULL DEFAULT '0',  
    dateline int(10) unsigned NOT NULL DEFAULT '0',  
    PRIMARY KEY (uid,gpmid),
    KEY gpmid (gpmid)
)
回复 天香公主 2018-6-1 10:46 AM 关于数据库迁移问题   (牛肉炖土豆)
牛肉炖土豆: 云数据库RDS确实有控制台,我打开SQL窗口,粘贴语句,执行后,变成上图所示的了,不知道这么执行对不对
把最后的 TYPE=MYISAM 去掉试试,还不行的话,改成 TYPE=innodb 试试
回复 天香公主 2018-6-1 08:24 AM 关于数据库迁移问题   (牛肉炖土豆)
没看出这两个数据表有何异常之处。如果阿里云提供了个管理云数据库RDS的工具的话,你也可以直接运行SQL语句来生成这两个数据表吧,语句在upload/install/data/install.sql里
回复 天香公主 2018-5-31 09:46 PM 分离出Discuz模板机制的尝试   (天香公主)
carry0987: 對了,天香,在 stripscriptamp 這個函式中的 type=\&quot;text/javascript\&quot; 建議去除,避免重複出現~
嗯,我把这段删掉了,另外加了一个名叫 js 的标签。
回复 天香公主 2018-5-31 07:07 AM 分离出Discuz模板机制的尝试   (天香公主)
carry0987: 研究完成啦! 有個問題想問一下,block究竟是?
一种在模板文件里给PHP变量赋值的语法,较适用于值是HTML内容的情形。比如

{block a}
<div>Test</div>
{/block}

等同于

$a="<div>Test</div>";
回复 天香公主 2018-5-26 10:37 AM 为什么发完点评后,只要一刷新其他楼层的点评会消失?   (牛肉炖土豆)
carry0987: 原來如此,這是為了使效能最大化的設置吧,同時也使主模板可以自動更新
我从DZ3.4的代码出发重写了一遍, 请赐教
http://www.bian-wang.com/discuz/data/userupload/10005/dztemplate.zip
回复 天香公主 2018-5-24 10:45 PM 为什么发完点评后,只要一刷新其他楼层的点评会消失?   (牛肉炖土豆)
carry0987: 我懂了,因為靠管理員的操作決定,因此沒有以上的問題...
我前面凭印象说了,又测试了下Discuz发现,在改动模板内容后,再在浏览器里获取该模板对应的网页时,内容自动就更新了,它是根据模板文件和缓存文件的修改时间来判断的。因为我的config_global.php里有一行tplrefresh设置成1。

但是如果改动的是一个子模板里的内容的话,那么要等第二次获取使用包含该子模板的模板对应的网页时,才能看到新内容。这是由Discuz在运行缓存文件中检查子模板是否改动的做法决定的,因为那时正在运行的缓存文件已经放在memory里不能改了,更新后的缓存文件要等下次才能用上了。
回复 天香公主 2018-5-23 09:05 PM 为什么发完点评后,只要一刷新其他楼层的点评会消失?   (牛肉炖土豆)
carry0987: 我懂了,因為靠管理員的操作決定,因此沒有以上的問題...
看了Discuz开发组里的人写的这篇不错
http://www.cnblogs.com/lengke/archive/2009/12/07/1618840.html

如你所知akon是通过检查模板文件的md5 hash来获知它是否有变动,看了这篇里说的比较下模板文件和缓存文件的最后修改时间不更简单么
回复 天香公主 2018-5-19 10:47 AM 为什么发完点评后,只要一刷新其他楼层的点评会消失?   (牛肉炖土豆)
carry0987: 天香,Dz之所以把模版的md5儲存在數據庫,是不是為了減少IO讀取?
没存吧?Discuz不检查模板改没改动。它让管理员来决定何时启用修改后的模板(通过点击更新缓存)
回复 天香公主 2018-5-14 11:18 PM 在触屏版上给网络图片添加看大图功能   (天香公主)
牛肉炖土豆: 了解了,我再研究研究,辛苦辛苦了,哈
我又查了下修改的代码,发现1c)和3c)都有问题,前者应该就是你没法点击那个图的原因。现在应该改正,你再试试看。

也许你会觉得你那张长图的预览图太小。我试了试Discuz原来的代码,效果相同,所以这不是我的改动带来的问题:在viewthread_album.htm里的javascript代码设置了预览图最大不超出屏幕的范围。
回复 天香公主 2018-5-14 04:24 PM 在触屏版上给网络图片添加看大图功能   (天香公主)
carry0987: 居然超過1萬px...厲害了
就是把多张图片串起来了,有时在微信里会看到这种长图片
回复 天香公主 2018-5-14 12:10 AM 在触屏版上给网络图片添加看大图功能   (天香公主)
牛肉炖土豆: 可以测试任意页面,除了私信里的基本都是网络图片,我在即时更新缓存
你的例子里的图片的尺寸出乎了Discuz的想象   Discuz里关于img的bbcode里假定图片长高都不超过4位数,而你的图片高达一万多px。我估计把我1b)里的正则表达式里的两个4改成5就解决了你遇到的问题。

我文中就不改了,因为这句正则表达式是从function_discuzcode.php 里抄来的,要改的话两句得一起改才配套。
回复 天香公主 2018-5-13 10:58 PM 在触屏版上给网络图片添加看大图功能   (天香公主)
牛肉炖土豆: 第3步,模版文件里有一处与默认的不同,
默认:<!--{loop $imglist[url] $key $imgurl}-->
您的下载文件:<!--{loop $imglist[aid] $key $aid}-->

全部覆盖,改 ...
对,我也刚发现文中少了这段,现在加在3b)里了。更新缓存试试,还不行的话,把有问题的那个网页告诉我
回复 天香公主 2018-5-13 10:34 PM 在触屏版上给网络图片添加看大图功能   (天香公主)
牛肉炖土豆: 我修改过了,这次又有了新问题,
1.网络图片独自存在时又点不开了
我这测试没发现有这问题,你给个网页我看看。

如果你是按我文中的代码改的,会不会是漏改了什么?能否先用下载文件覆盖你的网站文件试试?

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2018-6-25 03:44 PM , Processed in 0.051852 second(s), 5 queries. ,ApcOn

返回顶部