PHP

[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)

[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);

[PHP] détecter une requête Ajax

parfois il est pratique de cacher certaines parties d'une page quand elle est appelée en ajax, encore faut-il le savoir :)

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
//ici on fait le traitement voulu dans le cas d'une requete ajax...
}

il faut toutefois faire attention, la variable $_SERVER['HTTP_X_REQUESTED_WITH'] n'est présente que si la requête ajax est initiée via une librairie javascript comme jQuery, Prototype ou mootools

pour que cela fonctionne sous IE6, pensez aussi à ajouter ce code dans la page :

header("Cache-Control: no-cache");

Tags:

[Magento] faire une redirection dans un block (ou modèle)

pour faire une redirection dans un controller, rien de plus simple :

$this->_redirect('*/*/*');
return;

mais pour faire de même dans un modèle ou block, c'est comme ça :

Mage::app()->getResponse()->setRedirect(Mage::getUrl('*/*/*'));

[cURL] effectuer une requête post

voici un petit snippet pour faire une simple requête en POST avec cURL

//Initialisation de la ressource curl
$res = curl_init();

//définition de l'url de la page a appeler :
curl_setopt($res, CURLOPT_URL, 'http://www.site.com/url/de/la-page.php');

//on indique a curl de retourner la réponse dans une variable
curl_setopt($res, CURLOPT_RETURNTRANSFER, true);

//on décide si on veut la réponse avec ou sans les header (ici c'est sans)
curl_setopt($res, CURLOPT_HEADER, false);

//on fait la requête en post
curl_setopt($res, CURLOPT_POST, true);

//on passe un tableau de paramètres qui seront envoyés en post
curl_setopt($res, CURLOPT_POSTFIELDS, array('foo'=>'foofoo', 'bar'=>'barbar', 'toto'=>'tyty', 'param'=>'value'));

//Exécution de la requête
$output = curl_exec($res);

//$output contient maintenant la réponse ou false en cas de problème.

//fermeture de la recette
curl_close($res);

Tags:

Pages

Subscribe to RSS - PHP