Here are some notes on how I had to customize ETP 1 to do what we needed on the openacs.org migration to OpenACS 4.5. These things should be fixed for ETP 2.
Enabling search: I created a new content_type etp_page_revision and assigned that as the content_type for the default application. We used this content type for every ETP page, so I only had to implement search service contracts for this one content_type.
Working with subsites:
If you have already mounted ETP at a URL and then decided you need to make it a subsite, first unmount the ETP package instance. After you are done creating the subsite, you will need to set the parent_id of the ETP items to the new folder_id you will create.
Steps
Now in openacs-4/www/ create a directory with the same name as the subsite. Copy symlink packages/edit-this-page/www/index.vuh into this new folder
Visit http://yoursite.com/subsite/ and ETP should create an index page for you.
Add permissions for any subsite admins.
---- rewriting this above to actually make sense ---- We wanted to use subsites to organize content. In its basic install, ETP 1 makes ETP instances and pages off the main subsite / children of the -100 content folder. Subsites added through the site map do not get their own content folder. So I created a content-folder with package_id set to the package_id of the acs-subsite instance. I had to content_folder__register_content_type(folder_id,'content_item','t') to allow folders and content items to be added to this folder. Because we had ETP instances that we created prior to adding a subsite their folders were assigned the wrong parent_id. I used content_folder__move(folder_id, move_to_folder_id) to move them underneath the new folder assigned to the acs-subsite. I also had to unmount the ETP instances and remount them in the proper location.
You can not name pages etp*. The index.vuh captures all these requests to redirect to the admin pages.
etp::get_content_items query does a cr_items left join cr_revisions on (cr_items.live_revision=cr_revisions.revision_id) which can return items where there is NO live revision. This is not an issue in etp1 because you can not unpublish and item without deleting it. I want show live revisions on the public page, but show all items on the admin pages, so I can work on a draft before publishing.