Я генерирую JSON-LD в теге script
в разделе body
, используя это решение в AngularJS 1.4.8. Директива определяется как
myApp.directive('jsonld', ['$filter', '$sce', function($filter, $sce) {
return {
restrict: 'E',
template: function() {
return '<script type="application/ld+json" ng-bind-html="onGetJson()"></script>';
},
scope: {
json: '=json'
},
link: function(scope, element, attrs) {
scope.onGetJson = function() {
return $sce.trustAsHtml($filter('json')(scope.json));
}
},
replace: true
};
}]);
И jsonId
определяется в контроллере
myApp.controller('MyWorkCtrl',['$scope', '$routeParams', '$http', function($scope, $routeParams, $http){
$http.get('/works/' + $routeParams.workId + '.json').success(function(data) {
$scope.work = data;
$scope.jsonId = {
"@context": "http://schema.org",
"@type": "Book",
"creator": data['authors'],
"name": data['title'],
"isbn": data['isbn'],
"bookFormat": data['page_size'],
"numberOfPages": data['pages'],
"translator": data['translators'],
"image": data['image']
};
});
}]);
Тогда это просто вопрос размещения директивы
<jsonld data-json="jsonId"></jsonld>
Он отлично работает, за исключением того, что тег script
с Json-LD генерируется в файле body
. Как я могу переместить его в раздел head
, как рекомендует Google?
script
вbody
должно быть идеальным. - person unor   schedule 21.04.2017