- Как включить файл JS в PHP?
- Как оставить некоторые js-скрипты в head?
- Вставить код в раздел head на WordPress – темы, плагины и php функции
- Если шаблон не обновляется
- Темы с возможностью добавлять код html в head
- Применяем плагин ClearfyPRO
- Плагин для вставки кода Head & Footer Code
- Применяем PHP инструкцию
Как включить файл JS в PHP?
Извините, но этот ответ не совсем верный. Если вы хотите уменьшить HTTP-запросы, PHP на самом деле ответ. Таким образом, скрипт генерирует весь контент для браузера, а не для извлечения его у вас или другого веб-хостинга. Например, включение библиотеки jquery вместо реального хранилища jquery.
@Cl0ttERS Cl0ttERS этот конкретный вопрос все еще не является проблемой PHP, хотя. Все, что видит браузер, это сгенерированный HTML; PHP только играет роль в его создании. Это правда, что вы можете использовать PHP, чтобы поместить все ваши вещи в один скрипт, хотя (хотя это приносит новые проблемы . )
В вашем примере вы используете атрибут href , чтобы указать, где можно найти файл JavaScript. Это должен быть атрибут src :
Для получения дополнительной информации см. w3schools.
«Кроме того, JavaScripts должен быть добавлен в заголовок раздела документа». Нет, они должны быть там, где, по мнению автора, они должны быть. Нет никакой причины, по которой вы не можете поместить теги script в свой раздел body , и на самом деле для этого могут быть веские причины. Например: developer.yahoo.com/performance/rules.html
Ой? У меня сложилось впечатление, что это разрешено только в головной секции. Спасибо за хорошую статью по оптимизации, я сразу прочитал! 🙂
Не волнуйтесь. 🙂 Тег script можно использовать везде, где ожидается «содержание метаданных» или «содержание фраз»; ссылка (взорванная SO, не подчеркивающая ссылки) , которая находится почти где угодно в head или body . Большинство рекламных сетей используют теги script вложенные в разметку сайта.
@ThusithaSumanadasa Вы редактировали неправильно. Тег
У Pekka есть правильный ответ (отсюда мой ответ на этот вопрос — Community Wiki): Используйте src , а не href , чтобы указать файл.
первый тег в функции document.write закрывается
Каков правильный способ сделать это?
Вы не хотите или нуждаетесь document.write для этого, но на всякий случай do нужно поместить символы внутри тега script по какой-то другой причине: вы сделайте это, убедившись, что анализатор HTML (который не понимает JavaScript) не видит литерала . Есть несколько способов сделать это. Один из способов — выйти из / , даже если вам не нужно:
Или, если вы чувствуете себя более параноидально:
. так как в каждом случае JavaScript видит строку как , но парсер HTML не делает.
Я никогда не был поклонником закрытия блоков PHP для вывода контента в браузер, я предпочитаю, чтобы мой вывод был захвачен, поэтому, если в какой-то момент в моей логике я решил, что хочу изменить свой вывод (после того, как результат уже был отправлено) Я могу просто удалить текущий буфер.
Но, как сказал Пекка, основная причина, по которой у вас возникают проблемы с включением javascript, заключается в том, что вы используете href для указания местоположения файла js, где вы должны использовать src .
Если у вас есть файл функций с вашими функциями внутри, добавьте что-то вроде:
function js_link($src) < if(file_exists("my/html/root/" . $src)) < //we know it will exists within the HTTP Context return sprintf("",$src); > return ""; >
В вашем коде n без необходимости закрытия блоков с помощью ?> вы можете просто использовать:
echo js_link("jquery/1.6/main.js");
Как оставить некоторые js-скрипты в head?
Использую перенос всех js-скриптов в подвал (Переместить весь Javascript в конец страницы).
Но счетчики Метрики, Google Analitics, Facebook должны быть в .
Пробовал просто использовать в header.php, но все равно уносится все в подвал. Как быть? Как выборочно оставить скрипты в ?
Уберите эту галку — это плохая идея. Она сводится к обработке на каждом хите страницы регулярками.
Не должны, а хотят. Для них это хорошо, для вас это плохо. В том числе и потому что считать они будут даже не догруженные до конца страницы.
Пробовал просто использовать в header.php, но все равно уносится все в подвал. Как быть? Как выборочно оставить скрипты в ?
Как написал — снять все галки, а скрипты размещать вручную.
Для вывода добавленных через ядро вы можете использовать $APPLICATION->ShowHeadScripts();
Разместив это в подвале и или в шапке, а в альтернативной части страницы просто
Asset::getInstance()->addJs("/local/templates/main/js/js.js");
Иначе кэшироваться как я понимаю они не будут. По умолчанию такое подключение размещает скрипты в . В итоге мне приходится ставить галку в Главном модуле -> Переместить весь Javascript в конец страницы.
«Не должны, а хотят. Для них это хорошо, для вас это плохо. В том числе и потому что считать они будут даже не догруженные до конца страницы.»
Asset::getInstance()->addJs(«/local/templates/main/js/js.js»); — это просто новый способ, который появился в D7.
Выводятся они все так же в $APPLICATION->ShowHeadScripts();
У вас наверняка есть $APPLICATION->ShowHead(); в шапке. Так вот это всего лишь аналог:
$APPLICATION->ShowMeta('robots', false); $APPLICATION->ShowMeta('keywords', false); $APPLICATION->ShowMeta('description', false); $APPLICATION->ShowLink('canonical', null); $APPLICATION->ShowCSS(true); $APPLICATION->ShowHeadStrings(); $APPLICATION->ShowHeadScripts();
Чем переносите? Скриптом или плагином? Должно быть исключение, либо выборка. Как правило плохая практика переносить всё в футер, если контента много — и вы используете скрипты в header, есть шанс что при плохом соединении у вас просто скрипты не погрузятся. Почитайте про ассинхронное подключение скриптов js. И не выводите google speed test в карго культ.
PHP – вставить скрипт в
Бегите в немного липкую ситуацию, которую я, кажется, не могу обмануть. В основном то, что я пытаюсь достичь, – это возможность добавлять различные файлы Javascript на разные страницы.
- Страница 1: импорт jquery.js
- Страница 2: import mootools.js
Итак, что я сделал, я создал функцию addScript() следующим образом:
function addScript($file) < $script = ''; $script .= ''; return $script; >
поэтому, если я вызываю addScript(‘jquery.min’); он, выводит правильно.
Теперь я хочу заменить закрывающий на выход из указанной выше функции. Если я сделаю следующее, то он отлично работает:
ob_start(); require_once("models/header.php"); $contents = ob_get_contents(); ob_end_clean(); echo str_replace('', addScript('jquery.js') . '', $contents);
Однако я бы хотел, чтобы это было немного более динамичным, так как может быть несколько сценариев, которые мне нужно вводить на каждую страницу следующим образом:
addScript('script.js'); addScript('script2.js'); addScript('script3.js');
Затем я подумал о создании функции getHead() с циклом foreach внутри и возвратом str_replace там, но это не сработало.
Может ли кто-нибудь направлять меня в направлении динамического ввода как можно большего количества сценариев и вывода последнего бит головы?
Почему бы не сделать что-то вроде этого:
class Assets < private static $css = array(); private static $js = array(); static function add_style($path) < self::$css[] = $path; >static function add_script($path) < self::$js[] = $path; >static function get_styles() < $output = ''; foreach(self::$css as $path) < $ouput .= '' . "\n"; > return $ouput; > static function get_scripts() < $output = ''; foreach(self::$js as $path) < $ouput .= '' . "\n"; > return $ouput; > >
Тогда в любом месте вашего проекта:
Assets::add_style('path/to/style.css'); Assets::add_script('path/to/jquery.js');
Это гораздо удобнее, и вы можете расширить класс, чтобы делать больше причудливых вещей.
Отказ от ответственности: есть много споров об использовании статических vars, поскольку они выглядят как глобальные. Я согласен, но это быстро и грязно и работает независимо от того, какую структуру вы используете. Вы также можете сделать переменные oldschool экземплярами, но тогда вам также придется передать объект активов в header.php.
Что случилось со следующим?
echo str_replace('', addScript('jquery.js'). addScript('jquer1.js'). addScript('jquer2.js'). addScript('jquer3.js'). '', $contents);
Как насчет того, чтобы вы поместили ob_start(); в header.php . Тогда ваша функция:
function addScript($file) < $script = ''; echo str_replace('', addScript('jquery.js') . '', ob_get_clean()); >
Этот метод сохраняет выходной буфер, и вы можете манипулировать им позже в скрипте всякий раз, когда захотите. как и с addScript() .
Вставить код в раздел head на WordPress – темы, плагины и php функции
Большинство скриптов и систем аналитики требуют чтобы подключение к серверам происходило в шапке сайта, где располагается вся служебная информация. Чтобы добавить код в head WordPress не нужно придумывать сложных схем, стоит применить некоторые методы, описанные в статье.
Не путайте head и header, второй это тег семантической разметки сайта, который отображается и показывает, что здесь находится шапка сайта.
Если шаблон не обновляется
Самый простой методом – добавить код напрямую в файлы шаблона. Но есть несколько ограничений:
- Продукт не должен обновляться, например у вас собственная разработка, сделанная на заказ.
- Возможны споры, отслеживать через дебаг режим будет невозможно.
Открываете файл header.php (находится в корне темы), обычно он отвечает за показ первого экрана в WordPress. Используйте соединение по FTP, чтобы при ошибках откатить изменения. Я покажу на примере стандартного редактора в админке WP.
Перешел в редактор тем, нашел файл, потом вставил тестовый тег и обновил. Так он выглядит на главной странице.
Если обновляется, то данный метод сразу не подходит, переходим к другим способам.
Темы с возможностью добавлять код html в head
Возможно вы не знаете обо всех функциях своего шаблона, полезно будет изучить настройки, может быть в нем есть область для записи произвольного кода в хеад. Например, в теме Reboot есть такая возможность Внешний вид — Настроить.
Видим текстовую область, вставляете туда необходимый скрипт или мета информацию, и обновления уже не страшны. Посмотрите повнимательнее, проверьте все вкладки, скорее всего такая возможность для контента есть.
Если не нашли таких настроек, то переходим к другим методам, чтобы добавить код в раздел в хеад.
Применяем плагин ClearfyPRO
Любимый ClearfyPRO умеет все, также прописывать html и другие виды спецификации в head блога.
Есть переключатель можно на время отключить отображение, чтобы не приходилось стирать и заново загружать код. Аналогично можно удалить стили recentcomments. Полезно узнать что ClearfyPRO оптимизирует, ускоряет и улучшает seo в WordPress дополнительно по 49 требованиям. Для читателей WPCourses делаем скидку на покупку.
Плагин для вставки кода Head & Footer Code
Точечным решением для вордпресс является Head & Footer Code , устанавливается стандартно – поиском из админки или загрузкой архива.
- Поле активации в одноименный пункт в Инструментах.
- Находим область HEAD Code.
- Помещаем требуемый код.
- Выставляем приоритет – не всегда срабатывает, но он определяет выше или ниже будет располагаться конфигурация, прописанная выше, между открывающим и закрывающим тегами.
- Внизу нажимаем обновить.
Применяем PHP инструкцию
Все темы содержать в себе инструкцию wp_head , именно она выводит все что встроено в WordPress в «шапке» блога. Мы можем присоединиться к ней с помощью хука и вывести собственный код.
function wpcourses_insert_header() < ?> add_action( 'wp_head', 'wpcourses_insert_header' );
Помещаем его в файл function php. Видим место куда добавлять, вводите любой HTML и js script, после сохранения изменений, ваша функция выведется после отработки основных сценариев wp_head. Также отключается xml rpc протокол в WordPress.
Применяя четыре простых способа смогли добавить любой код в head любимой CMS WordPress, советую использовать плагины, если нет подходящих мест в шаблоне.