Домой Wp-Recall WP-Recall: Пишем свое дополнение и кастомизация Возникли трудности с подключением внешних js файлов в дополнении
6 ответ(ов) в теме
Николай
не в сети 1 неделя
На сайте с 03.11.2015
Участник
Тем 13
Сообщения 59
1
17:22
Версия WP-Recall:16.17.15

Для вывода данных на экран и в файл хочу применить внешние js библиотеки, но не могу понять как их подключить к дополнению.

Пробовал прописать такое:

add_action('admin_head','rcl_admin_user_account_scripts_');
	function rcl_admin_user_account_scripts_(){
		rcl_enqueue_style('rcl_admin_user_account_scripts',rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js', __FILE__));
		rcl_enqueue_style('rcl_admin_user_account_scripts',rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js', __FILE__));
		rcl_enqueue_style('rcl_admin_user_account_scripts',rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jcalendar.js', __FILE__));
		rcl_enqueue_script( 'rcl_admin_user_account_scripts', rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js', __FILE__));
		rcl_enqueue_script( 'rcl_admin_user_account_scripts', rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js', __FILE__));
		rcl_enqueue_script( 'rcl_admin_user_account_scripts', rcl_addon_url('https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jcalendar.js', __FILE__));
	}

За образец взял стандартное дополнение user-balance, админскую часть. Но скрипты не работают. Есть ли тут не учет каких-то нюансов работы wp-recall или нужно просто разобраться с этими билиотеками?

0
Дружаев Владимир (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 14723
2
18:36

В админке используйте wp_enqueue_style и wp_enqueue_script - так как rcl_enqueue_style() и rcl_enqueue_script() нужны для минификации и объединения скриптов и стилей (если такую опцию поставили в настройках) для фронетенд части сайта

а дальше все плохо:

1. handle скриптов и стилей (1й аргумент) - должен быть уникальным. Смотрите документацию по wp_enqueue_style и wp_enqueue_script

2. rcl_addon_url применяете неверно. Смотрите документацию по wp_enqueue_style и wp_enqueue_script

0
Николай
не в сети 1 неделя
На сайте с 03.11.2015
Участник
Тем 13
Сообщения 59
3
19:00

Понял, буду разбираться.

0
Николай
не в сети 1 неделя
На сайте с 03.11.2015
Участник
Тем 13
Сообщения 59
4
20:25

Здравствуйте!
Переписал подключение следующим образом:

add_action('admin_enqueue_scripts','rcl_admin_user_account_scripts_export_addon');
	function rcl_admin_user_account_scripts_export_addon(){
		wp_enqueue_style('jquery-jexcel-css','https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jexcel.min.css', NULL, true);
		wp_enqueue_style('jquery-jdropdown-css','https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jdropdown.min.css', NULL, true);
		wp_enqueue_style('jquery-jcalendar-css','https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/css/jquery.jcalendar.min.css', NULL, true);
		wp_enqueue_script( 'jquery-jexcel-js', 'https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jexcel.js', NULL, true);
		wp_enqueue_script( 'jquery-jdropdown-js', 'https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jdropdown.js', NULL, true);
		wp_enqueue_script( 'jquery-jcalendar-js', 'https://cdnjs.cloudflare.com/ajax/libs/jexcel/2.1.0/js/jquery.jcalendar.js', NULL, true);
	}

Ошибки в консоли браузера исчезли, скрипты подключились.
Дальше сделал следующим образом:

	echo "<script>";
	echo "data = ";
	$dataPayments = "[";
	foreach ($allPayments as $payment) {
        $dataPayments .= "[";
        foreach ($payment as $cell) {
                $dataPayments .= htmlspecialchars($cell) . ", ";
        }
		substr_replace($dataPayments, "", -1);
		substr_replace($dataPayments, "", -1);
        $dataPayments .= "],n";
	}
	$dataPayments .= '];';
	echo $dataPayments;
	echo 'jQuery("#my-show-export-addon-js").jexcel({';
	echo '	data:data,';
	echo '	colHeaders:  [ "Country", "Description", "Type", "Stock", "Next purchase", "Type", "Stock", "Next purchase" ],';
	echo '	colWidths: [ 300, 80, 100, 60, 120, 100, 60, 120 ],';
	echo '	columns: [';
	echo '		{ type: "number" },';
	echo '		{ type: "number" },';
	echo '		{ type: "number" },';
	echo '		{ type: "text" },';
	echo '		{ type: "text" },';
	echo '		{ type: "text" },';
	echo '		{ type: "text" },';
	echo '		{ type: "text" },';
	echo '	]';
	echo '});';
	echo 'jQuery("#my-download-export-addon-js").on("click", function () {';
	echo '	jQuery("#my-show-export-addon-js").jexcel("download");';
	echo '});';
	echo '</script>';

Ajax для передачи данных использовать не стал, решил пока по-проще сделать.
Вышеприведеный скрипт в консоли отображается, то есть в доде страницы присутствует, но не работает. Может его тоже необходимо вынести в хидер или футер? Или такая конструкция в принципе не допустима?

0
Дружаев Владимир (Otshelnik-Fm)
не в сети 4 часа
На сайте с 27.01.2013
Модератор
Тем 30
Сообщения 14723
5
20:37

Любите вы в кучу все шаги вашей задачи сваливать. Тут обсуждали "Возникли трудности с подключением внешних js файлов в дополнении" - вопрос с этим решен?

По новому вопросу создавайте новую тему.

Я ничего из вашего прошлого сообщения не понял

0
Николай
не в сети 1 неделя
На сайте с 03.11.2015
Участник
Тем 13
Сообщения 59
6
21:21

Да, эту тему закрываем. Поскольку речь шла о подключении внешних js файлов.

0
Тема закрыта. Публикация новых сообщений запрещена.