transmenu et virtuemart (joomla) problème de liens

Petit nouveau ! | 5 Messages

23 juil. 2008, 15:30

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.

Mammouth du PHP | 959 Messages

23 juil. 2008, 23:39

Regardes la fonction html_entity_decode() ;)

Petit nouveau ! | 5 Messages

24 juil. 2008, 11:27

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]

ViPHP
ViPHP | 2287 Messages

24 juil. 2008, 11:38

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 ;-)
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Petit nouveau ! | 5 Messages

24 juil. 2008, 12:57

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:

Invité
Invité n'ayant pas de compte PHPfrance

25 juil. 2008, 13:53

Je n'arrive pas à adapté les exemples au mien ... :(

Petit nouveau ! | 5 Messages

03 août 2008, 18:57

Bizar que personne ne sait ... vous me donnez les solutions mais vous n'arrivez pas à les adapter???

En attente de réponse ...
Merci

ViPHP
ViPHP | 2287 Messages

03 août 2008, 19:54

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...
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Alf
Eléphanteau du PHP | 24 Messages

03 août 2008, 19:58

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");
Pas pro du dev, mais pas débutant non plus, je suis attentif à la qualité de mon code dans la mesure de mes connaissances.

Petit nouveau ! | 5 Messages

09 août 2008, 20:27

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

DGAINE
Invité n'ayant pas de compte PHPfrance

12 déc. 2008, 12:07

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

DePassage
Invité n'ayant pas de compte PHPfrance

07 avr. 2010, 21:34

Je rêve où il n'a même pas pris la peine de dire merci!?