Blog » Silverstripe: Как вставить код Google Analytics (или любой другой код) в самом конце html-хидера?
По умолчанию, у Silverstripe CMS нет никаких средств для того, чтобы поместить javascript-код в самом конце хтмл-хидера (непосредственно перед закрывающим тегом "</head>"). Я столкнулся с этим сегодня, так как хотел вставить туда код Google Analytics. Конечно, я знаю, что, технически, можно поставить этот код в любое место страницы, но у меня были проблемы со статистикой и я хотел быть уверен, что я сделал всё так, как написано в документации у Гугла.
Вы, несомненно, знаете где получить код Google Analytics. Но я, на всякий случай, напомню последовательность действий для его получения:
С помощью нижеприведённого отрывка кода, вы сможете поместить любой свой код в секцию html-заголовка очень близко к закрывающему тегу. Этот код делает свою работу на одной из поздних стадий выполнения, поэтому, шансы, что что-то допишется после вас очень малы:
# mysite/code/Page.php:
class Page_Controller extends ContentController {
/* інші методи проігноровано для стислості */
public function getViewer($action) {
Requirements::insertHeadTags(<<<EOF
<script type="text/javascript">
alert('Put your code here!');
</script>
EOF
);
return parent::getViewer($action);
}
}
То есть, я просто переопределил Controller::getViewer() в моём Page_Controller и сделал своё дело как-раз перед вызовом родительского метода.
С другой стороны, если для вас не принципиально будет ли ваш код в непосредственной близости от закрывающего тега "</head>", то можете воспользоваться официальными средствами для управления джава-скриптами в Silverstripe CMS:
# Page::init():
Requirements::customScript('alert("Put your code here!")');
Также, если вам нужно прикрепить к странице javascript-файл, то этот код может помочь:
# Page::init():
// Путь к файлу задаётся относительно корня сайта:
Requirements::javascript('mysite/javascript/script.js');
// загрузить javascript-файл из папки текущей темы
Requirements::javascript('themes/' . SSViewer::current_theme() . '/javascript/script.js');
Три последние строчки из предыдущих примеров поместят javascript-код в тело html-документа. Класс Requirements ведёт себя так по-умолчанию. Чтобы ваш джава-скрипт размещался где-то в пределах секции head, нужно выполнить этот код:
Requirements::set_write_js_to_body(false);
Думаю, мудро будет поместить его в mysite/_config.php
@Дмитрий: ніяк, пишіть метод у контроллері, наприклад, у вашому mysite/code/Page.php (class Page_Controller), видавайте звідти дані, та посилайтеся на ці дані у шаблоні (наприклад, так: $PageComments).
Автор Артем, 30/04/2015 7:13pm (5 лет назад)
А как вставить php код в саму страницу?
Автор Дмитрий, 29/04/2015 12:37pm (5 лет назад)