transmenu et virtuemart (joomla) problème de liens

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : transmenu et virtuemart (joomla) problème de liens

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

par DePassage » 07 avr. 2010, 21:34

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

Voici la solution ca marche!

par DGAINE » 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

par squall90 » 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

par Alf » 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");

par Calimero » 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...

par squall90 » 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

par Invité » 25 juil. 2008, 13:53

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

par squall90 » 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:

par Calimero » 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 ;-)

par squall90 » 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]

par chrislabricole » 23 juil. 2008, 23:39

Regardes la fonction html_entity_decode() ;)

transmenu et virtuemart (joomla) problème de liens

par squall90 » 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.