Index: branches/version-2_11-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php
===================================================================
--- branches/version-2_11-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php	(revision 21126)
+++ branches/version-2_11-dev/data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_News.php	(revision 21374)
@@ -95,5 +95,5 @@
             default:
                 $this->newsCount = $this->lfGetNewsCount();
-                $this->arrNews = $this->lfGetNews();
+                $this->arrNews = $this->lfGetNews(SC_Query_Ex::getSingletonInstance());
                 break;
         }
@@ -126,18 +126,20 @@
      * @return array $arrNewsList 新着情報の配列を返す
      */
-    function lfGetNews(){
-        $objQuery = SC_Query_Ex::getSingletonInstance();
-        $sql = '';
-        $sql .= " SELECT ";
-        $sql .= "   *, ";
-        $sql .= "   cast(news_date as date) as news_date_disp ";
-        $sql .= " FROM ";
-        $sql .= "   dtb_news ";
-        $sql .= " WHERE ";
-        $sql .= "   del_flg = '0' ";
-        $sql .= " ORDER BY ";
-        $sql .= "   rank DESC ";
-
-        $arrNewsList = $objQuery->getAll($sql);
+    function lfGetNews(&$objQuery) {
+        $objQuery->setOrder("rank DESC ");
+        $arrNewsList = $objQuery->select('* , cast(news_date as date) as news_date_disp', 'dtb_news' ,'del_flg = 0');
+
+        // モバイルサイトのセッション保持 (#797)
+        if (SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE) {
+            foreach (array_keys($arrNewsList) as $key) {
+                $arrRow =& $arrNewsList[$key];
+                if (SC_Utils_Ex::isAppInnerUrl($arrRow['news_url'])) {
+                    $netUrl = new Net_URL($arrRow['news_url']);
+                    $netUrl->addQueryString(session_name(), session_id());
+                    $arrRow['news_url'] = $netUrl->getURL();
+                }
+            }
+        }
+
         return $arrNewsList;
     }
@@ -152,7 +154,7 @@
     function lfGetNewsForJson(&$objFormParam){
 
-        $objQuery = SC_Query_Ex::getSingletonInstance();
+        $objQuery =& SC_Query_Ex::getSingletonInstance();
         $arrData = $objFormParam->getHashArray();
-		
+
         $dispNumber = $arrData['disp_number'];
         $pageNo = $arrData['pageno'];
@@ -161,6 +163,5 @@
         }
 
-        $objQuery->setOrder("rank DESC ");
-        $arrNewsList = $objQuery->select(" * , cast(news_date as date) as news_date_disp "," dtb_news "," del_flg = '0' ");
+        $arrNewsList = $this->lfGetNews($objQuery);
 
         //新着情報の最大ページ数をセット
Index: branches/version-2_11-dev/data/class/util/SC_Utils.php
===================================================================
--- branches/version-2_11-dev/data/class/util/SC_Utils.php	(revision 21242)
+++ branches/version-2_11-dev/data/class/util/SC_Utils.php	(revision 21374)
@@ -2163,4 +2163,9 @@
         return is_dir($pathname) || @mkdir($pathname, $mode);
     }
+
+    function isAppInnerUrl($url) {
+        $pattern = '/^(' . preg_quote(HTTP_URL, '/') . '|' . preg_quote(HTTPS_URL, '/') . ')/';
+        return preg_match($pattern, $url) >= 1;
+    }
 }
 ?>
