hook_block_info()
для того чтобы объявить блоки. Один блок для каждого типа материала, либо сделать форму настроек для блока с помощью хука hook_block_configure()
, где можно выбирать какой тип материала необходимо отображать в этом блоке. Далее в hook_block_view()
необходимо выбрать из базы ноды нужного типа, можете использовать что-то такое:$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node');
$query->propertyCondition('status', NODE_PUBLISHED);
$query->propertyCondition('type', 'CONTENT_TYPE');
$result = $query->execute();
$nodes = node_load_multiple(array_keys($result['node']));
где в CONTENT_TYPE подставить machine name нужного вам типа материала. И теперь можно использовать node_view_multiple()
для того чтобы отобразить все полученные ноды в нужном режиме отображения. function THEME_preprocess_page(&$vars, $hook)
(function(A) {
"use strict";
A.module('App').controller('Ctrl', ['$resource', '$scope', functino($resource, $scope) {
var r = $resource('/api/items/:id/', {
id: '@id'
}, {
update: {
method: 'PUT' //Необязательная фича для Django REST Framework
}
});
$scope.loading = true;
$scope.items = [];
r.query({
//А можно передать параметры, скажем, limit и offset
}, function(response) {
$scope.items = response;
$scope.loading = false;
}, function(response) {
$scope.loadign = false;
$scope.errors = response.data; // Так DRF отдаёт ошибки
});
}]);
}(this.angular));
(function() {
var app = angular.module('testApp', [
'ngRoute'
]);
app.config(function($routeProvider) {
$routeProvider.when('/page', {
templateUrl: 'test.tpl.html',
controller: 'TestCtrl'
});
});
app.controller('TestCtrl', function($scope) {
console.log('тут уже можно пользоваться теми скриптами, которые подгрузили во вьюхе');
});
})();
<div class="testView">
<script src="testFunction.js"></script>
</div>
document.addEventListener( "DOMContentLoaded", function () {
alert('Меня подгрузили!!!');
}, false );
});