Подскажите а как убрать вывод стороннего модуля mod_virtuemart_universal когда загружается страницы с товаром? Т.е. этот модуль выводится у меня на всех страницах магазина, и на странице товара, а хотелось бы чтобы выводился только на главной магазина при нажатии на ссылку в меню. Как сейчас все это выглядит приложил в скриншоте. Объясню поподробней. Есть установленный данный модуль, привязанный к пункту меню - интернет магазину. В магазине есть допустим 10 товаров. И вот если зайти в какой либо товар то ниже опять выводятся все товары которые у меня есть. Также как и на главной инет магазина. Я специально убрал отображение всех категорий т.к. товаров немного и разбивать их на категории смысла нет Как сделать чтобы список товаров выводился только при нажатии на ссылку в меню а не на всех страницах виртуемарта? Или подскажите пожалуйста в каком файле нужно копаться чтобы модуль не выводился на след страницах: - детальная информация по товару - страница регистрации в virtuemart - страницы относящиеся к процессу заказа товара, там где вводим способ доставки, оплату и пр. Понимаю что нужно этот модуль жестко привязать к пункту меню или какому то шаблону но как не знаю. ((
можно в файле шаблона, где выводится позиция этого модуля (это в том варианте если в этой позиции только один модуль), делать проверку на соответствующие параметры массива $_REQUEST. Для этого переходите на страницы, на которых не должно быть модуля и смотрите какие добавились параметры (не значения, а название параметров) в ur. Если не ошибаюсь, то параметра "page" нет на главной странице магазина. Смысл проверки если есть параметр 'page', то модуль выводить не нужно, например if(empty($_REQUEST['page'])){ выводим моудль mod_virtuemart_universal } т.к. у вас привязка модуля по ID, все должно работать.
Сразу скажу что пхп я не знаю К позиции привязан только один этот модуль. И ссылка на главную инет магазина такая http://название_сайта/index.php?option=com_virtuemart&Itemid=3 а ссылка при переходе на товар такая http://название_сайта/index.php?pag...&product_id=10&option=com_virtuemart&Itemid=3 Можете поподробней обяснить что где нужно изменить? И вы имели ввиду под файлом шаблона файл index.php который находится по адресу: V: \home\localhost\www\сайт.ru\templates\мой_шаблон ?
по поводу файла шаблона, да. Это файл по адресу templates/YOU_TEMPLATE/index.php. В нем найдите вывод позиции модуля. Лучше прикрепите архив вашего шаблона к сообщению, я напишу что исправить.
Позиция ja-news. И он один. Вернее к ней еще привязан другой модуль но он не активный. Нашел какой то код, вставил его в позицию. Получилось что модуль не отображается на страницах товара но на странице регистрации он остался. Вот что вставил (старый код закомментировал): <?php if ( $this->countModules('ja-news') ) { ?> <!-- JA NEWS --> <?php if (($_GET['page'] == 'shop.browse') || ($_GET['page'] == 'shop.product_details')) {} else { ?> <div id="ja-news"> <!-- <jdoc:include type="modules" name="ja-news" style="xhtml" />--> <jdoc:include type="modules" name="ja-news" style="xhtmlround" /> </div> <?php } ?> <!-- //JA NEWS --> <?php } ?>
Вот код из файла: Код (PHP): <?php if ( $this->countModules('ja-news') ) { ?> <!-- JA NEWS --> <div id="ja-news"> <jdoc:include type="modules" name="ja-news" style="xhtml" /> </div> <!-- //JA NEWS --> <?php } ?> Нужно исправить так: Код (PHP): <?php if ( $this->countModules('ja-news') && (empty(JRequest::getCmd('page', ''))) && (JRequest::getInt('Itemid', 0) == Ваш_ID_меню_для_virtuemart) ) { ?> <!-- JA NEWS --> <div id="ja-news"> <jdoc:include type="modules" name="ja-news" style="xhtml" /> </div> <!-- //JA NEWS --> <?php } ?>
Пишет: Fatal error: Can't use function return value in write context in Whome\localhost\www\sheepskinboots.ru\templates\ja_lead\index.php on line 195 Вместо Ваш_ID_меню_для_virtuemart я вставил ID пункта меню инет магазина. Получилось вот так: <?php if ( $this->countModules('ja-news') && (empty(JRequest::getCmd('page', ''))) && (JRequest::getInt('Itemid', 0) == 3) ) { ?>
Да, ошибка, попробуйте, так: Код (PHP): <?php $tmp_page = JRequest::getCmd('page', ''); ?> <?php if ( $this->countModules('ja-news') && (empty($tmp_page)) && (JRequest::getInt('Itemid', 0) == Ваш_ID_меню_для_virtuemart) ) { ?> <!-- JA NEWS --> <div id="ja-news"> <jdoc:include type="modules" name="ja-news" style="xhtml" /> </div> <!-- //JA NEWS --> <?php } ?>
Все бы хорошо но с таким кодом модуль не выводится если залогиниться. Если неавторизованный пользователь то модуль выводится только на главной странице. А если авторизованный то и на страницах товара он тоже выводится. А так не нужно. Как исправить код чтобы модуль для всех пользователей выводился только на главной? Единственное позиция сейчас выводится вот так: <?php if($this->countModules('banner2')) : ?> <div id="ja-banner"> <jdoc:include type="modules" name="banner2" /> </div> <?php endif; ?>