Page 1 sur 1

transmenu et virtuemart (joomla) problème de liens

Posté : 23 juil. 2008, 15:30
par squall90
Bonjour, je commence à être désespéré de ne pas trouvé de solution à mon problème ...

dans mon fichier shop_menu.php, j'ai:
CONCAT('index.php?option=com_virtuemart&page=shop.browse&category_id=', category_id ) AS link,
							'-1' as browserNav, list_order
sur mon navigateur, j'ai :
index.php?option=com_virtuemart&page=shop.browse&category_id=61&Itemid=40
or je voudrais avoir :
index.php?option=com_virtuemart&page=shop.browse&c ategory_id=61&Itemid=40
en gros, sur mon navigateur j'ai & et je veux seulement &

Merci d'avance.

Posté : 23 juil. 2008, 23:39
par chrislabricole
Regardes la fonction html_entity_decode() ;)

Posté : 24 juil. 2008, 11:27
par squall90
Merci pour ta réponse mais je n'ai pas très bien compris l'explication
pourrais-tu m'aider a convertir mon code?
CONCAT('index.php?option=com_virtuemart&page=shop.browse&category_id=', category_id ) AS link,
                            '-1' as browserNav, list_order 
Merci :D

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 24 juil. 2008, 11:38
par Calimero
Le code que tu nous donnes est du SQL. La fonction que chrislabricole te suggère d'étudier est du PHP. Les deux ne se combinent pas. Il faut appeler html_entity_decode à l'endroit où tu utilises les valeurs des champs issus de cette requete SQL, portion de code que tu ne nous donnes pas.

Vu que tu ne le précises pas, j'imagine que tu utilises MySQL comme base de données. Si tu préfères intervenir directement dans la requête SQL, une alternative pour toi serait d'utiliser la fonction REPLACE ( http://dev.mysql.com/doc/refman/5.0/fr/replace.html ) pour faire les remplacements qui vont bien.

Lis bien les exemples dans les liens fournis pour comprendre comment les deux solutions marchent ;-)

Posté : 24 juil. 2008, 12:57
par squall90
Merci pour ta réponse mais en réalité, en php, sql ... je m'y connais presque pas ^^" je ne suis qu'un embryon qui souhaiterai se déveloper :D

je vous mets le fichier pour voir si vous pouvez m'aider.

Code : Tout sélectionner

<?php /** * @version $Id: mod_mbt_transmenu.php * @copyright (C) 2005 MamboTheme.com */ if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' ); class Shop_Menu{ var $menuObj; var $_params = null; var $_db = null; var $children = null; var $open = null; function Shop_Menu( &$database, &$params ){ $this->_params = $params; $this->_db = $database; $this->loadMenu(); $this->createmenuObj(); } function createmenuObj (){ switch ($this->_params->get( 'menutype' )){ default: include_once("transmenu.php"); $this->menuObj = new TransMenu($this); break; } } function loadMenu(){ global $my, $database, $cur_template, $Itemid; global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_shownoauth; $query = "SELECT category_id as id, category_parent_id as parent, category_name as name, '' as type, CONCAT('index.php?option=com_virtuemart&page=shop.browse&category_id=', category_id ) AS link, '-1' as browserNav, list_order FROM #__{vm}_category, #__{vm}_category_xref WHERE #__{vm}_category.category_publish='Y' AND #__{vm}_category.category_id=#__{vm}_category_xref.category_child_id ORDER BY name ASC"; $this->_db->setQuery( $query ); $database->setQuery( $this->_db->_sql ); $rows = $database->loadObjectList( 'id' ); // establish the hierarchy of the menu $this->children = array(); // first pass - collect children foreach ($rows as $v ) { $pt = $v->parent; $list = @$this->children[$pt] ? $this->children[$pt] : array(); array_push( $list, $v ); $this->children[$pt] = $list; } // second pass - collect 'open' menus $this->open = array( @$_REQUEST['category_id'] ); } function genMenu(){ $this->beginMenu(); $this->menuObj->beginMenu(); $this->genMenuItems (0, 0); $this->menuObj->endMenu(); $this->endMenu(); } /* $pid: parent id $level: menu level $pos: position of parent */ function genMenuItems($pid, $level) { if (@$this->children[$pid]) { $i = 0; foreach ($this->children[$pid] as $row) { $this->menuObj->genMenuItem( $row, $level, $i); // show menu with menu expanded - submenus visible $this->genMenuItems( $row->id, $level+1 ); $i++; } } } function beginMenu(){ echo "<!-- Begin menu -->\n"; } function endMenu(){ echo "<!-- End menu -->\n"; } function hasSubItems($id){ if (@$this->children[$id]) return true; return false; } } ?>

