LifeType 中文開發論壇

開發 => 外掛程式 => 主題作者是: netflu 於 七月 24, 2006, 04:40:51 下午



主題: 大大门,求救啊~~~~
作者: 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 下午
將快取關閉. :-)

James.


有点望说了,偶不懂 Smart,所以怎么关快取,麻烦详细说说, :-P


主題: 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 下午
OK, 搞定了,呵呵,冰天雪地跪谢:)
不客氣囉^_^
James.


主題: Re: 大大门,求救啊~~~~
作者: markwu七月 25, 2006, 03:09:30 上午
你要作什麼用呢?如果是要給多人使用,你關掉 cache 後付出的代價更大。

把 session 轉成 cookie, 然後用 javascript 讀取 cookie 內的值,再用 docuement.write  寫到 html 中才是比較好的方式。

Mark