SEO - Beta: differenze tra le versioni
Nessun oggetto della modifica |
|||
| (5 versioni intermedie di 2 utenti non mostrate) | |||
| Riga 7: | Riga 7: | ||
Il '''file condiviso con le attività svolte''' è qua<br/> | Il '''file condiviso con le attività svolte''' è qua<br/> | ||
https://docs.google.com/spreadsheets/d/10sCcJpTcVsuqZmKAEwI-1TaaCGQAAqpCEJEp-eczQ74/edit?gid=0#gid=0 | https://docs.google.com/spreadsheets/d/10sCcJpTcVsuqZmKAEwI-1TaaCGQAAqpCEJEp-eczQ74/edit?gid=0#gid=0 | ||
La '''cartella condivisa con WolfAgency''' è qua<br/> | |||
https://drive.google.com/drive/folders/1uF09F6NIANQc8b2v-lT3l3_gzB7AbM9s | |||
==== Test 301 ==== | ==== Test 301 ==== | ||
| Riga 13: | Riga 16: | ||
Siccome saranno vecchi, per rigenerarli è necessario eseguire la seguente query: | Siccome saranno vecchi, per rigenerarli è necessario eseguire la seguente query: | ||
<div class="mw-collapsible mw-collapsed" style="border:solid 1px;padding:2rem;"> | |||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
USE DesignbestCore | USE DesignbestCore | ||
| Riga 319: | Riga 323: | ||
ORDER BY Region.[SeoName],Province.[SeoName] | ORDER BY Region.[SeoName],Province.[SeoName] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</div> | |||
==== Pulizia URL ==== | |||
Quando il progetto andrà in produzione dovrà essere lanciata la seguente query che pulisce tutti i nomi, rigenera le tabelle di supporto e modifica le SeoRules | |||
<div class="mw-collapsible mw-collapsed" style="border:solid 1px;padding:2rem;"> | |||
<syntaxhighlight lang="sql"> | |||
BEGIN TRAN | |||
/******************************************************** | |||
**************** PRODOTTI | |||
****/ | |||
UPDATE [Product] SET SeoName = LOWER(dbo.TOSEONAME([Name], '-')) | |||
UPDATE LocalizedProperty | |||
SET LocaleValue = A.SeoName | |||
FROM ( | |||
SELECT EntityId AS EntityID, LOWER(dbo.TOSEONAME(LocaleValue, '-')) AS SeoName, LanguageID | |||
FROM LocalizedProperty | |||
WHERE LocalizedProperty.LocaleKeyGroup = 'Product' | |||
AND LocalizedProperty.LocaleKey = 'Name' | |||
) AS A | |||
WHERE LocalizedProperty.EntityId = A.EntityID | |||
AND LocalizedProperty.LanguageId = A.LanguageID | |||
AND LocalizedProperty.LocaleKeyGroup = 'Product' | |||
AND LocalizedProperty.LocaleKey = 'SeoName' | |||
SELECT TOP 1000 EntityId AS ProductID, LocaleValue AS SeoName, LanguageID | |||
FROM LocalizedProperty | |||
WHERE LocalizedProperty.LocaleKeyGroup = 'Product' | |||
AND LocalizedProperty.LocaleKey = 'SeoName' | |||
ORDER BY EntityId DESC, LanguageID | |||
------------------------------------------------------------------------------------- | |||
/******************************************************** | |||
**************** CATEGORIE | |||
****/ | |||
UPDATE Category SET SeoName = dbo.TOSEONAME([SeoName], '-') | |||
UPDATE LocalizedProperty | |||
SET LocaleValue = A.SeoName | |||
FROM ( | |||
SELECT EntityId AS EntityID, LOWER(dbo.TOSEONAME(LocaleValue, '-')) AS SeoName, LanguageID | |||
FROM LocalizedProperty | |||
WHERE LocalizedProperty.LocaleKeyGroup = 'Category' | |||
AND LocalizedProperty.LocaleKey = 'SeoName' | |||
) AS A | |||
WHERE LocalizedProperty.EntityId = A.EntityID | |||
AND LocalizedProperty.LanguageId = A.LanguageID | |||
AND LocalizedProperty.LocaleKeyGroup = 'Category' | |||
AND LocalizedProperty.LocaleKey = 'SeoName' | |||
SELECT TOP 1000 EntityId AS CategoryID, LocaleValue AS SeoName, LanguageID | |||
FROM LocalizedProperty | |||
WHERE LocalizedProperty.LocaleKeyGroup = 'Category' | |||
AND LocalizedProperty.LocaleKey = 'SeoName' | |||
ORDER BY EntityId DESC, LanguageID | |||
/******************************************************** | |||
**************** MANUFACTURERS | |||
****/ | |||
UPDATE Manufacturer SET SeoName = dbo.TOSEONAME([SeoName], '-') | |||
/******************************************************** | |||
**************** SHOP POINTS | |||
****/ | |||
UPDATE ShopPoint SET SeoName = dbo.TOSEONAME([SeoName], '-') | |||
/******************************************************** | |||
**************** REGIONI E PROVINCE | |||
****/ | |||
UPDATE Region SET SeoName = dbo.TOSEONAME([SeoName], '-') | |||
UPDATE Province SET SeoName = dbo.TOSEONAME([SeoName], '-') | |||
/******************************************************** | |||
**************** SEO RULES | |||
****/ | |||
UPDATE SeoRules SET [RegExp] = '^/chisiamo/?$' WHERE ID = 1 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/?$' WHERE ID = 2 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/novita/?$' WHERE ID = 3 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/brand/?$' WHERE ID = 4 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/negozi/?$' WHERE ID = 5 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/negozi/(.+)/?$' WHERE ID = 6 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/negozi/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/ispirazioni/?$' WHERE ID = 8 AND LanguageId = 1 | |||
UPDATE SeoRules SET [RegExp] = '^/en/whoweare/?$' WHERE ID = 1 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/?$' WHERE ID = 2 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/news/?$' WHERE ID = 3 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/brands/?$' WHERE ID = 4 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/stores/?$' WHERE ID = 5 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/stores/(.+)/?$' WHERE ID = 6 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/stores/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/en/inspirations/?$' WHERE ID = 8 AND LanguageId = 2 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/quisommesnous/?$' WHERE ID = 1 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/?$' WHERE ID = 2 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/nouveautes/?$' WHERE ID = 3 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/brands/?$' WHERE ID = 4 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/magasins/?$' WHERE ID = 5 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/magasins/(.+)/?$' WHERE ID = 6 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/magasins/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/fr/inspiration/?$' WHERE ID = 8 AND LanguageId = 3 | |||
UPDATE SeoRules SET [RegExp] = '^/de/ueberuns/?$' WHERE ID = 1 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/?$' WHERE ID = 2 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/news/?$' WHERE ID = 3 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/brands/?$' WHERE ID = 4 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/einrichtungshaeuser/?$' WHERE ID = 5 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/einrichtungshaeuser/(.+)/?$' WHERE ID = 6 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/einrichtungshaeuser/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 4 | |||
UPDATE SeoRules SET [RegExp] = '^/de/inspiration/?$' WHERE ID = 8 AND LanguageId = 4 | |||
/******************************************************** | |||
**************** TABELLE DI UTILS | |||
****/ | |||
EXEC Utility_ProductThumbsMerge | |||
-- Utility_ProductThumbsMerge_Ext | |||
DECLARE @TrovaprodottiID int | |||
DECLARE cur3 CURSOR FOR | |||
SELECT DISTINCT Context FROM DesignbestCore.dbo.Product_Ext | |||
OPEN cur3; | |||
FETCH NEXT FROM cur3 INTO @TrovaprodottiID | |||
WHILE @@FETCH_STATUS = 0 BEGIN | |||
EXEC DesignbestCore.dbo.Utility_ProductThumbsMerge_Ext @TrovaprodottiID, 1 | |||
EXEC DesignbestCore.dbo.FullText_Products_Update_Ext @TrovaprodottiID | |||
FETCH NEXT FROM cur3 INTO @TrovaprodottiID | |||
END | |||
CLOSE cur3; | |||
DEALLOCATE cur3; | |||
-- /Utility_ProductThumbsMerge_Ext | |||
COMMIT TRAN | |||
--SELECT DISTINCT LocaleKeyGroup, LocaleKey FROM LocalizedProperty ORDER BY LocaleKeyGroup, LocaleKey | |||
--SELECT * FROM LocalizedProperty WHERE EntityId = 6464 | |||
/*************************************************** | |||
************************** REMEMBER BEN ************* | |||
****************************************************** | |||
Le Store Procedure che escono da questa select | |||
*/ | |||
USE DesignbestCore | |||
SELECT DISTINCT | |||
o.name AS Object_Name, | |||
o.type_desc | |||
FROM sys.sql_modules m | |||
INNER JOIN | |||
sys.objects o | |||
ON m.object_id = o.object_id | |||
WHERE m.definition LIKE '%custom[_]manufacturer%' OR m.definition LIKE '%produzione[_]propria%' | |||
/* | |||
Devono modificare le loro occorrenze di 'custom_manufacturer' in 'custom-manufacturer' | |||
*/ | |||
</syntaxhighlight> | |||
</div> | |||
== Merge == | == Merge == | ||
| Riga 329: | Riga 501: | ||
* lasciare tutte le opzione e avviare il Merge. | * lasciare tutte le opzione e avviare il Merge. | ||
* Finito il merge bisogna verificare i file nuovi e fare un Commit. | * Finito il merge bisogna verificare i file nuovi e fare un Commit. | ||
== Sitemap == | |||
Il nuovo progetto implementa correttamente le sitemap a partire da https://beta.dbdemo47.com/robots.txt che è dinamico. | |||
Nell'attuale è un file statico. | |||
Versione attuale delle 13:30, 11 set 2025
Nuovo Sito x Seo
[modifica]Task in sospeso con Wolf Agency
[modifica]Il progetto è stato terminato a ottobre 2024 (vedi mail del 04/10/2024, 18:04).
Il file condiviso con le attività svolte è qua
https://docs.google.com/spreadsheets/d/10sCcJpTcVsuqZmKAEwI-1TaaCGQAAqpCEJEp-eczQ74/edit?gid=0#gid=0
La cartella condivisa con WolfAgency è qua
https://drive.google.com/drive/folders/1uF09F6NIANQc8b2v-lT3l3_gzB7AbM9s
Test 301
[modifica]Nel file delle attività vi è specificato che si doveva creare un elenco di url che sarebbero cambiate da dare in pasto ai test di Wolf Agency.
https://drive.google.com/drive/folders/1ZT1uI7PYfVJfRMY3oT0xsATvZMCZEpLb
Siccome saranno vecchi, per rigenerarli è necessario eseguire la seguente query:
USE DesignbestCore
DECLARE @LanguageID INT = 1
DECLARE @Dominio VARCHAR(100) = 'https://beta.dbdemo47.com'
DECLARE @Lang VARCHAR(2) = CASE
WHEN @LanguageID = 1 THEN 'it'
WHEN @LanguageID = 2 THEN 'en'
WHEN @LanguageID = 3 THEN 'fr'
ELSE 'de'
END
DECLARE @Catalogo VARCHAR(20) = CASE
WHEN @LanguageID = 1 THEN 'catalogo'
WHEN @LanguageID = 2 THEN 'catalog'
WHEN @LanguageID = 3 THEN 'catalogue'
ELSE 'katalog'
END
DECLARE @Prodotti VARCHAR(20) = CASE
WHEN @LanguageID = 1 THEN 'prodotti'
WHEN @LanguageID = 2 THEN 'products'
WHEN @LanguageID = 3 THEN 'produits'
ELSE 'produkte'
END
DECLARE @Novita VARCHAR(20) = CASE
WHEN @LanguageID = 1 THEN 'novita'
WHEN @LanguageID = 2 THEN 'news'
WHEN @LanguageID = 3 THEN 'nouveautes'
ELSE 'news'
END
DECLARE @ChiSiamo VARCHAR(20) = CASE
WHEN @LanguageID = 1 THEN 'chisiamo'
WHEN @LanguageID = 2 THEN 'whoweare'
WHEN @LanguageID = 3 THEN 'quisommesnous'
ELSE 'ueberuns'
END
DECLARE @Arredamento VARCHAR(20) = CASE
WHEN @LanguageID = 1 THEN 'arredamento'
WHEN @LanguageID = 2 THEN 'furniture'
WHEN @LanguageID = 3 THEN 'meubles'
ELSE 'moebel'
END
DECLARE @Negozi VARCHAR(20) = CASE
WHEN @LanguageID = 1 THEN 'negozi'
WHEN @LanguageID = 2 THEN 'stores'
WHEN @LanguageID = 3 THEN 'magasins'
ELSE 'einrichtungshaeuser'
END
--******************************
--********* Ambienti
SELECT DISTINCT
AmbientSeoLocale.LocaleValue AS AmbientSeoName,
@Dominio +
'/'+@Lang +
'/'+@Catalogo+
'/'+@Prodotti+
'/'+AmbientSeoLocale.LocaleValue AS Link
FROM Category as tipi
INNER JOIN [Category] as ambienti ON tipi.ParentCategoryId = ambienti.ID AND ambienti.CategoryLevel = 1
INNER JOIN LocalizedProperty as tipoSeoLocale ON tipi.ID = tipoSeoLocale.EntityId AND tipoSeoLocale.LanguageId = @LanguageId AND tipoSeoLocale.LocaleKeyGroup = 'Category' AND tipoSeoLocale.LocaleKey = 'SeoName'
INNER JOIN LocalizedProperty as AmbientSeoLocale ON ambienti.ID = AmbientSeoLocale.EntityId AND AmbientSeoLocale.LanguageId = @LanguageId AND AmbientSeoLocale.LocaleKeyGroup = 'Category' AND AmbientSeoLocale.LocaleKey = 'SeoName'
INNER JOIN LocalizedProperty as AmbientSeoIT ON ambienti.ID = AmbientSeoIT.EntityId AND AmbientSeoIT.LanguageId = 1 AND AmbientSeoIT.LocaleKeyGroup = 'Category' AND AmbientSeoIT.LocaleKey = 'SeoName'
WHERE tipi.Visible = 1 AND ambienti.Visible = 1
ORDER BY AmbientSeoLocale.LocaleValue--, tipoSeoLocale.LocaleValue
--******************************
--********* Ambienti-Tipologie
SELECT DISTINCT
AmbientSeoLocale.LocaleValue AS AmbientSeoName,
tipoSeoLocale.LocaleValue AS TypeSeoName,
@Dominio +
'/'+@Lang +
'/'+@Catalogo+
'/'+@Prodotti+
'/'+AmbientSeoLocale.LocaleValue+
'/'+tipoSeoLocale.LocaleValue AS Link
FROM Category as tipi
INNER JOIN [Category] as ambienti ON tipi.ParentCategoryId = ambienti.ID AND ambienti.CategoryLevel = 1
INNER JOIN LocalizedProperty as tipoSeoLocale ON tipi.ID = tipoSeoLocale.EntityId AND tipoSeoLocale.LanguageId = @LanguageId AND tipoSeoLocale.LocaleKeyGroup = 'Category' AND tipoSeoLocale.LocaleKey = 'SeoName'
INNER JOIN LocalizedProperty as AmbientSeoLocale ON ambienti.ID = AmbientSeoLocale.EntityId AND AmbientSeoLocale.LanguageId = @LanguageId AND AmbientSeoLocale.LocaleKeyGroup = 'Category' AND AmbientSeoLocale.LocaleKey = 'SeoName'
INNER JOIN LocalizedProperty as AmbientSeoIT ON ambienti.ID = AmbientSeoIT.EntityId AND AmbientSeoIT.LanguageId = 1 AND AmbientSeoIT.LocaleKeyGroup = 'Category' AND AmbientSeoIT.LocaleKey = 'SeoName'
WHERE tipi.Visible = 1 AND ambienti.Visible = 1
ORDER BY AmbientSeoLocale.LocaleValue, tipoSeoLocale.LocaleValue
--******************************
--********* Manufacturer
SELECT DISTINCT Manufacturer.SeoName,
@Dominio +
'/'+@Lang +
'/'+@Catalogo+
'/'+Manufacturer.SeoName AS Link
FROM Manufacturer
INNER JOIN ProductThumbs ON Manufacturer.ID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE Manufacturer.Visible = 1 AND ManufacturerContractTypeID < 4
ORDER BY Manufacturer.SeoName
-- Manu + Ambient (non più indicizzato)
SELECT DISTINCT Manufacturer.SeoName, ProductThumbs.AmbientSeoName,
@Dominio +
'/'+@Lang +
'/'+@Catalogo+
'/'+Manufacturer.SeoName +
'/' + ProductThumbs.AmbientSeoName AS Link
FROM Manufacturer
INNER JOIN ProductThumbs ON Manufacturer.ID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE Manufacturer.Visible = 1 AND ManufacturerContractTypeID < 4
ORDER BY Manufacturer.SeoName, ProductThumbs.AmbientSeoName
-- Manu + Ambient + Type (non più indicizzato)
SELECT DISTINCT Manufacturer.SeoName, ProductThumbs.AmbientSeoName, ProductThumbs.TypeSeoName,
@Dominio +
'/'+@Lang +
'/'+@Catalogo+
'/'+Manufacturer.SeoName +
'/' + ProductThumbs.AmbientSeoName +
'/' + ProductThumbs.TypeSeoName AS Link
FROM Manufacturer
INNER JOIN ProductThumbs ON Manufacturer.ID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE Manufacturer.Visible = 1 AND ManufacturerContractTypeID < 4
ORDER BY Manufacturer.SeoName, ProductThumbs.AmbientSeoName, ProductThumbs.TypeSeoName
--******************************
--********* Prodotti
SELECT ProductId as ID,
@Dominio +
'/'+@Lang +
'/'+@Catalogo +
'/'+ManufacturerSeoName +'/'+AmbientSeoName +
'/'+TypeSeoName +
'/'+ ProductSeoName +
'/'+ CONVERT(varchar(10), ProductId) AS Link
--ManufacturerSeoName, ProductSeoName as SeoName, Picture, LastUpdate
FROM ProductThumbs
WHERE LanguageId = @LanguageID AND DiscountPrice IS NULL
ORDER BY LastUpdate DESC
--******************************
--********* Negozi
SELECT
Region.[SeoName] as RegionSeoName
,Province.[SeoName] as ProvinceSeoName
,[ShopPoint].[ID] as ShopPointId
,[ShopPoint].[SeoName],
@Dominio +
'/'+@Lang +
'/pro/showroom' +
'/'+[ShopPoint].[SeoName] +
'/'+ CONVERT(varchar(10), [ShopPoint].[ID]) AS Link
FROM [ShopPoint]
INNER JOIN City ON [ShopPoint].[CityID] = City.ID
INNER JOIN Province ON City.ProvinceID = Province.ID
INNER JOIN Region ON Province.RegionID = Region.ID
WHERE [ShopPoint].[VisibilityTypeID] = 0 AND [ShopPoint].[Visible] = 1 AND City.LanguageID = @LanguageID AND Province.LanguageID = @LanguageID AND Region.LanguageID = @LanguageID
ORDER BY Region.[Name],Province.[Name],[ShopPoint].[Name]
-- Prodotti del Negozio
SELECT
Region.[SeoName] as RegionSeoName
,Province.[SeoName] as ProvinceSeoName
,[ShopPoint].[ID] as ShopPointId
,[ShopPoint].[SeoName],
@Dominio +
'/'+@Lang +
'/pro/showroom' +
'/'+[ShopPoint].[SeoName] +
'/'+ CONVERT(varchar(10), [ShopPoint].[ID]) +
'/'+@Catalogo AS Link
FROM [ShopPoint]
INNER JOIN City ON [ShopPoint].[CityID] = City.ID
INNER JOIN Province ON City.ProvinceID = Province.ID
INNER JOIN Region ON Province.RegionID = Region.ID
WHERE [ShopPoint].[VisibilityTypeID] = 0 AND [ShopPoint].[Visible] = 1 AND City.LanguageID = @LanguageID AND Province.LanguageID = @LanguageID AND Region.LanguageID = @LanguageID
ORDER BY Region.[Name],Province.[Name],[ShopPoint].[Name]
-- Prodotti del Negozio per ambiente (non più indicizzato)
SELECT DISTINCT
Region.[Name] as RegionName
,Province.[Name] as ProvinceName
,[ShopPoint].[ID] as ShopPointId
,[ShopPoint].[Name] AS ShopPointName, ProductThumbs.AmbientSeoName,
@Dominio +
'/'+@Lang +
'/pro/showroom' +
'/' + [ShopPoint].[SeoName] +
'/' + CONVERT(varchar(10), [ShopPoint].[ID]) +
'/' + @Catalogo +
'/' + ProductThumbs.AmbientSeoName AS Link
FROM [ShopPoint]
INNER JOIN City ON [ShopPoint].[CityID] = City.ID
INNER JOIN Province ON City.ProvinceID = Province.ID
INNER JOIN Region ON Province.RegionID = Region.ID
INNER JOIN Mapping_ShopPoint_Manufacturer ON ShopPoint.ID = Mapping_ShopPoint_Manufacturer.ShopPointID
INNER JOIN ProductThumbs ON Mapping_ShopPoint_Manufacturer.ManufacturerID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE [ShopPoint].[VisibilityTypeID] = 0 AND [ShopPoint].[Visible] = 1 AND City.LanguageID = @LanguageID AND Province.LanguageID = @LanguageID AND Region.LanguageID = @LanguageID
ORDER BY Region.[Name],Province.[Name],[ShopPoint].[Name], ProductThumbs.AmbientSeoName
-- Prodotti del Negozio per ambiente e tipologia (non più indicizzato)
SELECT DISTINCT
Region.[Name] as RegionName
,Province.[Name] as ProvinceName
,[ShopPoint].[ID] as ShopPointId
,[ShopPoint].[Name] AS ShopPointName, ProductThumbs.AmbientSeoName, ProductThumbs.TypeSeoName,
@Dominio +
'/'+@Lang +
'/pro/showroom' +
'/' + [ShopPoint].[SeoName] +
'/' + CONVERT(varchar(10), [ShopPoint].[ID]) +
'/' + @Catalogo +
'/' + ProductThumbs.AmbientSeoName +
'/' + ProductThumbs.TypeSeoName AS Link
FROM [ShopPoint]
INNER JOIN City ON [ShopPoint].[CityID] = City.ID
INNER JOIN Province ON City.ProvinceID = Province.ID
INNER JOIN Region ON Province.RegionID = Region.ID
INNER JOIN Mapping_ShopPoint_Manufacturer ON ShopPoint.ID = Mapping_ShopPoint_Manufacturer.ShopPointID
INNER JOIN ProductThumbs ON Mapping_ShopPoint_Manufacturer.ManufacturerID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE [ShopPoint].[VisibilityTypeID] = 0 AND [ShopPoint].[Visible] = 1 AND City.LanguageID = @LanguageID AND Province.LanguageID = @LanguageID AND Region.LanguageID = @LanguageID
ORDER BY Region.[Name],Province.[Name],[ShopPoint].[Name], ProductThumbs.AmbientSeoName, ProductThumbs.TypeSeoName
--******************************
--********* Pagine statiche
IF @Lang = 'it' BEGIN
SELECT @Dominio + '/' + @Lang + '/' + @Novita AS Link
UNION
SELECT @Dominio + '/' + @Lang + '/info/' + @ChiSiamo
UNION
SELECT @Dominio + '/' + @Lang + '/occasioni-design'
UNION
SELECT @Dominio + '/'+@Lang + '/'+ @Arredamento
UNION
SELECT @Dominio + '/'+@Lang + '/pro/'+ @Negozi
END
ELSE BEGIN
SELECT @Dominio + '/' + @Lang + '/' + @Novita AS Link
UNION
SELECT @Dominio + '/' + @Lang + '/info/' + @ChiSiamo
UNION
SELECT @Dominio + '/'+@Lang + '/'+ @Arredamento
UNION
SELECT @Dominio + '/'+@Lang + '/pro/'+ @Negozi
END
--******************************
--********* Percorso Manufacturer
-- ambiente (non più indicizzate)
SELECT DISTINCT ProductThumbs.AmbientSeoName,
@Dominio +
'/'+@Lang +
'/'+@Arredamento+
'/' + ProductThumbs.AmbientSeoName AS Link
FROM Manufacturer
INNER JOIN ProductThumbs ON Manufacturer.ID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE Manufacturer.Visible = 1 AND ManufacturerContractTypeID < 4
ORDER BY ProductThumbs.AmbientSeoName
-- ambiente + type (non più indicizzate)
SELECT DISTINCT ProductThumbs.AmbientSeoName, ProductThumbs.TypeSeoName,
@Dominio +
'/'+@Lang +
'/'+@Arredamento+
'/' + ProductThumbs.AmbientSeoName +
'/' + ProductThumbs.TypeSeoName AS Link
FROM Manufacturer
INNER JOIN ProductThumbs ON Manufacturer.ID = ProductThumbs.ManufacturerId AND ProductThumbs.LanguageId = @LanguageID
WHERE Manufacturer.Visible = 1 AND ManufacturerContractTypeID < 4
ORDER BY ProductThumbs.AmbientSeoName, ProductThumbs.TypeSeoName
--******************************
--********* Percorso Negozi
-- Regione
SELECT DISTINCT
Region.[SeoName] as RegionSeoName,
@Dominio +
'/'+@Lang +
'/pro' +
'/'+@Negozi +
'/'+ Region.[SeoName] AS Link
FROM [ShopPoint]
INNER JOIN City ON [ShopPoint].[CityID] = City.ID
INNER JOIN Province ON City.ProvinceID = Province.ID
INNER JOIN Region ON Province.RegionID = Region.ID
WHERE [ShopPoint].[VisibilityTypeID] = 0 AND [ShopPoint].[Visible] = 1 AND City.LanguageID = @LanguageID AND Province.LanguageID = @LanguageID AND Region.LanguageID = @LanguageID
ORDER BY Region.[SeoName]
-- Regione + provincia
SELECT DISTINCT
Region.[SeoName] as RegionSeoName
,Province.[SeoName] as ProvinceSeoName ,
@Dominio +
'/'+@Lang +
'/pro' +
'/'+@Negozi +
'/'+ Region.[SeoName] +
'/'+Province.[SeoName] AS Link
FROM [ShopPoint]
INNER JOIN City ON [ShopPoint].[CityID] = City.ID
INNER JOIN Province ON City.ProvinceID = Province.ID
INNER JOIN Region ON Province.RegionID = Region.ID
WHERE [ShopPoint].[VisibilityTypeID] = 0 AND [ShopPoint].[Visible] = 1 AND City.LanguageID = @LanguageID AND Province.LanguageID = @LanguageID AND Region.LanguageID = @LanguageID
ORDER BY Region.[SeoName],Province.[SeoName]
Pulizia URL
[modifica]Quando il progetto andrà in produzione dovrà essere lanciata la seguente query che pulisce tutti i nomi, rigenera le tabelle di supporto e modifica le SeoRules
BEGIN TRAN
/********************************************************
**************** PRODOTTI
****/
UPDATE [Product] SET SeoName = LOWER(dbo.TOSEONAME([Name], '-'))
UPDATE LocalizedProperty
SET LocaleValue = A.SeoName
FROM (
SELECT EntityId AS EntityID, LOWER(dbo.TOSEONAME(LocaleValue, '-')) AS SeoName, LanguageID
FROM LocalizedProperty
WHERE LocalizedProperty.LocaleKeyGroup = 'Product'
AND LocalizedProperty.LocaleKey = 'Name'
) AS A
WHERE LocalizedProperty.EntityId = A.EntityID
AND LocalizedProperty.LanguageId = A.LanguageID
AND LocalizedProperty.LocaleKeyGroup = 'Product'
AND LocalizedProperty.LocaleKey = 'SeoName'
SELECT TOP 1000 EntityId AS ProductID, LocaleValue AS SeoName, LanguageID
FROM LocalizedProperty
WHERE LocalizedProperty.LocaleKeyGroup = 'Product'
AND LocalizedProperty.LocaleKey = 'SeoName'
ORDER BY EntityId DESC, LanguageID
-------------------------------------------------------------------------------------
/********************************************************
**************** CATEGORIE
****/
UPDATE Category SET SeoName = dbo.TOSEONAME([SeoName], '-')
UPDATE LocalizedProperty
SET LocaleValue = A.SeoName
FROM (
SELECT EntityId AS EntityID, LOWER(dbo.TOSEONAME(LocaleValue, '-')) AS SeoName, LanguageID
FROM LocalizedProperty
WHERE LocalizedProperty.LocaleKeyGroup = 'Category'
AND LocalizedProperty.LocaleKey = 'SeoName'
) AS A
WHERE LocalizedProperty.EntityId = A.EntityID
AND LocalizedProperty.LanguageId = A.LanguageID
AND LocalizedProperty.LocaleKeyGroup = 'Category'
AND LocalizedProperty.LocaleKey = 'SeoName'
SELECT TOP 1000 EntityId AS CategoryID, LocaleValue AS SeoName, LanguageID
FROM LocalizedProperty
WHERE LocalizedProperty.LocaleKeyGroup = 'Category'
AND LocalizedProperty.LocaleKey = 'SeoName'
ORDER BY EntityId DESC, LanguageID
/********************************************************
**************** MANUFACTURERS
****/
UPDATE Manufacturer SET SeoName = dbo.TOSEONAME([SeoName], '-')
/********************************************************
**************** SHOP POINTS
****/
UPDATE ShopPoint SET SeoName = dbo.TOSEONAME([SeoName], '-')
/********************************************************
**************** REGIONI E PROVINCE
****/
UPDATE Region SET SeoName = dbo.TOSEONAME([SeoName], '-')
UPDATE Province SET SeoName = dbo.TOSEONAME([SeoName], '-')
/********************************************************
**************** SEO RULES
****/
UPDATE SeoRules SET [RegExp] = '^/chisiamo/?$' WHERE ID = 1 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/?$' WHERE ID = 2 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/novita/?$' WHERE ID = 3 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/brand/?$' WHERE ID = 4 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/negozi/?$' WHERE ID = 5 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/negozi/(.+)/?$' WHERE ID = 6 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/negozi/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/ispirazioni/?$' WHERE ID = 8 AND LanguageId = 1
UPDATE SeoRules SET [RegExp] = '^/en/whoweare/?$' WHERE ID = 1 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/?$' WHERE ID = 2 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/news/?$' WHERE ID = 3 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/brands/?$' WHERE ID = 4 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/stores/?$' WHERE ID = 5 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/stores/(.+)/?$' WHERE ID = 6 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/stores/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/en/inspirations/?$' WHERE ID = 8 AND LanguageId = 2
UPDATE SeoRules SET [RegExp] = '^/fr/quisommesnous/?$' WHERE ID = 1 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/?$' WHERE ID = 2 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/nouveautes/?$' WHERE ID = 3 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/brands/?$' WHERE ID = 4 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/magasins/?$' WHERE ID = 5 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/magasins/(.+)/?$' WHERE ID = 6 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/magasins/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/fr/inspiration/?$' WHERE ID = 8 AND LanguageId = 3
UPDATE SeoRules SET [RegExp] = '^/de/ueberuns/?$' WHERE ID = 1 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/?$' WHERE ID = 2 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/news/?$' WHERE ID = 3 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/brands/?$' WHERE ID = 4 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/einrichtungshaeuser/?$' WHERE ID = 5 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/einrichtungshaeuser/(.+)/?$' WHERE ID = 6 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/einrichtungshaeuser/(.+)/(.+)/?$' WHERE ID = 7 AND LanguageId = 4
UPDATE SeoRules SET [RegExp] = '^/de/inspiration/?$' WHERE ID = 8 AND LanguageId = 4
/********************************************************
**************** TABELLE DI UTILS
****/
EXEC Utility_ProductThumbsMerge
-- Utility_ProductThumbsMerge_Ext
DECLARE @TrovaprodottiID int
DECLARE cur3 CURSOR FOR
SELECT DISTINCT Context FROM DesignbestCore.dbo.Product_Ext
OPEN cur3;
FETCH NEXT FROM cur3 INTO @TrovaprodottiID
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC DesignbestCore.dbo.Utility_ProductThumbsMerge_Ext @TrovaprodottiID, 1
EXEC DesignbestCore.dbo.FullText_Products_Update_Ext @TrovaprodottiID
FETCH NEXT FROM cur3 INTO @TrovaprodottiID
END
CLOSE cur3;
DEALLOCATE cur3;
-- /Utility_ProductThumbsMerge_Ext
COMMIT TRAN
--SELECT DISTINCT LocaleKeyGroup, LocaleKey FROM LocalizedProperty ORDER BY LocaleKeyGroup, LocaleKey
--SELECT * FROM LocalizedProperty WHERE EntityId = 6464
/***************************************************
************************** REMEMBER BEN *************
******************************************************
Le Store Procedure che escono da questa select
*/
USE DesignbestCore
SELECT DISTINCT
o.name AS Object_Name,
o.type_desc
FROM sys.sql_modules m
INNER JOIN
sys.objects o
ON m.object_id = o.object_id
WHERE m.definition LIKE '%custom[_]manufacturer%' OR m.definition LIKE '%produzione[_]propria%'
/*
Devono modificare le loro occorrenze di 'custom_manufacturer' in 'custom-manufacturer'
*/
Merge
[modifica]Nel caso di modifiche dell'attuale designbest su trunk, entro nel branche e:
- Update del progetto nel branche
- Tortoise->merge
- Merge a range of revisions
- controllare che url sia
https://svn.office.webmobili.it/svn/Designbest/trunk/Designbeste- spuntare All Revisions
- lasciare tutte le opzione e avviare il Merge.
- Finito il merge bisogna verificare i file nuovi e fare un Commit.
Sitemap
[modifica]Il nuovo progetto implementa correttamente le sitemap a partire da https://beta.dbdemo47.com/robots.txt che è dinamico.
Nell'attuale è un file statico.