Blog Home  Home Feed your aggregator (RSS 2.0)  
HP's Blog - DotNetNukeCoreHacks
Hans-Peter Schelian's Weblog
 
# Monday, January 21, 2008

Mit der Version 4.5.X wurde die Suche in DotNetNuke um die Funktion Web Suche erweitert. Das hat dazu geführt, dass aus dem Einfachen Eingabefeld für die Suche wie nachfolgend dargestellt:

image

Eine wesentlich komplexere Anzeige geworden ist (siehe nachfolgende Abbildung).

image

Wem diese Darstellung nicht zusagt, der kann durch die nachfolgend beschriebene Änderung die Darstellung der Suche wieder auf das ursprüngliche Aussehen zurücksetzen.

Hier nun kurz die Schritte zum deaktivieren dieses Feature:

  • Man öffnet die ascx Datei des verwendeten Skins in einem Texteditor.
  • Nun sucht man die Zeichenkette: <dnn:SEARCH runat="server" id="dnnSEARCH" showWeb="True" showSite="True" />
  • Dort ändert man den Eintrag wie folgt: <dnn:SEARCH runat="server" id="dnnSEARCH" showWeb="False" showSite="False" />
  • Datei speichern

Fertig !!

Dies funktioniert natürlich auch mit den Versionen 4.6, 4.7 und 4.8

DotNetNuke | Core Hacks
Monday, January 21, 2008 9:17:51 AM (W. Europe Standard Time, UTC+01:00)  #    Comments [4]  
Autor: Hans-Peter Schelian  |  Trackback
# Sunday, July 22, 2007

Ich bin gespannt in wie vielen Versionen ich noch einen Core-Hack implementieren muss um die Suche in DotNetNuke auch mit Deutschen Umlauten durchführen zu können.

Hier der Link zur DotNetNuke.DLL mit dem Core-Hack Deutsche Suche.

Mehr zum Thema und Hintergrund des Patches könnt Ihr hier in meinem ersten Artikel dazu lesen.

Übrigens nun auch schon in der X.ten Version ein Core-Hack um das leidige &base in der URL zu beseitigen wenn man auf das Portal Logo klickt.

Entweder hier klicken um das geändert File Logo.ascx.vb herunterzuladen oder einfach die Datei \admin\skins\logo.ascx.vb öffnen und dort die folgende Änderung vornehmen:
Im Page_Load event folgende Zeile suchen:
hypLogo.NavigateUrl = GetPortalDomainName(PortalSettings.PortalAlias.HTTPAlias, Request) & "/" & glbDefaultPage & "?base"

Und gegen die nachfolgende Zeile austauschen:

hypLogo.NavigateUrl = GetPortalDomainName(PortalSettings.PortalAlias.HTTPAlias, Request) & "/" & glbDefaultPage

Speichern --> fertig.

DotNetNuke | Open Source | Core Hacks
Sunday, July 22, 2007 10:10:16 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Wednesday, June 27, 2007

Nachdem ich mein eigenes Portal (das wo Ihr gerade drauf seid) auf die aktuelle Version 4.5.3 von DotNetNuke aktualisiert habe und mich auch ein wenig über den wesentlich besseren Editor FCK gefreut habe, wurde meine Freude aber doch schnell wieder getrübt.

Meine "alten" Beiträge wurden in der Suche und im Modul WhatsNew einwandfrei mit den Umlauten angezeigt und auch die Suchfunktion hat bei den Umlauten wunderbar funktioniert. Meine neuen Beiträge aber wurden alle verstümmelt dargestellt (In der Suche und in der Anzeige des Moduls WhatsNew).

Was war geschehen?

Ich habe ein wenig in den Datenbanken recherchiert und stellte fest, dass der FTB Editor der in der 3er Version von DotNetNuke als Standard eingesetzt war, die Umlaute anders kodiert hat wie dies der FCK Editor macht. Das sollte generell eigentlich auch kein Problem sein, aber das Problem war nachdem ich soweit gekommen war relativ schnell gefunden.

Beim indizieren der Inhalte werden alle zu indizierenden Texte durch eine Funktion  mit dem Namen StripEntities geschickt um HTML Fragment die   und ähnliche Zeichen zu entfernen. Leider wird hierbei ein Regex Filter eingesetzt der auch Zeichen wie ö oder Ü aus dem Text entfernt. Und genau hier liegt das Problem, durch die Funktion StripEntities werden die in HTML kodierten Umlaute aus den Texten entfernt. Aber dies ist kein wirklich großes Problem, nachfolgend zeige ich wie die Funktion im Original aussieht und welche Änderung man machen muss, damit die Umlaute nicht herausgefiltert werden.

Hier der Original Code:

Public Shared Function StripEntities(ByVal HTML As String, ByVal RetainSpace As Boolean) As String 
'Set up Replacement String            
   Dim RepString As String            
   If RetainSpace Then                
      RepString = " "            
   Else                
      RepString = ""            
   End If            
   'Replace Entities by replacement String and return mofified string            
   Return System.Text.RegularExpressions.Regex.Replace(HTML, "&[^;]*;", RepString)        
End Function

Und hier der Code nach der Änderung:

Public Shared Function StripEntities(ByVal HTML As String, ByVal RetainSpace As Boolean) As String 
'Set up Replacement String            
   Dim RepString As String            
   If RetainSpace Then                
      RepString = " "            
   Else                
      RepString = ""            
   End If            
   'Replace Entities by replacement String and return mofified string            
   Return System.Text.RegularExpressions.Regex.Replace(HTML, "&[^uml;]*;", RepString)        
End Function

Und wer keine Lust hat diese Änderung selbst zu machen, kann auch einfach dem nachfogeldenden Link folgen und die DotNetNuke.DLL einfach herunterladen. Es handelt sich dabei um die Version 4.5.3. Einfach runterladen in das BIN Verzeichnis der DotNetNuke Installation kopieren und fertig.

Hier gibt es die kompilierte Version der DotNetNuke 4.5.3 DLL

Fast fertig, denn die "falschen" Einträge sind bereits in der Datenbank vorhanden und müssen erst noch einmal erstellt werden..

Dies geht folgendermaßen:

Also als Host einloggen.

Im Menü Host den Menüpunkt SQL aufrufen und das folgende Script in das SQL Fenster kopieren.

---------- START Script-----------

delete SearchItem

go

delete SearchWord

go

delete SearchItemWord

go

delete SearchItemWordPosition

go

---------END Script-------------

run as script anklicken

und den Link ausführen betätigen.

Entweder kann man jetzt warten, bis der nächste Schedule Aufruf der Suchindex erstellung läuft, oder wenn man es eilig hat (wer hat das nicht) Im Host Menü den Menüpinkt Search Amdin aufrufen und Re-Index Content anklicken.

 

 

DotNetNuke | Core Hacks | Open Source | VB
Wednesday, June 27, 2007 10:00:53 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
Copyright © 2010 Hans-Peter Schelian - Schelian IT Beratung. All rights reserved.