Multiples Sélectionnez - Rendu d'url et de recherche
-
13-12-2019 - |
Question
Je suis en train de construire une librairie avec Magento.J'ai un multiple de sélectionner des attributs personnalisés pour les Auteurs et les Traducteurs.
Je tiens à rendre leurs valeurs en tant que lien vers la recherche avancée liste de tous les produits que l'Auteur / Traducteur.
- Premier Problème:La recherche avancée n'accepte pas la chaîne /catalogsearch/avancé/result/?auteur="Nom"
- Deuxième Problème:Puis-je rendre chaque élément comme un Lien?pour eg.quelque chose comme ceci
< a href = "/catalogsearch/avancé/result/?auteur= < ?php echo $_product->getAttributeText('auteur') ?>"> < ?php echo $_product->getAttributeText('auteur') ?>
La solution
Si je vous comprends bien, votre problème est maintenant avec de multiples sélectionnez les attributs.Si vous exécutez une recherche avancée et de regarder l'URL, vous verrez qu'il ressemble:
[YOUR_BASE_URL]/catalogsearch/advanced/result/?author[]=1&author[]=2&other_attribute[]=45
En fait, c'est comment vous transférer plusieurs valeurs d'entrée avec le même nom.Le nom n'est alors pas name="author"
, mais name="author[]"
.Aussi, assurez-vous de ne pas utiliser getAttributeText()
pour l'URL de la partie: il attend la option_id, de sorte getData('author')
ou la magie de lecture getAuthor()
est correcte.
Votre dernier lien serait:
<a href="<?php echo Mage::getBaseUrl() ?>catalogsearch/advanced/result/?author[]=<?php
echo $_product->getAuthor() ?>"><?php
echo $_product->getAttributeText('author') ?></a>
Maintenant pour le problème si un produit a plus d'un auteur.Comme Fabian suggéré, vous pouvez utiliser is_array et foreach.
<?php
$_authors = $_product->getAuthor();
if( !is_array($_authors) ) {
$_authors = explode(',', $_authors);
}
$_authorTexts = $_product->getAttributeText('author');
if( !is_array($_authorTexts) ) {
$_authorTexts = array($_authorTexts);
}
foreach($_authors as $i => $_author) {
?><a href="<?php echo Mage::getBaseUrl() ?>catalogsearch/advanced/result/?author[]=<?php
echo $_author ?>"><?php
echo $_authorTexts[$i] ?></a><?php
}