The Client Side Rendering (CSR) is used for rendering list views, list forms and search results.
To only change href for msg and eml file using CSR, you can try the following script. Check the file type from ctx.CurrentItem.File_x0020_Type.
<script src="https://code.jquery.com/jquery-1.11.3.min.js" type="text/javascript"></script> <script type="text/javascript"> (function () { function registerRenderer() { var ctxForm = {}; ctxForm.Templates = {}; ctxForm.Templates = { Fields : { 'LinkFilename': { //------ Change Hyperlink of LinkTitle View : function (ctx) { //get the original LinkFilename link var html = getDefaultFieldHtml(ctx, ctx.CurrentFieldSchema, ctx.CurrentItem, ctx.ListSchema); //Locate the LinkFilename display text in the html. if(ctx.CurrentItem.File_x0020_Type == "msg" || ctx.CurrentItem.File_x0020_Type == "eml"){ // return new link var url = String.format('{0}', "https://mysite.sharepoint.com/demo/Subdivision%20Files/Forms/AllItems.aspx?viewpath=%2Fdemo%2FSubdivision%20Files%2FForms%2FAllItems%2Easpx&id=%2Fdemo%2FSubdivision%20Files%2F" + ctx.CurrentItem.FileLeafRef + "&parent=%2Fdemo%2FSubdivision%20Files"); return String.format( "<a href='" + url + "'>" + ctx.CurrentItem.FileLeafRef + "</a>" ); }else{ // return the original LinkFilename return html; } } }, } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctxForm); } function getDefaultFieldHtml(renderCtx, field, listItem, listSchema) { //Copy Paste of Jim Browns awesome helper function to return default CSR field rendering var renderingTemplateToUse = null; var fieldRenderMap = { Computed: new ComputedFieldRenderer(field.Name), Attachments: new AttachmentFieldRenderer(field.Name), User: new UserFieldRenderer(field.Name), UserMulti: new UserFieldRenderer(field.Name), URL: new UrlFieldRenderer(field.Name), Note: new NoteFieldRenderer(field.Name), Recurrence: new RecurrenceFieldRenderer(field.Name), CrossProjectLink: new ProjectLinkFieldRenderer(field.Name), AllDayEvent: new AllDayEventFieldRenderer(field.Name), Number: new NumberFieldRenderer(field.Name), BusinessData: new BusinessDataFieldRenderer(field.Name), Currency: new NumberFieldRenderer(field.Name), DateTime: new DateTimeFieldRenderer(field.Name), Text: new TextFieldRenderer(field.Name), Lookup: new LookupFieldRenderer(field.Name), LookupMulti: new LookupFieldRenderer(field.Name), WorkflowStatus: new RawFieldRenderer(field.Name) }; if (field.XSLRender == '1') { renderingTemplateToUse = new RawFieldRenderer(field.Name); } else { renderingTemplateToUse = fieldRenderMap[field.FieldType]; if (renderingTemplateToUse == null) renderingTemplateToUse = fieldRenderMap[field.Type]; } if (renderingTemplateToUse == null) renderingTemplateToUse = new FieldRenderer(field.Name); return renderingTemplateToUse.RenderField(renderCtx, field, listItem, listSchema); } ExecuteOrDelayUntilScriptLoaded(registerRenderer, 'clienttemplates.js'); })(); </script>
Testing result:

About how to get the html of original LinkFilename field, refer to the scrip in this thread: Do not apply CSR Override in QuickEdit Mode