2. Las fotos no se muestran - mavira21/RESOLUCION-DE-CONFLICTOS GitHub Wiki
Para que podamos ver las fotos de una galería utilizando Processwire con HANNA-CODE hay que tener en cuenta los siguientes elementos:
###1.- Del lado del administrador
####Hanna-code
Debe haber un hanna-code con nombre busca
al que asignamos el siguiente código:
<?php
header("Content-type: application/json");
$request = file_get_contents('php://input');
$data = json_decode($request,true);
$query = $data["query"];
// $selector = wire("sanitizer")->text($selector);
try {
$paginas = wire('pages')->find($query)->toJSON();
} catch (Exception $e) {
echo ("Comprobar que los campos enviados y los de la BD son del mismo tipo INT, TEXT, DATE...");
}
echo $paginas; return;
####Configuracion de la plantilla hanna_code
-> En la pestaña basics:
Debe contener el campo hanna_code (que debe ser de tipo textarea y en la pestaña details
seleccionar hanna code text formatter
) y title
-> En la pestaña URLs:
Disable automatic prepend _init.php y append _main.php
-> En la pestaña Files:
Seleccionar Allow Url segments y HTTP or HTTPS
-> En la pestaña JSON data
No hay que seleccionar ningún campo.
####Web-service
Creamos un hijo de web-service (que a su vez es hijo de home) al que llamamos busca
y le asignamos la plantilla hanna-code, y en la pestaña content
ponemos [[busca]]
####Configuración del JSon de las dos plantillas (foto y fotos)
En el JSon de ambas hay que decirle que muestre los siguientes campos:
-Url
-Title
-Images
###2.- Del lado del Código en Sublime Text
####Script head de foto.php
<script>
app.controller('FotoCtrl',function($scope){
$scope.page=<?php echo $page->toJSON() ?>;
});
</script>
####Script head de fotos.php
<script>
app.controller('FotosCtrl',function($scope,$http,pw){
$scope.busca = function(){
pw.busca('template=foto, title|comentari~='+$scope.termino).then(function(data){
console.log("ENCONTRADOS",data);
$scope.encontrados=data;
$scope.termino='';
});
}
$scope.buscaFotos= function(fotos){
pw.busca(fotos).then(function(data){
$scope.encontrados=data;
console.log("todos",data)
});
}
$scope.buscaFotos('template=foto,sort=title');
$scope.page=<?php echo $page->toJSON() ?>;
console.log("PAGINA", $scope.page);
});
</script>
Y el Html que debe tener en el controlador:
<div ng-controller="FotosCtrl">
<div class="tagcloud">
<ul class="portfolio-filter center centered">
<li><a href ng-click="buscaFotos('template=foto,sort=title')">2015</a></li>
</ul>
</div>
<div class="row portfolio-page">
<ul id="portfolio-list" data-animated="fadeIn">
<li ng-repeat="hijo in encontrados" class="portfolio-item bootstrap">
<img class="img-responsive animated flipInY" src="{{hijo.images[0].url}}" alt="">
<div class="portfolio-item-content">
<span class="header" ng-bind-html="hijo.title | unsafe"></span>
<p class="body">{{hijo.datalletres}}</p>
</div>
<a href="{{hijo.url}}"><i class="more">+</i></a>
</li><!--/.portfolio-item-->
</ul>
</div>
</div>
####Codigo del archivo factories.js
Debe contener el código siguiente:
angular.module('factories', [])
.factory('pw', function($http, $location) {
var webService = "http://nano.bitnamiapp.com/miweb/web-service/";
return {
busca: function(query){
return $http.post( webService + "busca/", {'query':query} ).then(function(response){
return response.data;
});
},
}
})
####Revisar la Url del archivo factories.js
Ir al archivo factories.js y, dependiendo del servidor donde tengamos ubicada nuestra web será necesaria una u otra de las siguientes:
var webService = "http://nano.bitnamiapp.com/miweb/web-service/";
var webService = "http://"+$location.$$host+"/web-service/";