Skip to main content

Quick Note: การทำ Cross-site collection Publishing

Submitted by ezybzy on

วิธีทำมีมากมายแต่ตัวที่แนะนำให้อ่านคือซีรีย์ How to set up a product-centric website in SharePoint Server 2013 ซึ่งก็ผ่านด้วยดี

แต่ก็พบจุดที่มีปัญหาทั้งบน Publishing Site และ Product Catalog หากมีการเปลี่ยนแปลง Region จะสามารถทำการ Connect ในเมนู Manage catalog connections โดยจะเจอ Error ประหลาดที่ไม่สื่อความหมายใดเลย ประมาณว่า

The value must be at most 64 characters long. Parameter name: Name

ดูไปดูมันก็คล้าย ๆ Exception ที่เกิดจาก LINQ นะ แต่นั่ง Refactor อยู่นานก็หาเหตุผลไม่ได้ว่าทำไม ก่อนหน้าประโยคนี้ใน ULS ก็มีการล็อคข้อความไว้อีกอย่างซึ่งก็ไม่ได้มีข้อบ่งชี้ใดเป็นพิเศษให้หาเจอว่ามาจากไหน ก็เลยทำการลบ Site Collection ทำใหม่โดยไม่เปลี่ยน Region หลังจากนั้นทุกอย่างก็ใช้ได้เป็นปรกติ

เมื่อทำการเชื่อมต่อ Catalog เข้ากับ Publishing Site ของเราแล้ว ระบบจะสร้างหน้าเว็บให้ 2 หน้า (และ Page Layout ของแต่ละหน้า) คือหน้า Catalog เอาไว้แสดงรายการสินค้าหลาย ๆ รายการ และ Catalog Item ไว้แสดงรายละเอียดสินค้าทีละรายการ ตัวอย่างที่พบเห็นทั่วไปมักจะสอนการปรับแต่ง Content Search Web Part กัน อันนี้ก็ไม่ได้ยากเย็นอะไรมากมาย เราต้องแก้ไข Control Template และ Item Template (อยู่ใน _catalogs/Display Templates/Content Web Parts) วิธีการลองอ่านย้อนจาก Stage 11 ในชุดบทความข้างต้นได้

ที่ดูจะมีปัญหาจริง คือหน้า Catalog Item ซึ่งถ้าจะลองดุ่ย ๆ จากหน้าตา SharePoint เลยอาจจะเดาไม่ออกว่าต้องไปแก้ที่ใด จริง ๆ แล้วเราสามารถใช้ SharePoint Designer เข้าไปแก้ Page Layout ของ Catalog Item ได้เลย โดยความเปลี่ยนแปลงที่ต่างไปจาก 2010 ก็คือ ใน 2013 นี้ ระบบสามารถสร้าง Page Layout (ไฟล์ .aspx) ได้จากไฟล์ HTML ที่ชื่อเหมือนกัน (ที่ทำเช่นนี้สามารถนำไปประยุกต์กับการทำ Master Page ได้ด้วย ดูรายละเอียดเพิ่มเติมเรื่อง Design Manager) ทำให้ Designer สามารถใช้ Web Editor ที่ชื่นชอบในการออกแบบหน้าเว็บได้โดยอิสระจากนักพัฒนา เพียงแต่ความยากในเรื่องนี้คือ การที่ Designer จำเป็นต้องใส่ Markup เฉพาะ เพื่อให้ตัว Design Manager สามารถอ่านไฟล์ HTML แล้วแปลงเป็น Page Layout ที่ถูกต้องได้ รายละเอียดตรงนี้สามารถดูได้จาก How to: Create a page layout in SharePoint 2013 และ SharePoint 2013 Design Manager snippets

สำหรับมือใหม่อาจจะงง ว่าแล้วเราจะทราบได้อย่างไรว่าต้องใช้ Markup ใด คำตอบคือ คงต้องผสมระหว่าง Snippet ที่สามารถใช้ Design Manager (ทำงานผ่านหน้าเว็บ) ช่วยสร้าง (มันจะสร้างเป็น code มาให้เรานำไปแปะใน Web Editor ได้เลย) และอาจจะต้องดัดแปลงจาก Page Layout ที่มันสร้างให้ เพราะเอาเข้าจริง code สำเร็จรูปนั้นก็เยอะเกินไป ต้องลดทอนลงมาพอสมควร

เมื่อแก้ไขหน้าเสร็จแล้วก็อย่าลืมนำ url ของหน้าเว็บที่ใช้งาน Page Layout ข้างต้นกลับไปผูกกับ Terms ใน Managed Metadata ของ Catalog ด้วย เพื่อให้ Navigation ของไซต์กดใช้งานได้

Tags