Tôi đã cố gắng xuất bản các mục thông qua mã đã được thay đổi trong trình soạn thảo Sitecore. Nếu tôi cập nhật các giá trị trường một cách có lập trình và xuất bản những thay đổi đó, nó sẽ hoạt động tốt.Cách xuất bản các mục Sitecore theo chương trình đã được cập nhật bằng cách sử dụng trình soạn thảo
Trình chỉnh sửa quản lý nội dung của chúng tôi thường xuyên thực hiện các thay đổi trong trình chỉnh sửa mà không nhất thiết phải xuất bản chúng. Chúng tôi muốn cung cấp cho họ chức năng để nhấp vào một nút xuất bản tất cả các thay đổi có liên quan và xóa bộ nhớ cache Sitecore.
Tôi không muốn xuất bản toàn bộ trang web, chỉ một số mục được xác định trước.
Hiện tại chúng tôi đang sử dụng Sitecore.NET 6.4.1 (rev. 110720). Tôi không có khả năng cập nhật Sitecore.
tôi đã cố gắng các tùy chọn này:
Lựa chọn 1: instantiating một đối tượng xuất bản mới
Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Database web = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Publishing.PublishOptions publishOptions = new Sitecore.Publishing.PublishOptions(master,
web,
Sitecore.Publishing.PublishMode.SingleItem,
item.Language,
System.DateTime.Now);
Sitecore.Publishing.Publisher publisher = new Sitecore.Publishing.Publisher(publishOptions);
publisher.Options.RootItem = item;
publisher.Options.Deep = true;
publisher.Publish();
Lựa chọn 2: sử dụng publishmanager tĩnh
Database db = Sitecore.Configuration.Factory.GetDatabase("web");
Database[] databases = new Database[1] { db };
Sitecore.Handle publishHandle = Sitecore.Publishing.PublishManager.PublishItem(item, databases, db.Languages, true, false);
Cả hai phương pháp là bọc trong một tuyên bố sử dụng để sử dụng cùng một ccount được sử dụng bởi các biên tập viên quản lý nội dung.
string domainUser = @"sitecore\admin";
if (Sitecore.Security.Accounts.User.Exists(domainUser))
{
Sitecore.Security.Accounts.User user =
Sitecore.Security.Accounts.User.FromName(domainUser, false);
using (new Sitecore.Security.Accounts.UserSwitcher(user))
{
// publish code ...
}
}
Các bản ghi không hiển thị bất cứ điều gì đáng chú ý như xa như tôi có thể nói
ManagedPoolThread #7 13:41:46 INFO Job started: Publish to 'web'
ManagedPoolThread #7 13:41:46 INFO HtmlCacheClearer clearing HTML caches for all sites (5).
ManagedPoolThread #7 13:41:46 INFO HtmlCacheClearer done.
ManagedPoolThread #7 13:41:46 INFO Job ended: Publish to 'web' (units processed: 2)
ManagedPoolThread #5 13:41:46 INFO Job ended: Publish (units processed:)
Đó là definetely không phải là một vấn đề bộ nhớ đệm, bởi vì khi xuất bản bằng tay trong trình soạn thảo trước khi thanh toán bù trừ bộ nhớ cache theo chương trình, các thay đổi được hiển thị trong mã.
Vì vậy, tôi đang tìm cách để xuất bản một cách lập trình danh sách các mục được cập nhật định sẵn, bỏ qua cách chỉnh sửa đã được thực hiện.
Trong tùy chọn2 của bạn (người xuất bản), bạn đang xuất bản lên cơ sở dữ liệu chính. Bạn có thể thử cái đó với cơ sở dữ liệu web làm đích không? Ngoài ra, hãy chắc chắn rằng bạn đang sử dụng đúng ngữ cảnh cơ sở dữ liệu (có thể sử dụng trình chuyển đổi db để làm chủ db). – Gatogordo
dường như không hoạt động. Tôi đã thêm một DatabaseSwitcher và thay đổi cơ sở dữ liệu thành web, cũng đã thử theo cách khác. – redrobot
Tôi sử dụng tùy chọn 2, bạn có thể cập nhật mã trong câu hỏi với web không ?, Khác Mục tiêu xuất bản không phải lúc nào cũng là "web", tốt hơn không sử dụng mã này, 2) Nếu phụ huynh không tồn tại trong cơ sở dữ liệu web, mục này sẽ không được xuất bản –