Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 24 Ответов
  • 4154 Просмотров
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Хотел узнать можно ли отключить плагин на нескольких страницах с заданными URL?
Речь идет конкретно о плагине http://www.nonumber.nl/extensions/modalizer. Поскольку он конфликтует с некоторыми компонентами :(
Других вариантов, честно говоря не вижу
Помогите пожалуйста, как такое можно сделать?
*

Sulpher

  • Живу я здесь
  • 2115
  • 401 / 16
  • Шаблоны и расширения Joomla
Хотел узнать можно ли отключить плагин на нескольких страницах с заданными URL?
Речь идет конкретно о плагине http://www.nonumber.nl/extensions/modalizer. Поскольку он конфликтует с некоторыми компонентами :(
Других вариантов, честно говоря не вижу
Помогите пожалуйста, как такое можно сделать?
попробуйте исследовать от обратного. С какими компонентами возникает конфликт? В чем он проявляется?
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
http://joomlaforum.ru/index.php/topic,67278.new.html
в начале плагина делаем проверку на конфликтный компонент и выходим
Спасибо! Статья познавательная, но разобраться все-таки не получается, не силен в PHP.
Как я понял, во первых нужно добавить код:
Цитировать
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
$option = JRequest::getVar('option', null);
$view = JRequest::getVar('view', null);
$document = & JFactory::getDocument();
$user = & JFactory::getUser();
в файл index.php шаблона?
Затем идем в папку plugins и открываем ....?
или идем в компонент... (но, нужно не компонент отключить, а плагин)?

