Richten Sie eine erweiterte Suchquelle ein, die Daten von einer externen Website abfragt.
Vorbereitungen
Erforderliche Rolle: keine
Um eine Quelle für erweiterte Suche zu erstellen, benötigen Sie authentifizierten Zugriff auf eine externe Website über eine REST-API und grundlegende Kenntnisse von AngularJS .
Prozedur
-
Navigieren Sie in der Plattform-UI zu Und wählen Sie das Portal aus, dem Sie Suchquellen hinzufügen möchten.
-
Klicken Sie in der zugehörigen Liste Suchquellen auf Neu.
-
Erstellen Sie einen Namen und eine ID für die Suchquelle.
Die ID sollte eindeutig sein und darf keine Leerzeichen oder Sonderzeichen enthalten.
-
Auf der Registerkarte Datenquelle wählen Sie das Kontrollkästchen Ist geskriptete Quelle aus.
-
Fügen Sie dem Datenabrufskriptfeld Inhalt hinzu.
So richten Sie eine GitHub-Integration ein:
(function(query) {
var results = [];
/* Calculate your results here. */
var url = "https://api.github.com/search/repositories?q=" + encodeURI(query);
var ws = new GlideHTTPRequest(url);
ws.setBasicAuth("YOUR_USERNAME_HERE", "YOUR_PASSWORD_HERE");
var jsonOutput = ws.get();
if (jsonOutput) {
var response = new JSON().decode(jsonOutput.getBody());
results = response.items;
results.forEach(function(result) {
result.url = result.svn_url;
result.target = "_blank";
result.primary = result.full_name;
});
}
return results;
})(query);
Hinweis: Im vorherigen Beispiel
ws.setBasicAuth Erfordert einen Anwendernamen und ein Passwort für die externe Ressource. Weitere Informationen finden Sie unter
GlideHTTPRequest: Global .
-
Verwenden Sie die Seitenvorlage „Suche“, um die Anzeige der Suchergebnisse anzupassen.
<div>
<div class="pull-right">
<strong>{{item.language}}</strong>
<a ng-href="{{item.svn_url}}/stargazers" target="_blank" class="m-l-sm"><span class="fa fa-star m-r-xs"></span>{{item.stargazers_count}}</a>
<a ng-href="{{item.svn_url}}/network" target="_blank" class="m-l-sm"><span class="fa fa-code-fork m-r-xs"></span>{{item.forks}}</a>
</div>
<a ng-href="{{item.svn_url}}" target="_blank" class="h4 text-primary m-b-sm block">
<span ng-bind-html="highlight(item.full_name, data.q)"></span>
</a>
<p>{{item.description}}</p>
<p>Updated <sn-time-ago timestamp="item.updated_at"></sn-time-ago> ago</p>
</div>