Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Изменение javascript файлов через модификатор


Recommended Posts

Всем привет.
Может тема уже старая и уже все это решено, но я что-то не находил.

 

Модификаторы могут изменять все файлы, в т.ч. и javascript, они сохраняют их в папке модификаторов.
Но я что-то не встречал модификаторов, которые бы меняли javascript файлы.

Чтобы изменить, к примеру, common.js, просто пишем нужный модификатор для этого js и в этом же модификаторе:

1) в header.{tpl|twig} меняем строку:

<script src="catalog/view/javascript/common.js" type="text/javascript"></script>

на такую (получение этого файла с сервера через php):

<script src="index.php?route=common/header/getCommonJs" type="text/javascript"></script>

 

2) прописываем в контроллере header перед index, вот примерно такую функцию:
 

public function getCommonJs() {
	$js = DIR_APPLICATION . 'view/javascript/common.js';
	$mod_js = DIR_MODIFICATION . 'catalog/view/javascript/common.js';
	if (file_exists($mod_js)) {
		$js = $mod_js;
	}
	header("Content-Type: application/javascript");
	echo file_get_contents($js);
	exit;
}	

Здесь мы смотрим, есть ли модифицированный js. Если есть, отдаем его, если нет - оригинальный.

Попробовал на 2.3 - идеально работает.

 

И вообще, категорически всех поздравляю с НГ !!!

  • +1 2
Надіслати
Поділитися на інших сайтах

Если нужно подключть много кода. то я делаю перенаправление в модификаторе. типа
 

Цитата

 

require_once(DIR_APPLICATION.'controller/toolkit/sef.php');

class _ControllerStartupSeoUrl extends Controller {

 

Тут модификатор делается из пары строк.

    <file path="catalog/controller/startup/seo_url.php">
        <operation>                
            <search><![CDATA[class ControllerStartupSeoUrl]]></search>
            <add position="before"><![CDATA[require_once(DIR_APPLICATION.'controller/toolkit/sef.php');]]></add>
        </operation>
         <operation>                
            <search><![CDATA[ControllerStartupSeoUrl]]></search>
            <add position="replace"><![CDATA[_ControllerStartupSeoUrl]]></add>
        </operation>
    </file>

Впрочем. это кому как нравится.

Надіслати
Поділитися на інших сайтах

12 часов назад, esculapra сказал:

Если нужно подключть много кода. то я делаю перенаправление в модификаторе. типа

 

13 часов назад, Prooksius сказал:

Но я что-то не встречал модификаторов, которые бы меняли javascript файлы.

Эскулапра. Новый год...алкоголь...плохое зрение.

Или просто жизненная позиция, прочёл, не понял о чём речь и вставил свои пару копеек невпопад?

  • +1 1
Надіслати
Поділитися на інших сайтах

@Prooksius  задачу-то ваш метод не решает. Что свой яваскрипт вместо штатного подключить можно - понятно, задача нехитрая. Так ведь надо не заменить, а изменить существующий. Мало ли чего там наваяли, он, может, вообще ни разу не дефолтный.

Надіслати
Поділитися на інших сайтах


1 минуту назад, Shureg сказал:

Так ведь надо не заменить, а изменить существующий.

Так я же и изменил дефолтный common.js через модификатор:

 

index.png

Надіслати
Поділитися на інших сайтах

11 минут назад, Prooksius сказал:

Так я же и изменил дефолтный common.js через модификатор:

Да, спасибо, теперь понял смысл ваших действий. Работать, конечно, будет.
Но как-то очень уж это неправильно - при каждом открытии страницы для загрузки отдельного файлика раскочегаривать еще один дополнительный процесс.  Почти двойная нагрузка на сервер

  • +1 1
Надіслати
Поділитися на інших сайтах


9 минут назад, Shureg сказал:

Но как-то очень уж это неправильно - при каждом открытии страницы для загрузки отдельного файлика раскочегаривать еще один дополнительный процесс.  Почти двойная нагрузка на сервер

Да, есть такое.. Как вариант, можно конечно, подключить его, как текст, не как файл... То есть вместо

<script src="catalog/view/javascript/common.js" type="text/javascript"></script>

просто вывести содержимое файла (оригинала или модифицированного), обернутое в <script></script> в header.tpl|twig

Либо копировать модифицированный файл в папку с оригинальным с новым именем и его подключать в header.tpl
Тогда не надо через php грузить.
Ну вообщем, вопрос вполне решаемый, мне кажется.

Надіслати
Поділитися на інших сайтах

  • 2 years later...
01.01.2022 в 12:30, Prooksius сказал:

Либо копировать модифицированный файл в папку с оригинальным с новым именем и его подключать в header.tpl

Спасибо за идею, так и сделал!

 

if (file_exists(DIR_MODIFICATION . 'catalog/view/javascript/common.js')) {
	copy(DIR_MODIFICATION . 'catalog/view/javascript/common.js', 'catalog/view/javascript/common_modif.js');// делаем копию common_modif.js
	$this->document->addScript('catalog/view/javascript/common_modif.js');
} else {
	if (file_exists(DIR_APPLICATION . 'view/javascript/common_modif.js')){
		unlink(DIR_APPLICATION . 'view/javascript/common_modif.js'); // удаляем common_modif.js
	}	
	$this->document->addScript('catalog/view/javascript/common.js');
}


В контролер

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.