[Magento] Mettre certains produits au début d'un tableau en renseignant leurs Sku

le but de ce snippet est de trier un tableau de produit en mettant en avant 1 (ou plusieurs) de ces produits.

on va créer un helper qui prend en paramètre un tableau de produits et un autre définissant l'odre des sku qui nous intéressent

allez dans le Data.php (ou autre helper) du dossier helper de votre module et collez le code suivant :

    /**
     * trie un tableau en mettant les elements de order en premier
     * et retourne le tableau passé en param
     *
     * @param array $array
     * @param array $order
     */
    public function orderProductsArray(&$array, $order = array())
    {
        if(!empty($order)) {
            if(!empty($array)) {
                $new_array = array();
                foreach($array as $index => $ele) {
                    if(($pos = array_search($ele->getSku(), $order)) !== false) {
                        $new_array[$pos] = $ele;
                        unset($array[$index]);
                    }
                }
                ksort($new_array);
                array_splice($new_array, count($new_array), 0, $array);
                $array = $new_array;
            }
        }
    }


//exmple d'utilisation :
Mage::helper('NOM-DE-MON-MODULE')->orderProductsArray($produtsTab, array('sku-du-prod-a-mettre-en-premier', 'sku-du-second-prod')); 
//cette exemple met les objets des 2 sku passé en param au début du tableau (et tout le reste par la suite)

Modifier le bloc de recherche Drupal

function mon_theme_preprocess_search_block_form(&$vars, $hook) {

  // Modify elements of the search form
  unset($vars['form']['search_block_form']['#title']);

  // Set a default value for the search box
  $vars['form']['search_block_form']['#value'] = t('Search');

  // Add a custom class to the search box
  $vars['form']['search_block_form']['#attributes'] =
    array(   
    'onfocus' => 'if(this.value == \''.t('Search').'\') {this.value = \'\';}',
    'onblur' => 'if(this.value == \'\') {this.value = \''.t('Search').'\';}');

  // Change the text on the submit button
  $vars['form']['submit']['#value'] = "ok";

  // Rebuild the rendered version (search form only, rest remains unchanged)
  unset($vars['form']['search_block_form']['#printed']);
  $vars['search']['search_block_form'] = drupal_render($vars['form']['search_block_form']);

  // Rebuild the rendered version (submit button, rest remains unchanged)
  unset($vars['form']['submit']['#printed']);
  $vars['search']['submit'] = drupal_render($vars['form']['submit']);

  // Collect all form elements to make it easier to print the whole form.
  $vars['search_form'] = implode($vars['search']);
}

Utiliser Jquery 1.5 avec le frontend de drupal 6

Pour utiliser Jquery 1.5 sur le frontend de Drupal 6, il faut créer un module.
Mettre la version de jquery dans le dossier du module (ex: mon_module/jquery.min.js).

Avec cette fonction :

/**
 * Implementation of moduleName_preprocess_hook().
 * Replace Drupal core's jquery.js with the 1.5.2 only in the front end.
 */
function mon_module_preprocess_page(&$variables) {

  // Only do this for pages that have JavaScript on them.
  if (!empty($variables['scripts'])) {

    // Only if front end
    if (arg(0) != 'admin' && arg(2) != 'edit' && arg(1) != 'add' && arg(0) != 'batch' ) {

      // Get an array of all the JavaScript files loaded by Drupal on this page.
      $scripts = drupal_add_js();

      // Replace jquery.js
      $new_jquery = array(drupal_get_path('module', 'mon_module') .'/jquery.min.js' => $scripts['core']['misc/jquery.js']);
      $scripts['core'] = array_merge($new_jquery, $scripts['core']);
      unset($scripts['core']['misc/jquery.js']);
      $variables['scripts'] = drupal_get_js('header', $scripts);
    }
  }
}

[Htaccess] forcer le téléchargement d'un fichier csv (ou autre)

vous voulez forcer le navigateur à proposer un fichier csv à être télécharger, or, celui ci l'affiche à l'écran, rien de plus simple, via htaccess il faut dire à apache de le faire et ce en lui disant que l'extension .csv lui est inconnue, voici la ligne à ajouter au .htaccess :

AddType application/x-unknown-file .csv

on peut faire de même pour d'autres extensions :)

Merci Cyprien :)

[PHP] générer un mot de passe aléatoire

un petite fonction pratique pour générer un mot de passe aléatoire :

function genPassword($length = 6) {
    $index = str_split("abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!?@_-[#&$");
    shuffle($index);
    $code = implode('', array_slice($index, rand(0, count($index)-$length), $length));

    return $code;
}

//utilisations :
$pass = genPassword();
$pass = genPassword(8);

Pages

Subscribe to www.snippets.fr RSS