主題: 大大门,求救啊~~~~ 作者: netflu 於 七月 24, 2006, 04:40:51 下午 我使用的是LifeType1.0.5,现需要实现一个功能,就是在回复栏里面,当用户是已登陆状态时,读取此用户的用户名并在"用户名输入框"中显示出来。
程序取得用户名并显示这些都没问题,问题是:好像是因为Samrt模板缓存了页面的原因,数据只会取一次,那么用户换了其它帐号登陆后,页面上显示的还是之前的用户名,不知道有没什么解决方法? 以下是我修改的代码,方便大家测试: /* 修改 class/view/blogview.class.php 类的 */ 首先在头部加上: include_once( PLOG_CLASS_PATH."class/net/http/session/sessionmanager.class.php" ); 然后修改render()方法,红色部分为新加代码: function render() { if( !$this->isCached()) { // and then add our stuff to the view... $this->setValue( 'archives', $this->_getArchives()); $this->setValue( 'recentposts', $this->_getRecentPosts()); $this->setValue( 'mylinkscategories', $this->_getLinkCategories()); $this->setValue( 'monthposts', $this->_getMonthPosts()); $this->setValue( 'articlecategories', $this->_getArticleCategories()); $this->generateCalendar( $this->getValue( 'Year' ), $this->getValue( 'Month' )); // also, let's not forget about the plugins... // put the plugins in the context $plugins = $this->_pm->getPlugins(); foreach( $plugins as $name => $plugin ) { $this->setValue( $name, $plugin ); } } // // these things can go in since they do not mean much overhead when generating the view... // $this->setValue( 'locale', $this->_blogInfo->getLocale()); $this->setValue( 'version', Version::getVersion()); $this->setValue( 'now', new Timestamp()); $this->setValue( 'blog', $this->_blogInfo ); $this->setValue( 'url', $this->_blogInfo->getBlogRequestGenerator()); $this->setValue( 'utils', $this->_blogInfo->getBlogRequestGenerator()); $this->setValue( 'blogsettings', $this->_blogInfo->getSettings()); $this->setValue( 'rss', new RssParser()); $session = HttpVars::getSession(); $sessionInfo = $session["SessionInfo"]; $userInfo = $sessionInfo->getValue( "userInfo" ); if ( $userInfo == "" ) { $this->setValue( 'myname', "anonymous"); } else { $this->setValue( 'myname', $userInfo->getUsername()); } // ask the parent to do something, if needed parent::render(); } /* 修改任何模板的 commentform.template */ 改 <input type="text" name="commentTopic" value=""/> 为 <input type="text" name="commentTopic" value="{$myname}"/> 大家帮忙看看有没什么解决方法,thanks~~ 主題: Re: 大大门,求救啊~~~~ 作者: james 於 七月 24, 2006, 04:47:22 下午 將快取關閉. :-)
James. 主題: Re: 大大门,求救啊~~~~ 作者: netflu 於 七月 24, 2006, 04:49:16 下午 主題: Re: 大大门,求救啊~~~~ 作者: james 於 七月 24, 2006, 04:55:18 下午 我說的是把LT中的系統快取關閉:)
請到後台的全部站台管控中的模版設定 將template_cache_enabled 設為否 template_http_cache_enabled 一樣設為否. 看看會不會有效果囉^_^ James. 主題: Re: 大大门,求救啊~~~~ 作者: netflu 於 七月 24, 2006, 05:09:44 下午 我說的是把LT中的系統快取關閉:) 請到後台的全部站台管控中的模版設定 將template_cache_enabled 設為否 template_http_cache_enabled 一樣設為否. 看看會不會有效果囉^_^ James. OK, 搞定了,呵呵,冰天雪地跪谢:) 主題: Re: 大大门,求救啊~~~~ 作者: james 於 七月 24, 2006, 06:51:02 下午 主題: Re: 大大门,求救啊~~~~ 作者: markwu 於 七月 25, 2006, 03:09:30 上午 你要作什麼用呢?如果是要給多人使用,你關掉 cache 後付出的代價更大。
把 session 轉成 cookie, 然後用 javascript 讀取 cookie 內的值,再用 docuement.write 寫到 html 中才是比較好的方式。 Mark |