Merci d'avance :roll:

Posté : 25 juil. 2008, 13:53
par Invité
Je n'arrive pas à adapté les exemples au mien ... :(

Posté : 03 août 2008, 18:57
par squall90
Bizar que personne ne sait ... vous me donnez les solutions mais vous n'arrivez pas à les adapter???

En attente de réponse ...
Merci

Posté : 03 août 2008, 19:54
par Calimero
Bizar que personne ne sait ... vous me donnez les solutions mais vous n'arrivez pas à les adapter???

En attente de réponse ...
Merci
Non, c'est tout simplement à toi de faire ce travail. Des pistes de solutions t'ont été données, maintenant il faut les appliquer et que tu apprennes quelquechose.

Ca n'aurait aucun intérêt qu'on le fasse à ta place...

Posté : 03 août 2008, 19:58
par Alf
bon en fait dans l'exemple que tu donne il y a beaucoup de classes utilisées et personne ne sait se qu'elles rendent en sorties à la différences de fonctions PHP, il n'est donc pas possible de te repondre.

à propos de la premiére réponse qui t'est faite, la fonction html_entity_decode transforme ton url en celle que tu voudrait avoir.
$s_url=html_entity_decode("index.php?option=com_virtuemart&page=shop.browse&category_id=61&Itemid=40");
print($s_url);
print("\n"); //retour à la ligne
print("index.php?option=com_virtuemart&page=shop.browse&category_id=61&Itemid=40");

Posté : 09 août 2008, 20:27
par squall90
Salut, j'aimerai apprendre comme tu dis mais en essayant d'appliquer les solutions que vous m'avez donné, je n'arrive à rien.

Merci Alf, mais le code que tu me donne ne fonctionne pas.

En faite, j'ai sa à la base dans le code: CONCAT('index.php?option=com_virtuemart&page=shop.browse&category_id=', category_id ) AS link,

dans le navigateur, j'ai:
index.php?option=com_virtuemart&page=shop.browse&category_id=xx&Itemid=xx

xx réprésentant un nombre

et je veux juste que les & deviennent &

Merci

Voici la solution ca marche!

Posté : 12 déc. 2008, 12:07
par DGAINE
Salut j'ai eu le même problème que toi et après avoir chercher et consulter un programmeur j'ai trouvé ce qu'il fallait changer.
Les modifs se font dans \joomla\modules\mod_virtuemart\vm_transmenu\transmenu.php
A la ligne 72... remplacer la fonction genMenuItem par :
function genMenuItem(&$row, $level, $pos){

		global $Itemid, $mosConfig_live_site, $mainframe, $sess;
		$txt = '';
		$Itemid = vmRequest::getInt( 'Itemid' );
		switch ($row->type) {
			case 'separator':
			case 'component_item_link':
			break;
			case 'content_item_link':
			$temp = split("&task=view&id=", $row->link);
			$row->link .= '&Itemid='. $mainframe->getItemid($temp[1]);
			break;
			case 'url':
			if ( eregi( 'index.php\?', $row->link ) ) {
				if ( !eregi( 'Itemid=', $row->link ) ) {
					$row->link .= '&Itemid='. $Itemid;
				}
			}
			break;
			case 'content_typed':
			default:
				$row->link .= '&Itemid='. $sess->getShopItemid();
			break;
		}

		$row->link = vmAmpReplace( $row->link );

		if ( strcasecmp( substr( $row->link,0,4 ), 'http' ) ) {
			$row->link = sefRelToAbs( $row->link );
		}

		
		//echo "$row->name $row->link $level<br>";
		if ($level){
			$pmenu = "tmenu$row->parent";
			//echo "$pmenu.addItem(\"$row->name\", \"$row->link\");\n";
			$active = 0;
			if ( in_array($row->id, $this->parent->open) ) $active = 1;
			$row->link=html_entity_decode($row->link);
			echo "$pmenu.addItem(\"$row->name\", \"$row->link\", $row->browserNav, $active);\n";
		}
		else{
			$pmenu = "ms";
		}
		$cmenu = "tmenu$row->id";
		$idmenu = "menu$row->id";
		if ($this->parent->hasSubItems($row->id)){
			if ($level == 0){
				echo "var $cmenu = ".$pmenu.".addMenu(document.getElementById(\"$idmenu\"));\n";
			}else{
				echo "var $cmenu = ".$pmenu.".addMenu(".$pmenu.".items[".$pos."]);\n";
			}
		}
	}
voilou à toute

Re: transmenu et virtuemart (joomla) problème de liens

Posté : 07 avr. 2010, 21:34
par DePassage
Je rêve où il n'a même pas pris la peine de dire merci!?