И еще проблема конечно возникает с условием, которое надо написать. Подскажите как сделать?
В плагине есть вот такой код:
Цитировать
   function plgSystemModalizer( &$subject, $config )
   {
      if ( JRequest::getCmd( 'disable_modalizer2' ) ) { return; }

      $mainframe =& JFactory::getApplication();
насколько я понимаю его как-то можно использовать?
« Последнее редактирование: 30.11.2010, 18:12:57 от shmakatuha »
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а при чём тут шаблон?
сказано же "в начале плагина делаем проверку".
смотри, у тебя есть строка
if ( JRequest::getCmd( 'disable_modalizer2' ) ) { return; }
т.е. выход после проверки переменной disable_modalizer2

а тебе тоже надо сделать выход, но по факту проверки
if ($option=="com_content") { return; }

вместо com_content пишешь свой конфликтный компонент. нащвание смотришь в урле с отключенным сефом
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
SEF отключен. Попробовал прописал и с конфликтным компонентом и с пунктом меню, не работает :(
А куда тогда прописывать?:
Цитировать
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
.....
я думал в шаблон?
Вот весь код основного файла плагина:
Код
// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Import library dependencies
jimport( 'joomla.event.plugin' );

$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
$option = JRequest::getVar('option', null);
$view = JRequest::getVar('view', null);
$document = & JFactory::getDocument();
$user = & JFactory::getUser();
/**
* Plugin that replaces stuff
*/
class plgSystemModalizer extends JPlugin
{
/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for
* plugins because func_get_args ( void ) returns a copy of all passed arguments
* NOT references. This causes problems with cross-referencing necessary for the
* observer design pattern.
*/
function plgSystemModalizer( &$subject, $config )
{

if ( JRequest::getCmd( 'disable_modalizer2' ) ) { return; }

$mainframe =& JFactory::getApplication();

// return if current page is an administrator page
if ( $mainframe->isAdmin() ) { return; }

parent::__construct( $subject );

// Include the Helper
require_once JPATH_PLUGINS.DS.$config['type'].DS.$config['name'].DS.'helper.php';
$class = get_class( $this ).'Helper';
$this->helper = new $class( $config );
}

function onAfterDispatch()
{
$this->helper->placeScripts();
}

function onAfterRender()
{
$this->helper->onAfterRender();
}
}
Подскажите пожалуйста, что нужно менять?
Пробовал так:
Код
if ($Itemid = '151')  { return; }
по пункту меню
и так:
Код
if ($option=="com_facileforms")  { return; }
по компоненту
не работает(
И куда вставлять еще не совсем понятно?
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Спасибо за быстрые ответы! ^-^
Но, к сожалению, все равно не работает :(
Попробовал и Ваш вариант и по пункту меню:
Код
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
if ($Itemid = '151')  { return; }
Может файл не тот правлю?
Что еще можно попробовать, очень нужно отключить?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а так, внутри функции, перед выделенной строкой

$option = JRequest::getVar('option', null);
if ($option=="com_facileforms")  { return; }

      if ( JRequest::getCmd( 'disable_modalizer2' ) ) { return; }
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
 :D Спасибо!
Так работает!
Но почему-то не работает в том же месте такой код:
Код
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
if ($Itemid = '151')  { return; }
Мне бы желательно отключить по пункту меню, поскольку компонент FacileForms в некоторых страницах встроен в контент.
В чем может быть ошибка? Ведь принцип вроде такой-же?
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
В чем может быть ошибка? Ведь принцип вроде такой-же?
ага, почти такой же, если не учитывать что такое условие всегда будет истинным :)
Цитировать
if ($Itemid == '151')  { return; }
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Спасибо за ответ!
То есть два "равно" должно быть? Попробовал, и все равно не работает :(
адрес, на котором хочу отключить плагин, вроде правильный:... index.php?option=com_content&view=article&id=82:site-design&catid=40:site&Itemid=151
Может я что-то еще забыл или перепутал?
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
 ^-^ Спасибо! Все получилось!
Оказалась, что проверка работает только, есть пункт меню ссылается непосредственно на материал:
то есть при такой ссылке работает:
index.php?option=com_content&view=category&layout=blog&id=29&Itemid=151
при такой нет:
index.php?option=com_content&view=article&id=82:site-design&catid=40:site&Itemid=151
хотя Itemid вроде бы одинаковый)
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
хотя Itemid вроде бы одинаковый)
был такой глюк, как-то тоже. Просто если ссылка формируется с & а не просто & тогда почему-то Itemid не берется. Просто если ссылка формируется через роутер, то & автоматически заменяется на &
Я на это дело забил, не стал выяснять почему так, возможно потому что Itemid начинается с большой буквы, но это так предположение.
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
И все-таки, может возможно отключить плагин на странице с подобной ссылкой?
index.php?option=com_content&view=article&id=82:site-design&catid=40:site&Itemid=151
Или это сложно сделать?
Хотелось бы просто до конца разобраться) да и придется как то меню переделывать, если не исправить.
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
И все-таки, может возможно отключить плагин на странице с подобной ссылкой?
возможно
Код: php
$menu = & JSite::getMenu();
if ($menu->getActive()->id == 151) return;
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Спасибо за ответ!
Но, к сожалению так не работает :( Может как-то все таки можно сделать?
И еще один мелкий вопрос:
Код
if ($Itemid == '153')  { return; }
if ($Itemid == '154')  { return; }
как написать в одном условии, например, с элементом или?
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Но, к сожалению так не работает :( Может как-то все таки можно сделать?
это не может не работать, значит что-то делаете неправильно.
как написать в одном условии, например, с элементом или?
http://php.su/learnphp/?expressions
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Спасибо большое все работает! Не знаю почему сначала не работало. И с элементом или разобрался:
Код
if ($Itemid == '153'||'154')  { return; }
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
возможно
Код: php
$menu = & JSite::getMenu();
if ($menu->getActive()->id == 151) return;
Рано я обрадовался, не все проверил к сожалению. Плагин полностью отключился после добавления этого кода.
В итоге у меня сейчас условие))):
Код
$option = JRequest::getVar('option', null);
if ($option=="com_facileforms")  { return; }
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
if ($Itemid == '154'||'153')  { return; }
$menu = & JSite::getMenu();
if ($menu->getActive()->id == 153) return;
Если убираю Ваше условия "мои" работают (первые 4 строки). Если убираю мои то Ваше вроде все равно не работает, но плагин включается. Если все вмести то плагин полностью отключается. Замучился уже с проблемой. Помогите пожалуйста?
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
да откуда же мне знать чего вам нужно и чего вы там намудрили :)
во первых это неправильно
Код
if ($Itemid == '154'||'153')  { return; }
раз уж на то пошло, нужно писать так
Код
if ($Itemid == '154' || $Itemid == '153')  { return; }
во вторых удалите все что вы там сочинили, и напишите конкретно для какого именно Itemid (пункта меню) что нужно сделать. И причипите код плагин полностью.
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Согласен, конечно может быть непонятно)
Код плагина исходный, без моих изменений:
Код: php
<?php
/**
 * Main Plugin File
 * Does all the magic!
 *
 * @package     Modalizer
 * @version     2.1.0
 *
 * @author      Peter van Westen <peter@nonumber.nl>
 * @link        http://www.nonumber.nl
 * @copyright   Copyright (C) 2010 NoNumber! All Rights Reserved
 * @license     http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

// Import library dependencies
jimport( 'joomla.event.plugin' );

/**
* Plugin that replaces stuff
*/
class plgSystemModalizer extends JPlugin
{
/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for
* plugins because func_get_args ( void ) returns a copy of all passed arguments
* NOT references. This causes problems with cross-referencing necessary for the
* observer design pattern.
*/
function plgSystemModalizer( &$subject, $config )
{

if ( JRequest::getCmd( 'disable_modalizer2' ) ) return;

$mainframe =& JFactory::getApplication();

// return if current page is an administrator page
if ( $mainframe->isAdmin() ) { return; }

parent::__construct( $subject );

// Include the Helper
require_once JPATH_PLUGINS.DS.$config['type'].DS.$config['name'].DS.'helper.php';
$class = get_class( $this ).'Helper';
$this->helper = new $class( $config );
}

function onAfterDispatch()
{
$this->helper->placeScripts();
}

function onAfterRender()
{
$this->helper->onAfterRender();
}
}
Только это код одного файла, а есть еще его папка...
Да, с или я немного перепутал, спасибо)
Пишу для каких пунктов меню мой код не работает:
http://site/index.php?option=com_content&amp;view=article&amp;id=82:site-design&amp;catid=40:site&amp;Itemid=153
http://site/index.php?option=com_content&amp;view=article&amp;id=83:logo-design&amp;catid=41:logo&amp;Itemid=154

