Boris Guéry

Hacking the web since 1997.

addAttributeToFilter() Aide-mémoire Des Options

La méthode addAttributeToFilter() permet de filtrer une collection à partir de condition appliquer aux attributs. Concrètement, cela permet de réduire à partir d’une date donnée, d’une quantité, ou tout autre attribut que vous avez créé manuellement.

Cet article a avant tout l’objectif d’être un aide-mémoire.

Les conditions :

CodeSQLDescription
eq=égal à
neq!=différent de
likeLIKEsimilaire à
nlikeNOT LIKEnon similaire à
ininprésent dans
nin=non présent dans
notnull=nul
null=non nul
gt=supérieur à
gteq=supérieur ou égal à
lt=inférieur à
lteq=inférieur ou égal à
from=à partir de
to=jusqu’à
date=Active la conversion vers le type DATE
datetime=Active la conversion vers le type DATETIME

Utilisation :

Par défaut, la méthode addAttributeToFilter utilise la condition d’égalité pour comparer l’attribut : $collection->addAttributeToFilter('entity_id', 3);

Pour comparer un attribut à plusieurs valeurs et selon différentes conditions, vous devez fournir un array ayant pour clé l’opérateur et pour valeur, la valeur à comparer :

1
2
3
4
5
6
7
8
$collection->addAttributeToFilter(
    'created_at',
    array(
        'from' => '21 August 1984',
        'to' => '21 August 2010',
        'date' => true,
    )
);

Pour filtrer plusieurs attributs à l’aide d’une condition OR, il faut fournir un tableau à trois dimensions, avec pour premier couple l’attribut et son nom, et le second, la condition et sa valeur :

1
2
3
4
5
6
7
8
9
10
11
$collection->addAttributeToFilter(array(
    array(
        'attribute' => 'entity_id',
        'in'        => array(1, 2, 3),
        ),
    array(
        'attribute' => 'created_at',
        'from'      => '1984-08-21',
        ),
    )
);

Rediriger www.example.com Vers example.com

La plupart des internautes ont maintenant pris l’habitude d’ajouter www. devant tous les noms de domaines, cependant, il est pour la plupart du temps inutile et redondant, en effet, le protocole HTTP suffit. La plupart des registrars, pointent indépendament le domaine racine et le sous domaine www. vers la même adresse ip, soit en utilisant un enregistrement de type CNAME soit de type A, cependant, dans le cas d’une optimisation SEO, cela risque d’être perçu comme un duplicate content, pour éviter cela, il faut explicitement rediriger de manière permanente (code 301) le domaine en question.

Pour ce faire, on peut facilement utiliser le mod_rewrite d’Apache, avec une règle dans un fichier .htaccess

1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
</IfModule>

Et pour gérer n’importe quel site :

1
2
3
4
5
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

Cette règle redirigera tout utilisateur qui tentera d’accèder au site example.com à partir de l’adresse www.example.com.

Pour terminer, un site qui se bat pour le retrait du www : http://no-www.org