2014-02-14 27 views
0

我在Commerce模塊中使用Drupal 7,並使產品更多信息頁面包含指向產品類別中上一頁/下一頁產品和其他頁面的鏈接。如何在產品中進行分頁導航更多信息頁面

http://postimg.org/image/8rbcsyye3/

產品預覽/宣佈位於分類頁面。

作爲瀏覽頁面和每頁數量爲1的頁面很容易。但是,如何從產品預覽頁面跳轉到產品更多信息?在這種情況下,需要導航到尋呼機中的特定頁碼。怎麼可能?或者可能存在更合適的方式來解決它的任務。

在尋呼機API中,我發現唯一的功能pager_find_page它甚至不知道pager_set_page。也許是因爲它在某處以某種方式描述,但我無法找到它。

回答

0

回答自己的問題。 Solution for Drupal 5/6(不知道的版本)

其他一些有益的信息 https://drupal.stackexchange.com/questions/1561/is-it-possible-to-dynamically-set-views-pager-settings

https://drupal.stackexchange.com/questions/16046/alter-pagination-start-index

混合的信息後,我寫了簡單的解決方案爲Drupal 7

當用戶要從產品的節點,他可以跳轉到當前類別中的任何其他產品。 這就是爲什麼我通過啓用ajax和上下文過濾來創建視圖,該過濾器通過傳遞當前頁面節點ID來返回來自同一產品類別的所有節點的ID。

$n_id = intval(arg(1)); 
$nnm = db_query("select t.nid from {taxonomy_index} t left join {node} n on n.nid = t.nid where t.tid = (select t2.tid from {taxonomy_index} t2 where t2.nid = :vid) order by n.title", array(':vid' => $n_id)); 
$res= array(); 
if ($nnm->rowCount()) { 
foreach ($nnm as $row) $res[]= $row->nid; 
$handler->argument= implode('+', $res); 
return true; 
} else { 
return false; 
} 

在自定義模塊爲我的產品的詳細信息視圖我加hook_views_query_alter。 只有在query_alter鉤子$ view-> query->其中參數可用並且$ view-> query-pager尚未定義。這意味着無需重寫默認值pager-> current_page和產品類別的nid是可用的。

function [modulename]_views_query_alter(&$view) { 
//$_GET['wtf'] -- variable to check first view load 
    if ($view->name == "view_name" && $view->current_display == 'view_display' && !isset($_GET['wtf'])) { 
     //Search current node id ($view->args[0]) in all category's nodes 
     $res= array_search($view->args[0], $view->query->where[0]['conditions'][0]['value'][':node_nid']); 
     if ($res) { 
      //$view->set_current_page($res); 
      //Set page id for pager 
      $_GET['page']= $res; 
     } 
     $_GET['wtf']= 2; 
    } 
} 

奇怪的是,有這樣的方法沒有提及提供pager-> CURRENT_PAGE值。 不同於pager-> set_current_page方法,即使$ view-> pager未被初始化,它也可以在任何視圖掛鉤處設置頁面值。這聽起來很適合我。

謝謝你糾正我的錯誤,我很抱歉我的英語不好。

相關問題