Для этих работает:
http://site/index.php?option=com_content&view=article&id=82&Itemid=153
http://site/index.php?option=com_content&view=article&id=83&Itemid=154

И "мой" код сейчас вставлен после:
Код: php
	function plgSystemModalizer( &$subject, $config )
{
//$option = JRequest::getVar('option', null);
//if ($option=="com_facileforms")  { return; }
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
if ($Itemid == '153'||$Itemid == '153'||$Itemid == '147'||$Itemid == '148')  { return; }
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
да уж, перед этим что я писал? :)
Код: php
$menu = & JSite::getMenu();
$Itemid = $menu->getActive()->id;
if ($Itemid == '153' || $Itemid == '147' || $Itemid == '148')  return;
*

shmakatuha

  • Захожу иногда
  • 131
  • 3 / 0
Спасибо за помощь!
Но все равно не работает
Чтобы ни чего не напутать скопировал без изменений, и все равно, я уже совсем запутался  :(
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как отключить стандартный счетчик просмотров материалов

Автор Akksimo

Ответов: 5
Просмотров: 4751
Последний ответ 25.12.2019, 16:56:29
от nikolaevevge
Как вывести все категории всех разделов на одной странице?

Автор genius

Ответов: 4
Просмотров: 1808
Последний ответ 22.01.2019, 08:38:30
от genius
Вопрос о правильности разметки тегами на странице

Автор dpy1995

Ответов: 10
Просмотров: 5966
Последний ответ 09.01.2018, 12:49:25
от kungurskiy
Отключил плагин входа

Автор RayCD

Ответов: 13
Просмотров: 4415
Последний ответ 09.10.2016, 02:27:30
от SeBun
плагин обратной связи с хорошой защитой от спама!

Автор Meloc987

Ответов: 3
Просмотров: 1248
Последний ответ 23.04.2016, 10:50:21
от flyingspook