Skip to content

Instantly share code, notes, and snippets.

View MartinMiles's full-sized avatar

Martin Miles MartinMiles

View GitHub Profile
@MartinMiles
MartinMiles / Sitemap.aspx
Last active May 3, 2025 16:21
Admin folder tool for XM Cloud to regenerate the sitemap media library item in a development environment + sitemap generation at Next.js
<%@ Page language="c#" %>
<%@ Import Namespace="Microsoft.Extensions.DependencyInjection" %>
<%@ Import Namespace="Sitecore.Abstractions" %>
<%@ Import Namespace="Sitecore.Configuration" %>
<%@ Import Namespace="Sitecore.Data" %>
<%@ Import Namespace="Sitecore.Data.Items" %>
<%@ Import Namespace="Sitecore.DependencyInjection" %>
<%@ Import Namespace="Sitecore.Events" %>
<%@ Import Namespace="Sitecore.Globalization" %>
<%@ Import Namespace="Sitecore.Pipelines" %>
@MartinMiles
MartinMiles / Responsive-Nav.html
Created January 27, 2025 07:26
Just a responsive navigation bar for desktop and mobile layout
<!DOCTYPE html>
<html>
<head>
<style>
.navbar {
overflow: hidden;
background-color: #333;
}
.navbar a {
# Define the folder path
$folderPath = "master:/sitecore/media library"
# Get all child media items recursively
$mediaItems = Get-ChildItem -Path $folderPath -Recurse -Language * -ErrorAction SilentlyContinue
# Calculate total size (in bytes) using the "Size" field
$totalSizeInBytes = 0
foreach ($item in $mediaItems) {
@MartinMiles
MartinMiles / z.ExternalDatabase.config
Created August 7, 2024 17:52
XM Cloud config to plug external database via SQL containers
<?xml version="1.0" encoding="UTF-8"?>
<configuration
xmlns:patch="www.sitecore.net/.../">
<sitecore>
<eventing defaultProvider="sitecore">
<eventQueueProvider>
<eventQueue name="rrh" patch:after="evertQueue[@name='web']" type="Sitecore.Data.Eventing.$(database)EventQueue, Sitecore.Kernel">
<param ref="dataApis/dataApi[@name='$(database)']" param1="$(name)" />
<param ref="PropertyStoreProvider/store[@name='$(name)']" />
</eventQueue>

Kubectl plugin

This plugin adds completion for the Kubernetes cluster manager, as well as some aliases for common kubectl commands.

To use it, add kubectl to the plugins array in your zshrc file:

plugins=(... kubectl)
@MartinMiles
MartinMiles / Download-SitecoreWebFolder.ps1
Created May 10, 2024 22:28
Downloads Sitecore web folder (or subfolder) in a zip archive and then cleans up after itself, leaving no traces of download.
# Define the path to the Sitecore bin directory
$folderName = "App_Config";
$websiteName = "you_site_name"
$binPath = "C:\inetpub\wwwroot\$websiteName\$folderName"
# Define the destination for the temporary zip file
$zipFilePath = "C:\inetpub\wwwroot\$websiteName\temp\$folderName.zip"
# Define exclusions
@MartinMiles
MartinMiles / Install-WindowsTerminal.ps1
Created April 19, 2024 15:29
Install Windows Terminal by PowerShell on Windows Server
# Provide URL to newest version of Windows Terminal Application
$url = 'https://github.com/microsoft/terminal/releases/download/v1.16.10261.0/Microsoft.WindowsTerminal_Win10_1.16.10261.0_8wekyb3d8bbwe.msixbundle'
$split = Split-Path $url -Leaf
# Prerequisites
Start-BitsTransfer -Source 'https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx' `
-Destination $home\Microsoft.VCLibs.x86.14.00.Desktop.appx
Add-AppxPackage $home\Microsoft.VCLibs.x86.14.00.Desktop.appx
# Download
@MartinMiles
MartinMiles / install-latest-docker-without-desktop.ps1
Created April 8, 2024 05:28
Installs latest docker without desktop
#Run as Admin
# https://gist.github.com/jermdavis/6fb0a6e47d6f1342c089af4c04d29c35#file-1_install-docker-ps1
param(
[string]$dockerEnginePath = "C:\",
[string]$dockerInstallPath = "C:\Docker",
[string]$dockerEngineUrl = "https://download.docker.com/win/static/stable/x86_64/docker-24.0.6.zip",
[string]$dockerZip = "docker.zip",
@MartinMiles
MartinMiles / Demo-UploadPicture.ps1
Last active April 20, 2024 17:28
Demo of uploading a media item to XM Cloud using Authoring GraphQL API
# before starting, make sure env variable "Sitecore_GraphQL_ExposePlayground" is set to "true"
$FileToUpload = "C:\Users\Martin\Pictures\man2x.png"
$MediaDestination = "Default Website/new media"
$Hostname = "xmc-perficient-introduction-158.sitecorecloud.io"
# First, obtain TWT using authorized data from user.json
$JWT = .\Request-Token.ps1
# Next, get the upload URL from Authoring GraphQL endpoint
@MartinMiles
MartinMiles / Create-ItemXmCloud.ps1
Last active April 29, 2025 09:31
SPE snipped to return items from MASTER database of my XM Cloud instance
$sql = @"
USE [Sitecore.Master];
-- Variables
DECLARE @NewItemId UNIQUEIDENTIFIER = NEWID();
DECLARE @ParentId UNIQUEIDENTIFIER = '{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}';
DECLARE @TemplateId UNIQUEIDENTIFIER = '{76036F5E-CBCE-46D1-AF0A-4143F9B557AA}'; -- Sample Item template
DECLARE @TextFieldId UNIQUEIDENTIFIER = '{A60ACD61-A6DB-4182-8329-C957982CEC74}'; -- YOUR CORRECT Text field ID
DECLARE @Now DATETIME = GETUTCDATE();
DECLARE @ItemName NVARCHAR(255) = 'FFF';