Joomla 3.4.1 jQuery로 호출 된 JCaption을 삭제하는 방법은 무엇입니까?


10

다음 방법으로 비활성화 된 head, jquery 및 jcaption 파일에서 JCaption 을 삭제하고 싶습니다 .

unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-noconflict.js']);
unset($doc->_scripts[JURI::root(true) . '/media/jui/js/jquery-migrate.min.js']);
unset($doc->_scripts[JURI::root(true) . '/media/system/js/caption.js']);

mootools가 필요한 이전 버전에서 jcaption을 삭제하려면 다음이 필요합니다.

$this->_script = preg_replace('%window\.addEvent\(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%', '', $this->_script);

나는 또한 jquery에서 삭제하려고 시도했지만 preg_replace () 경험이 없으면 머리에서 JCatpion을 삭제하는 방법은 무엇입니까?

내 코드 :

$this->_script = preg_replace('%jQuery\(window\)\.on(\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\');\s*}\);\s*%', '', $this->_script);

답변:


5

이것은 매우 오래된 질문이며 아마도 아무도 더 이상 읽지 않지만 어쨌든 내 대답을 게시 할 것입니다.

JQuery캡션 의 정규식에 오류가 있습니다. 점을 피할 필요는 없지만 특수 문자를 피해야합니다. 또한 배열에서 올바른 키를 대상으로해야 ['text/javascript']스크립트 개체를 호출 한 후 추가해야 합니다.

올바른 regex / preg_replace는 다음과 같습니다.

$this->_script['text/javascript'] = preg_replace('%jQuery\(window\).on\(\'load\',\s*function\(\)\s*\{\s*new\s*JCaption\(\'img.caption\'\)\;\s*\}\)\;\s*%', '', $this->_script['text/javascript']);

오래지 않아 나는 또한 정규식 고민했지만이 사이트는 많은 도움이 : http://regexr.com/을 당신이 자동으로 때문에 이미 거기 열고 닫는 태그를 사용하지 않아도 사이트의 메모를 시도하는 경우 .


작은 따옴표를 피하기 위해 패턴을 큰 따옴표로 묶습니다. 세미콜론을 피할 필요가 없습니다. 이 경우 점을 이스케이프 처리하지 않아도 예상되는 결과를 얻을 수 있지만 패턴에서 "모든 문자"메타 문자가 아닌 리터럴 점을 일치시키는 것이 더 정확하고 효율적이므로 점을 이스케이프 처리하는 것이 좋습니다.
mickmackusa

4

이 시도:

$this->_scripts = array();
unset($this->_script['text/javascript']);

대단합니다! 나는 unset ($ doc-> _ scripts 코드 라인을 모두 제거하고 2로 대체했다.
mmundiff

내가 당신을 위해 도움이되었다는 것을 알고 기분이 좋습니다 :)
Sahil Purav

잘만되면 그것은 원래의 포스터를 도왔고 그들은 당신의 대답을 받아들입니다! 다시 한번 감사드립니다
mmundiff

2

이 시도:

if (isset($this->_script['text/javascript']))
{ $this->_script['text/javascript'] = preg_replace('%window\.addEvent\    (\'load\',\s*function\(\)\s*{\s*new\s*JCaption\(\'img.caption\'\);\s*}\);\s*%',     '', $this->_script['text/javascript']);
if (empty($this->_script['text/javascript']))
unset($this->_script['text/javascript']);}
$this->_scripts = array();

0

플러그인을 사용하여 삽입 된 스크립트 태그를 설정 해제하려는 경우 다음이 유용 할 수 있습니다.

public function onBeforeRender() {
    // Front end
    if ($this->app instanceof JApplicationSite) {
        $doc = JFactory::getDocument();

        foreach ($doc->_script as $key => $script) {
            if (stristr($key, 'text/javascript') !== false) {
                unset($doc->_script['text/javascript']);
            }
        }
    }
}

PHP 매뉴얼 은 문자열에 하위 문자열이 있는지 확인할 strstr()때보 다 덜 효율적 이라고 선언 할뿐만 아니라이 strpos()작업은 하위 문자열을 검색 할 필요가 없습니다- $key전체 문자열 일치입니다.
mickmackusa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.