2011-02-06 95 views

回答

0

這可能不是這樣做的-right-方式,但我創建了一個水龍頭到nodeapi插入操作一個小模塊:

<?php 

function photo_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'photo_node_form'){ 
     $form['base']['model']['#default_value'] = 'placeholder'; 
    } 
} 

function photo_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) { 
    switch($op){ 
     case 'presave': 
      if($node->model == 'placeholder') 
       $node->model = $node->field_image_cache2[0]['filename'];  
     break; 
     case 'insert': 
      $nid = $node->nid; 
      $sku_dl = $node->model.'d'; 

    //====== Setup Adjustments ====== 
      db_query('INSERT INTO {uc_product_adjustments} (nid,combination,model) VALUES' 
       .'('.$nid.',"%s","'.$sku_dl.'"),' 
       .'('.$nid.',"%s","'.$sku_dl.'"),' 
       .'('.$nid.',"%s","'.$sku_dl.'"),' 
       .'('.$nid.',"%s","'.$sku_dl.'"),' 
       .'('.$nid.',"%s","'.$sku_dl.'")' 
       ,serialize(array('1'=>'1')) 
       ,serialize(array('1'=>'3')) 
       ,serialize(array('1'=>'4')) 
       ,serialize(array('1'=>'5')) 
       ,serialize(array('1'=>'6')) 
      ); 

    //====== Add file download on purchase ====== 
      $file_name = $node->field_image_cache2[0]['filename']; 

      db_query("INSERT INTO {uc_files} (filename) VALUES ('%s')",$file_name); 

      db_query("INSERT INTO {uc_file_products} (pfid, fid, model, description, shippable) VALUES (%d, LAST_INSERT_ID(), '%s', '%s', %d)", 0, $sku_dl, '', 1); 
      db_query('UPDATE {uc_file_products} SET pfid = LAST_INSERT_ID() WHERE fpid = LAST_INSERT_ID() LIMIT 1'); 

      db_query("INSERT INTO {uc_product_features} (pfid, fid, nid, description) VALUES (LAST_INSERT_ID(), '%s', %d, '%s')", 'file', $nid, '<b>Filename</b><br/>'.$file_name.'<br/> <b>Reference</b> : '.$sku_dl); 
     break; 
    } 
} 
1

這裏有一個JavaScript版本 - 它提供了一個鏈接自動生成SKU以及庫存頁面上的「默認庫存」選項。

Drupal.behaviors.autoSKU = function(){ 
    //if we're on the product adjustments page, add a button to automatically set sku's 
    if($('#uc-product-adjustments-form').length > 0){ 
     $('#uc-product-adjustments-form').before($('<a>Automatically set SKU\'s</a>').css('cursor', 'pointer').click(function(){ 
      $base = $('#uc-product-adjustments-form').attr('action').substr(6, 4) + '-'; 
      $('#uc-product-adjustments-form .form-text').each(function(){ 
       $(this).attr('value', $base + $(this).parents('tr').attr('title').toLowerCase().replace(new RegExp(' ', 'g'),'-')); 
      }); 
     })); 
    } 

    //if we're on the stock page, automatically set as active and set default stock level 
    if($('#uc-stock-edit-form').length > 0){ 
     $('#uc-stock-edit-form').before($('<a>Activate and Set Default Stock</a>').css('cursor', 'pointer').click(function(){ 
      $first = true; 
      $('#uc-stock-edit-form .form-checkbox').each(function(){ 
       if($first){ 
        $(this).attr('checked', false); 
        $first = false; 
       } 
       else{ 
        $(this).attr('checked', true); 
       } 
      }); 

      $set_stock = $('#edit-stock-0-stock').attr('value'); 
      $odd = true; 
      $('#uc-stock-edit-form .form-text').each(function(){ 
       if($odd){ 
        $(this).attr('value', $set_stock); 
       } 
       $odd = !$odd; 
      }); 
     })); 
    } 
}