2012-06-01 8 views
1

Un peu étrange, mais j'utilise une plate-forme de commerce électronique appelée CS-Cart qui utilise smarty pour son langage templating. Il a une console de débogage smarty qui me permet de voir quelles variables la page en cours utilise.Override Variable in Array - Smarty

Par exemple, voici un tableau qui est utilisé (je raccourci cela pour l'exemple):

Appearance => Array (33) 
    products_per_page => "10" 
    admin_products_per_page => "10" 
    admin_elements_per_page => "10" 
    columns_in_products_list => "3" 
    default_products_sorting => "price" 

Je voudrais être en mesure d'attribuer une valeur différente de default_products_sorting => "price" je prévois de faire ceci dans l'en-tête de mon document car il sera inclus dans une déclaration IF où la variable n'est changée que si certaines conditions sont vraies.

Est-ce encore possible dans smarty? (sans l'utilisation de PHP) et si oui des idées sur la façon dont cela pourrait être réalisé? J'ai parcouru Google, mais jusqu'ici j'ai trouvé un blanc.

Toute aide est très appréciée.

Répondre

1

Vous pouvez modifier la variable comme celui-ci

{$Appearance.default_products_sorting = "NEW_VALUE"} 

Et après cette ligne, si vous utilisez {$Appearance.default_products_sorting} vous devriez obtenir la nouvelle valeur.

Je viens de vérifier et cela a fonctionné.

Vous devez le modifier en haut de votre modèle smarty, afin que tout code qui utilise cette variable obtienne la valeur mise à jour.

On dirait que la méthode ci-dessus ne fonctionne pas pour arrays. Vous pouvez envisager d'utiliser la fonction personnalisée à partir de ce lien http://www.smarty.net/forums/viewtopic.php?t=7201&highlight=create+array

+0

Merci pour la réponse, je l'ai juste essayé cela et cela n'a pas fonctionné, mais je remarqué qu'il est entré dans {$} paramètres - ce que je ne suis pas sûr de la façon dont est maintenant la syntaxe devraient changer? EDIT: J'ai essayé {$ settings.Appearance.default_products_sorting = "NEW_VALUE"} mais cela semble juste imprimer l'ancienne valeur. – user319940

+0

dans ce cas, vous pouvez essayer '$ settings.Appearance.default_products_sorting' –

+0

S'il vous plaît voir mon edit :) – user319940