我有'顏色'&'strength'屬性的產品。我試圖讓這些選項列在這些屬性下作爲視圖的字段,以便我可以將它們用作過濾器。所以例如按顏色&強度排序。Drupal 7 - Ubercart - 屬性在視圖字段
我在谷歌上搜索了所有的東西,只能找到Drupal 6的模塊。任何人都知道7的東西?
我有'顏色'&'strength'屬性的產品。我試圖讓這些選項列在這些屬性下作爲視圖的字段,以便我可以將它們用作過濾器。所以例如按顏色&強度排序。Drupal 7 - Ubercart - 屬性在視圖字段
我在谷歌上搜索了所有的東西,只能找到Drupal 6的模塊。任何人都知道7的東西?
你可以看看這些沙箱項目:UC Views Attributes Work和UC attribute views。
我正在尋找一個類似的功能,因爲它似乎無法將UC屬性放入視圖中。我現在無法測試自己,因爲本週末我有一個項目最後期限,但我很樂意收到您的反饋。
就像上一篇文章中說的那樣,我有兩個屬性'顏色'&'strength',我需要匹配確切的產品匹配,但ubercart沒有這方面的任何內容,所以我將它們寫入URL以獲取語句變量1 & 2,因此,例如其中有選擇看起來既像屬性的URL:
www.website.com/node/68?1=96&2=7
有時候一個變量設置而不是其他,所以我必須彌補這也可以通過使用一個%通配符。下面是這部分
// Since PHP's serialize function sometimes serializes in the incorrect order,
// here we manually build the comparison key
// Additionally append the image links urls with provided strength/color data
if(isset($_REQUEST['1'])) {
$_1 = $_REQUEST['1'];
if($_1 !== '%') $url[] = "1=$_1";
} else $_1 = '%';
if(isset($_REQUEST['2'])) {
$_2 = $_REQUEST['2'];
if($_2 !== '%') $url[] = "2=$_2";
} else $_2 = '%';
$combination = "a:2:{i:1;s:";
$combination .= $_1 == '%' ? '%:"%";' : strlen($_1) . ':"' . $_1 . '";';
$combination .= "i:2;s:";
$combination .= $_2 == '%' ? '%:"%";' : strlen($_2) . ':"' . $_2 . '";';
$combination .= '}';
// if some products don't have a second attribute at all
$combination2 = "a:1:{i:1;s:";
$combination2 .= $_1 == '%' ? '%:"%"' : strlen($_1) . ':"' . $_1 . '";';
$combination2 .= ';}';
底下,我不得不做一些額外的查詢,如如果一個分類設置並檢查是否存在動力學特性設置,這就是爲什麼WHERE
存儲在一個變量的代碼。坦率地說,他們會混淆任何人,所以我把他們排除在外。但爲了你的緣故,下一部分你只需要查詢它。
$where = "WHERE (pa.combination LIKE :pattern1 OR pa.combination LIKE :pattern2) AND s.stock IS NOT NULL";
$comparison = array(':pattern1' => $combination,
':pattern2' => $combination2);
$filtered = db_query(
"
SELECT pa.nid, pa.model, pa.combination, n.title, p.sell_price, f.uri
FROM {uc_product_adjustments} pa
LEFT JOIN {node} n ON pa.nid = n.nid
LEFT JOIN {uc_products} p ON pa.nid = p.nid
LEFT JOIN {field_data_uc_product_image} i ON i.entity_type = 'node' AND i.entity_id = n.nid
LEFT JOIN {file_managed} f ON f.fid = i.uc_product_image_fid
LEFT JOIN {uc_product_stock} s ON pa.model = s.sku AND s.stock <> '0'
$where
",
$comparison
);
對結果最後環並將其存儲在一個正常的陣列
foreach($filtered as $i => $record) {
if(is_int(array_search($record->nid, $nids))) continue;
else {
$nids[] = $record->nid;
$result[] = $record;
}
}
此代碼檢查匹配任何當前在庫存
我最終的屬性值的任何產品自己寫SQL查詢。如果你想看看它的代碼,請致電。 –
是的,我想看看代碼! Holling! :) – Kojo
我也很抱歉! – Matt