scriptorium 0.0.3 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.lt3 +324 -0
- data/README.md +3155 -1
- data/assets/.DS_Store +0 -0
- data/assets/README.md +44 -0
- data/assets/back-icon.png +0 -0
- data/assets/icons/facebook.svg +1 -0
- data/assets/icons/github.svg +1 -0
- data/assets/icons/instagram.svg +1 -0
- data/assets/icons/reddit.svg +1 -0
- data/assets/icons/ui/.DS_Store +0 -0
- data/assets/icons/ui/back.png +0 -0
- data/assets/icons/ui/copy.png +0 -0
- data/assets/icons/ui/down.png +0 -0
- data/assets/icons/ui/end.png +0 -0
- data/assets/icons/ui/exit.png +0 -0
- data/assets/icons/ui/foo +10 -0
- data/assets/icons/ui/home.png +0 -0
- data/assets/icons/ui/left.png +0 -0
- data/assets/icons/ui/next.png +0 -0
- data/assets/icons/ui/right.png +0 -0
- data/assets/icons/ui/start.png +0 -0
- data/assets/icons/ui/up.png +0 -0
- data/assets/icons/x.svg +1 -0
- data/assets/icons/youtube.svg +1 -0
- data/assets/samples/placeholder.svg +9 -0
- data/assets/themes/standard/favicon.svg +6 -0
- data/bin/scriptorium +1511 -0
- data/doc/README.txt +6 -0
- data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +95 -0
- data/doc/anti-amnesia/20250727-060000-api-design-tui-planning.md +34 -0
- data/doc/anti-amnesia/20250727-061000-runeblog-tui-analysis.md +50 -0
- data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +31 -0
- data/doc/anti-amnesia/20250727-154000-livetext-plugin-file-stats.md +73 -0
- data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +64 -0
- data/doc/anti-amnesia/20250727-172600-unified-minitest-framework.md +70 -0
- data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +40 -0
- data/doc/anti-amnesia/20250727-173000-widget-testing-achievement.md +110 -0
- data/doc/anti-amnesia/20250727-180000-post-id-num-refactoring.md +73 -0
- data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +46 -0
- data/doc/anti-amnesia/20250728-124421-conversation-summary-concise.md +124 -0
- data/doc/anti-amnesia/20250729-190000-scriptorium-tui-testing-complete.md +46 -0
- data/doc/anti-amnesia/20250729-200000-scriptorium-tui-testing-edit-file-workflow.md +97 -0
- data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +158 -0
- data/doc/anti-amnesia/20250729-211500-dependency-management-system.md +211 -0
- data/doc/anti-amnesia/20250729-213000-python-virtual-environment-setup.md +141 -0
- data/doc/anti-amnesia/20250729-214500-theme-management-commands.md +211 -0
- data/doc/anti-amnesia/20250729-215000-version-update-to-0.6.0.md +134 -0
- data/doc/anti-amnesia/20250729-220000-user-guide-complete.md +41 -0
- data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +45 -0
- data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +30 -0
- data/doc/anti-amnesia/20250804-213700-publishing-test-fix.md +49 -0
- data/doc/anti-amnesia/20250804-214400-additional-test-fixes.md +46 -0
- data/doc/anti-amnesia/20250804-220000-asset-function-logic-clarification.md +41 -0
- data/doc/anti-amnesia/20250806-202032-asset-function-logic-clarification.md +41 -0
- data/doc/anti-amnesia/20250807-213025.md +116 -0
- data/doc/anti-amnesia/20250813-082428-syntax-highlighting-and-navigation-improvements.md +256 -0
- data/doc/banner_svg_config.md +114 -0
- data/doc/contrib.lt3 +8 -0
- data/doc/dependencies.md +281 -0
- data/doc/hacker.lt3 +5 -0
- data/doc/reddit_credentials_template.json +8 -0
- data/doc/reddit_integration.md +207 -0
- data/doc/user.lt3 +38 -0
- data/doc/user_guide_section_1.md +137 -0
- data/doc/user_guide_section_10.md +515 -0
- data/doc/user_guide_section_11.md +708 -0
- data/doc/user_guide_section_2.md +233 -0
- data/doc/user_guide_section_3.md +5 -0
- data/doc/user_guide_section_4.md +221 -0
- data/doc/user_guide_section_5.md +243 -0
- data/doc/user_guide_section_6.md +147 -0
- data/doc/user_guide_section_7.md +311 -0
- data/doc/user_guide_section_8.md +224 -0
- data/doc/user_guide_section_9.md +375 -0
- data/doc/userdoc-toc.txt +88 -0
- data/lib/rouge/lexers/livetext.rb +74 -0
- data/lib/scriptorium/api.rb +640 -0
- data/lib/scriptorium/banner_svg.rb +742 -0
- data/lib/scriptorium/contract.rb +33 -0
- data/lib/scriptorium/exceptions.rb +170 -1
- data/lib/scriptorium/helpers.rb +475 -0
- data/lib/scriptorium/post.rb +195 -0
- data/lib/scriptorium/reddit.rb +83 -0
- data/lib/scriptorium/repo.rb +624 -0
- data/lib/scriptorium/standard_files.rb +515 -0
- data/lib/scriptorium/syntax_highlighter.rb +234 -0
- data/lib/scriptorium/theme.rb +179 -0
- data/lib/scriptorium/version.rb +2 -2
- data/lib/scriptorium/view.rb +976 -0
- data/lib/scriptorium/widgets/featured_posts.rb +149 -0
- data/lib/scriptorium/widgets/links.rb +112 -0
- data/lib/scriptorium/widgets/pages.rb +133 -0
- data/lib/scriptorium/widgets/widget.rb +133 -0
- data/lib/scriptorium.rb +21 -40
- data/lib/skeleton.rb +8 -2
- data/scriptorium.gemspec +15 -4
- data/test/README.md +69 -0
- data/test/all +43 -0
- data/test/api_demo.rb +99 -0
- data/test/assets/imagenotfound.jpg +0 -0
- data/test/assets/images/.DS_Store +0 -0
- data/test/assets/images/README.md +27 -0
- data/test/assets/images/odd_aspect.png +0 -0
- data/test/assets/images/perfect.png +0 -0
- data/test/assets/images/small.png +0 -0
- data/test/assets/images/tall.png +0 -0
- data/test/assets/images/very_tall.png +0 -0
- data/test/assets/images/very_wide.png +0 -0
- data/test/assets/images/wide.png +0 -0
- data/test/assets/testbanner.jpg +0 -0
- data/test/banner_svg/simple_helpers.rb +13 -0
- data/test/banner_svg/unit.rb +768 -0
- data/test/ed_test.rb +204 -0
- data/test/integration/cursor_banner_combinations.rb +193 -0
- data/test/integration/cursor_banner_features.rb +374 -0
- data/test/integration/integration_test.rb +326 -0
- data/test/livetext_plugin_test.rb +229 -0
- data/test/manual/asset_mgmt.rb +67 -0
- data/test/manual/banner-tests/config.txt +3 -0
- data/test/manual/banner-tests/index.html +45 -0
- data/test/manual/banner-tests/test01.html +58 -0
- data/test/manual/banner-tests/test02.html +58 -0
- data/test/manual/banner-tests/test03.html +58 -0
- data/test/manual/banner-tests/test04.html +65 -0
- data/test/manual/banner-tests/test05.html +65 -0
- data/test/manual/banner-tests/test06.html +65 -0
- data/test/manual/banner-tests/test07.html +65 -0
- data/test/manual/banner-tests/test08.html +59 -0
- data/test/manual/banner-tests/test09.html +59 -0
- data/test/manual/banner-tests/test10.html +59 -0
- data/test/manual/banner-tests/test11.html +59 -0
- data/test/manual/banner-tests/test12.html +59 -0
- data/test/manual/banner-tests/test13.html +59 -0
- data/test/manual/banner-tests/test14.html +59 -0
- data/test/manual/banner-tests/test15.html +58 -0
- data/test/manual/banner-tests/test16.html +58 -0
- data/test/manual/banner-tests/test17.html +58 -0
- data/test/manual/banner-tests/test18.html +68 -0
- data/test/manual/banner-tests/test19.html +68 -0
- data/test/manual/banner-tests/test20.html +68 -0
- data/test/manual/banner-tests/test21.html +68 -0
- data/test/manual/banner-tests/test22.html +68 -0
- data/test/manual/banner-tests/test23.html +68 -0
- data/test/manual/banner-tests/test24.html +68 -0
- data/test/manual/banner-tests/test25.html +67 -0
- data/test/manual/banner_environment.rb +192 -0
- data/test/manual/deploy_symlink_demo.rb +142 -0
- data/test/manual/environment.rb +67 -0
- data/test/manual/make_banner.rb +153 -0
- data/test/manual/sample_banner_config.txt +12 -0
- data/test/manual/symlink_demo.rb +117 -0
- data/test/manual/test1.rb +47 -0
- data/test/manual/test2.rb +12 -0
- data/test/manual/test3.rb +38 -0
- data/test/manual/test4.rb +40 -0
- data/test/manual/test5.rb +24 -0
- data/test/manual/test6.rb +73 -0
- data/test/manual/test_banner_combinations.rb +120 -0
- data/test/manual/test_banner_features.rb +306 -0
- data/test/manual/test_banner_from_file.rb +150 -0
- data/test/manual/test_banner_in_header.rb +35 -0
- data/test/manual/test_code_highlighting.rb +68 -0
- data/test/manual/test_complex_header.rb +74 -0
- data/test/manual/test_empty_header.rb +32 -0
- data/test/manual/test_radial_custom.rb +58 -0
- data/test/manual/test_radial_large_radius.rb +52 -0
- data/test/manual/test_svg_debug.rb +47 -0
- data/test/manual/test_syntax_highlighting.rb +147 -0
- data/test/pages-demo/config/currentview.txt +1 -0
- data/test/pages-demo/views/demo/config/bootstrap_css.txt +5 -0
- data/test/pages-demo/views/demo/config/bootstrap_js.txt +4 -0
- data/test/pages-demo/views/demo/config/common.js +57 -0
- data/test/pages-demo/views/demo/config/footer.txt +1 -0
- data/test/pages-demo/views/demo/config/global-head.txt +8 -0
- data/test/pages-demo/views/demo/config/header.txt +1 -0
- data/test/pages-demo/views/demo/config/layout.txt +1 -0
- data/test/pages-demo/views/demo/config/left.txt +1 -0
- data/test/pages-demo/views/demo/config/main.txt +1 -0
- data/test/pages-demo/views/demo/config/right.txt +1 -0
- data/test/pages-demo/views/demo/config.txt +3 -0
- data/test/pages-demo/views/demo/output/panes/footer.html +1 -0
- data/test/pages-demo/views/demo/output/panes/header.html +1 -0
- data/test/pages-demo/views/demo/output/panes/left.html +1 -0
- data/test/pages-demo/views/demo/output/panes/main.html +1 -0
- data/test/pages-demo/views/demo/output/panes/right.html +1 -0
- data/test/rubytext/rubytext_comprehensive_test.rb +307 -0
- data/test/rubytext/rubytext_demo_test.rb +42 -0
- data/test/rubytext/rubytext_testing_guide.md +277 -0
- data/test/run_automated_tests.rb +45 -0
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_css.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_js.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/config/common.js +57 -0
- data/test/scriptorium-TEST-1754622690-146/config/currentview.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/config/global-head.txt +9 -0
- data/test/scriptorium-TEST-1754622690-146/config/last_post_num.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/config/os_helpers.rb +4 -0
- data/test/scriptorium-TEST-1754622690-146/config/widgets.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/posts/0001/meta.txt +8 -0
- data/test/scriptorium-TEST-1754622690-146/posts/0001/source.lt3 +6 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/README.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/config.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/initial/post.lt3 +12 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/footer.txt +2 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/header.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/left.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/main.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/right.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/gen/text.css +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/layout.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index.lt3 +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index_entry.lt3 +14 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/post.lt3 +13 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/widget.lt3 +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_css.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_js.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/common.js +57 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/deploy.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/footer.txt +2 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/global-head.txt +9 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/header.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/layout.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/left.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/main.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/reddit.txt +10 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/right.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/social.txt +7 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/status.txt +7 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/footer.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/header.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/left.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/main.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/right.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/footer.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/header.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/left.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/main.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/right.html +1 -0
- data/test/staging/.DS_Store +0 -0
- data/test/syntax_highlighting_test.lt3 +124 -0
- data/test/test_helpers.rb +230 -0
- data/test/tui_editor_integration_test.rb +296 -0
- data/test/tui_integration_test.rb +637 -0
- data/test/unit/api.rb +1056 -0
- data/test/unit/asset_management.rb +245 -0
- data/test/unit/clipboard_test.rb +60 -0
- data/test/unit/contract_test.rb +91 -0
- data/test/unit/core.rb +857 -0
- data/test/unit/deploy_test.rb +187 -0
- data/test/unit/gem_asset_management.rb +189 -0
- data/test/unit/livetext_basic.rb +69 -0
- data/test/unit/livetext_compatibility.rb +89 -0
- data/test/unit/post.rb +244 -0
- data/test/unit/read_commented_file_test.rb +276 -0
- data/test/unit/reddit_test.rb +235 -0
- data/test/unit/repo.rb +548 -0
- data/test/unit/social_test.rb +369 -0
- data/test/unit/symlink_test.rb +213 -0
- data/test/unit/view.rb +431 -0
- data/test/unit/widgets.rb +669 -0
- data/test/wizard_test.rb +123 -0
- data/ui/README.md +67 -0
- data/ui/common/lib/ui_common.rb +8 -0
- data/ui/rubytext/README.md +191 -0
- data/ui/rubytext/bin/scriptorium-rubytext +402 -0
- data/ui/rubytext/lib/rubytext_ui.rb +300 -0
- data/ui/tui/bin/scriptorium +1420 -0
- data/ui/tui/test/tui_test.rb +23 -0
- data/ui/web/app/app.rb +1378 -0
- data/ui/web/app/error_helpers.rb +150 -0
- data/ui/web/app/views/advanced_config.erb +190 -0
- data/ui/web/app/views/asset_management.erb +589 -0
- data/ui/web/app/views/banner_config.erb +200 -0
- data/ui/web/app/views/configure_view.erb +401 -0
- data/ui/web/app/views/dashboard.erb +162 -0
- data/ui/web/app/views/deploy_config.erb +146 -0
- data/ui/web/app/views/edit_pages.erb +195 -0
- data/ui/web/app/views/edit_post.erb +54 -0
- data/ui/web/app/views/error_page.erb +29 -0
- data/ui/web/app/views/header_config.erb +155 -0
- data/ui/web/app/views/layout_config.erb +147 -0
- data/ui/web/app/views/navbar_config.erb +411 -0
- data/ui/web/app/views/view_dashboard.erb +138 -0
- data/ui/web/bin/scriptorium-web +153 -0
- data/ui/web/test/web_basic_test.rb +38 -0
- data/ui/web/test_navbar.txt +7 -0
- data/ui/web/tmp/web_server.log +5 -0
- data/ui/web/tmp/web_server.pid +1 -0
- metadata +359 -7
- data/lib/scriptorium/engine.rb +0 -22
- data/test/engine/unit.rb +0 -44
@@ -0,0 +1,147 @@
|
|
1
|
+
# 6. Managing Pages
|
2
|
+
|
3
|
+
Pages in Scriptorium are static HTML files that provide additional content beyond your blog posts. They're perfect for creating "About" pages, contact information, documentation, or any other static content you want to make available on your site.
|
4
|
+
|
5
|
+
## Used in navbar
|
6
|
+
|
7
|
+
Pages can be linked directly in your site's navigation bar. This is typically configured in the header section of your view.
|
8
|
+
|
9
|
+
To add a page to your navbar:
|
10
|
+
|
11
|
+
1. **Create the page file** in your view's `pages/` directory:
|
12
|
+
```bash
|
13
|
+
scriptorium edit pages/about.html
|
14
|
+
```
|
15
|
+
|
16
|
+
2. **Configure the navbar** in your view's header configuration:
|
17
|
+
```bash
|
18
|
+
scriptorium edit config/header.txt
|
19
|
+
```
|
20
|
+
|
21
|
+
3. **Add navigation links** to your header configuration file. The exact format depends on your theme, but typically looks like:
|
22
|
+
```
|
23
|
+
# Navigation links
|
24
|
+
.nav-link "About" "pages/about.html"
|
25
|
+
.nav-link "Contact" "pages/contact.html"
|
26
|
+
```
|
27
|
+
|
28
|
+
The navbar will automatically include these links, making your pages easily accessible from any part of your site.
|
29
|
+
|
30
|
+
## Used in Pages widget
|
31
|
+
|
32
|
+
Pages can also be displayed using the Pages widget, which creates a sidebar or footer list of your pages. This is useful for organizing related content or providing quick access to important pages.
|
33
|
+
|
34
|
+
To set up the Pages widget:
|
35
|
+
|
36
|
+
1. **Create the widget configuration**:
|
37
|
+
```bash
|
38
|
+
scriptorium edit widgets/pages/list.txt
|
39
|
+
```
|
40
|
+
|
41
|
+
2. **Add page references** to the list file. Each line should contain the page filename (without the `.html` extension):
|
42
|
+
```
|
43
|
+
about
|
44
|
+
contact
|
45
|
+
documentation
|
46
|
+
```
|
47
|
+
|
48
|
+
3. **Generate the widget**:
|
49
|
+
```bash
|
50
|
+
scriptorium generate widget pages
|
51
|
+
```
|
52
|
+
|
53
|
+
The Pages widget will automatically:
|
54
|
+
- Extract titles from the HTML files (using `<title>` tags or `<h1>` tags)
|
55
|
+
- Create clickable links to each page
|
56
|
+
- Skip any pages that don't exist (with a warning)
|
57
|
+
|
58
|
+
## Internal links
|
59
|
+
|
60
|
+
Pages can link to each other and to blog posts using internal links. This creates a connected web of content within your site.
|
61
|
+
|
62
|
+
### Linking between pages
|
63
|
+
|
64
|
+
In your page HTML, use JavaScript-based links that work with Scriptorium's navigation system:
|
65
|
+
|
66
|
+
```html
|
67
|
+
<a href="javascript:void(0)" onclick="load_main('pages/other-page.html')">Link to Another Page</a>
|
68
|
+
```
|
69
|
+
|
70
|
+
### Linking from pages to posts
|
71
|
+
|
72
|
+
You can also link from pages to specific blog posts:
|
73
|
+
|
74
|
+
```html
|
75
|
+
<a href="javascript:void(0)" onclick="load_main('posts/post-slug.html')">Link to Blog Post</a>
|
76
|
+
```
|
77
|
+
|
78
|
+
### Linking from posts to pages
|
79
|
+
|
80
|
+
In your blog posts, you can link to pages using the same pattern:
|
81
|
+
|
82
|
+
```html
|
83
|
+
<a href="javascript:void(0)" onclick="load_main('pages/about.html')">About Us</a>
|
84
|
+
```
|
85
|
+
|
86
|
+
## Subdirectories under pages/
|
87
|
+
|
88
|
+
For better organization, you can create subdirectories under the `pages/` directory. This is useful for grouping related pages or creating more complex site structures.
|
89
|
+
|
90
|
+
### Creating subdirectories
|
91
|
+
|
92
|
+
```bash
|
93
|
+
# Create a subdirectory
|
94
|
+
mkdir pages/documentation
|
95
|
+
|
96
|
+
# Create pages within the subdirectory
|
97
|
+
scriptorium edit pages/documentation/getting-started.html
|
98
|
+
scriptorium edit pages/documentation/advanced-usage.html
|
99
|
+
```
|
100
|
+
|
101
|
+
### Linking to subdirectory pages
|
102
|
+
|
103
|
+
When linking to pages in subdirectories, include the full path:
|
104
|
+
|
105
|
+
```html
|
106
|
+
<a href="javascript:void(0)" onclick="load_main('pages/documentation/getting-started.html')">Getting Started</a>
|
107
|
+
```
|
108
|
+
|
109
|
+
### Using subdirectories in the Pages widget
|
110
|
+
|
111
|
+
In your `widgets/pages/list.txt` file, you can reference subdirectory pages using relative paths:
|
112
|
+
|
113
|
+
```
|
114
|
+
about
|
115
|
+
contact
|
116
|
+
documentation/getting-started
|
117
|
+
documentation/advanced-usage
|
118
|
+
```
|
119
|
+
|
120
|
+
### Best practices for page organization
|
121
|
+
|
122
|
+
- **Use descriptive filenames**: `about.html`, `contact.html`, `privacy-policy.html`
|
123
|
+
- **Group related content**: Use subdirectories for documentation, guides, or multi-part content
|
124
|
+
- **Keep navigation simple**: Don't create too many levels of subdirectories
|
125
|
+
- **Use consistent naming**: Stick to lowercase with hyphens for multi-word filenames
|
126
|
+
- **Include proper titles**: Always use `<title>` tags in your HTML for better widget integration
|
127
|
+
|
128
|
+
### Page templates and styling
|
129
|
+
|
130
|
+
Pages inherit the same styling as your main site, so they'll automatically match your theme. You can include additional CSS or JavaScript in individual pages if needed, but it's generally better to keep styling consistent across your site.
|
131
|
+
|
132
|
+
### Managing page content
|
133
|
+
|
134
|
+
Since pages are static HTML files, you can edit them using any text editor or HTML editor. Scriptorium provides convenient commands for common page operations:
|
135
|
+
|
136
|
+
```bash
|
137
|
+
# Create a new page
|
138
|
+
scriptorium edit pages/new-page.html
|
139
|
+
|
140
|
+
# List all pages in a view
|
141
|
+
ls views/your-view/pages/
|
142
|
+
|
143
|
+
# Generate all content (including pages)
|
144
|
+
scriptorium generate
|
145
|
+
```
|
146
|
+
|
147
|
+
Pages are a powerful way to extend your Scriptorium site beyond just blog posts, allowing you to create a complete website with multiple types of content.
|
@@ -0,0 +1,311 @@
|
|
1
|
+
# 7. Customization
|
2
|
+
|
3
|
+
Scriptorium is designed to be highly customizable while maintaining simplicity. You can modify themes, create custom templates, and extend functionality through widgets and features.
|
4
|
+
|
5
|
+
## Themes and Styling (cloning)
|
6
|
+
|
7
|
+
Themes in Scriptorium control the overall look and feel of your site. Currently, Scriptorium comes with a "standard" theme, but you can clone and customize it to create your own unique design.
|
8
|
+
|
9
|
+
### Understanding themes
|
10
|
+
|
11
|
+
A theme consists of several components:
|
12
|
+
- **Layout templates**: HTML structure for different page types
|
13
|
+
- **CSS styling**: Visual appearance and responsive design
|
14
|
+
- **Configuration files**: Default settings and options
|
15
|
+
- **Assets**: Images, fonts, and other static files
|
16
|
+
|
17
|
+
### Cloning the standard theme
|
18
|
+
|
19
|
+
To create your own theme:
|
20
|
+
|
21
|
+
1. **Navigate to the themes directory**:
|
22
|
+
```bash
|
23
|
+
cd themes
|
24
|
+
```
|
25
|
+
|
26
|
+
2. **Clone the standard theme**:
|
27
|
+
```bash
|
28
|
+
cp -r standard my-custom-theme
|
29
|
+
```
|
30
|
+
|
31
|
+
3. **Update your view to use the new theme**:
|
32
|
+
```bash
|
33
|
+
scriptorium edit config.txt
|
34
|
+
```
|
35
|
+
|
36
|
+
Change the theme line to:
|
37
|
+
```
|
38
|
+
theme: my-custom-theme
|
39
|
+
```
|
40
|
+
|
41
|
+
### Customizing CSS
|
42
|
+
|
43
|
+
The main styling is controlled by CSS files in your theme:
|
44
|
+
|
45
|
+
- **`layout.css`**: Overall layout and responsive design
|
46
|
+
- **`text.css`**: Typography and text styling
|
47
|
+
- **`bootstrap.css`**: Bootstrap framework (if used)
|
48
|
+
|
49
|
+
To modify the appearance:
|
50
|
+
|
51
|
+
1. **Edit the CSS files** in your theme directory:
|
52
|
+
```bash
|
53
|
+
scriptorium edit themes/my-custom-theme/layout/gen/layout.css
|
54
|
+
scriptorium edit themes/my-custom-theme/layout/gen/text.css
|
55
|
+
```
|
56
|
+
|
57
|
+
2. **Common customizations**:
|
58
|
+
- Change colors and fonts
|
59
|
+
- Modify spacing and layout
|
60
|
+
- Add custom animations
|
61
|
+
- Adjust responsive breakpoints
|
62
|
+
|
63
|
+
3. **Regenerate your site** to see changes:
|
64
|
+
```bash
|
65
|
+
scriptorium generate
|
66
|
+
```
|
67
|
+
|
68
|
+
### Theme structure
|
69
|
+
|
70
|
+
Understanding the theme directory structure helps with customization:
|
71
|
+
|
72
|
+
```
|
73
|
+
my-custom-theme/
|
74
|
+
├── assets/ # Images, fonts, etc.
|
75
|
+
├── config.txt # Theme configuration
|
76
|
+
├── header/ # Header templates
|
77
|
+
├── initial/ # Initial content templates
|
78
|
+
├── layout/ # Layout templates and CSS
|
79
|
+
│ ├── config/ # Layout configuration files
|
80
|
+
│ ├── gen/ # Generated CSS files
|
81
|
+
│ └── layout.txt # Layout structure
|
82
|
+
└── templates/ # Main templates
|
83
|
+
├── index.lt3 # Front page template
|
84
|
+
├── post.lt3 # Individual post template
|
85
|
+
└── widget.lt3 # Widget template
|
86
|
+
```
|
87
|
+
|
88
|
+
### Responsive design
|
89
|
+
|
90
|
+
Scriptorium themes are designed to work on various screen sizes. When customizing:
|
91
|
+
|
92
|
+
- **Mobile-first approach**: Start with mobile styles and enhance for larger screens
|
93
|
+
- **Flexible layouts**: Use CSS Grid and Flexbox for responsive layouts
|
94
|
+
- **Test on multiple devices**: Ensure your customizations work across different screen sizes
|
95
|
+
|
96
|
+
## Templates
|
97
|
+
|
98
|
+
Templates control how your content is structured and displayed. Scriptorium uses LiveText templates (`.lt3` files) that combine HTML structure with dynamic content.
|
99
|
+
|
100
|
+
### Main templates
|
101
|
+
|
102
|
+
The core templates in your theme:
|
103
|
+
|
104
|
+
- **`templates/index.lt3`**: Front page layout
|
105
|
+
- **`templates/post.lt3`**: Individual blog post layout
|
106
|
+
- **`templates/widget.lt3`**: Widget container layout
|
107
|
+
|
108
|
+
### Customizing post templates
|
109
|
+
|
110
|
+
To modify how blog posts are displayed:
|
111
|
+
|
112
|
+
1. **Edit the post template**:
|
113
|
+
```bash
|
114
|
+
scriptorium edit themes/my-custom-theme/templates/post.lt3
|
115
|
+
```
|
116
|
+
|
117
|
+
2. **Available variables** in post templates:
|
118
|
+
- `%{post.title}`: Post title
|
119
|
+
- `%{post.body}`: Post content
|
120
|
+
- `%{post.pubdate}`: Publication date
|
121
|
+
- `%{post.tags}`: Post tags
|
122
|
+
- `%{post.blurb}`: Post excerpt
|
123
|
+
|
124
|
+
3. **Example template structure**:
|
125
|
+
```
|
126
|
+
<article class="post">
|
127
|
+
<header>
|
128
|
+
<h1>%{post.title}</h1>
|
129
|
+
<time>%{post.pubdate}</time>
|
130
|
+
</header>
|
131
|
+
<div class="content">
|
132
|
+
%{post.body}
|
133
|
+
</div>
|
134
|
+
<footer>
|
135
|
+
<div class="tags">%{post.tags}</div>
|
136
|
+
</footer>
|
137
|
+
</article>
|
138
|
+
```
|
139
|
+
|
140
|
+
### Customizing the front page
|
141
|
+
|
142
|
+
The front page template controls how your blog index is displayed:
|
143
|
+
|
144
|
+
1. **Edit the index template**:
|
145
|
+
```bash
|
146
|
+
scriptorium edit themes/my-custom-theme/templates/index.lt3
|
147
|
+
```
|
148
|
+
|
149
|
+
2. **Common customizations**:
|
150
|
+
- Change the post listing format
|
151
|
+
- Add featured post sections
|
152
|
+
- Modify pagination
|
153
|
+
- Include custom widgets
|
154
|
+
|
155
|
+
### Template inheritance and overrides
|
156
|
+
|
157
|
+
You can override specific templates for individual views:
|
158
|
+
|
159
|
+
1. **Create a view-specific template**:
|
160
|
+
```bash
|
161
|
+
scriptorium edit views/my-view/templates/post.lt3
|
162
|
+
```
|
163
|
+
|
164
|
+
2. **The view-specific template** will be used instead of the theme template for that view
|
165
|
+
|
166
|
+
### LiveText in templates
|
167
|
+
|
168
|
+
Templates use LiveText syntax for dynamic content:
|
169
|
+
|
170
|
+
- **Variables**: `%{variable_name}`
|
171
|
+
- **Conditionals**: `.if condition` ... `.end`
|
172
|
+
- **Loops**: `.each item` ... `.end`
|
173
|
+
- **Includes**: `.include "file.lt3"`
|
174
|
+
|
175
|
+
## Widgets and Features
|
176
|
+
|
177
|
+
Widgets are modular components that add functionality to your site. Scriptorium comes with several built-in widgets, and you can create custom ones.
|
178
|
+
|
179
|
+
### Built-in widgets
|
180
|
+
|
181
|
+
#### Links widget
|
182
|
+
|
183
|
+
Displays a list of external links in a sidebar:
|
184
|
+
|
185
|
+
1. **Configure the widget**:
|
186
|
+
```bash
|
187
|
+
scriptorium edit widgets/links/list.txt
|
188
|
+
```
|
189
|
+
|
190
|
+
2. **Add links** in the format `url, title`:
|
191
|
+
```
|
192
|
+
https://example.com, Example Site
|
193
|
+
https://github.com, GitHub Profile
|
194
|
+
```
|
195
|
+
|
196
|
+
3. **Generate the widget**:
|
197
|
+
```bash
|
198
|
+
scriptorium generate widget links
|
199
|
+
```
|
200
|
+
|
201
|
+
#### Pages widget
|
202
|
+
|
203
|
+
Lists internal pages (see Section 6 for details):
|
204
|
+
|
205
|
+
1. **Configure the widget**:
|
206
|
+
```bash
|
207
|
+
scriptorium edit widgets/pages/list.txt
|
208
|
+
```
|
209
|
+
|
210
|
+
2. **Add page references**:
|
211
|
+
```
|
212
|
+
about
|
213
|
+
contact
|
214
|
+
documentation
|
215
|
+
```
|
216
|
+
|
217
|
+
#### Featured Posts widget
|
218
|
+
|
219
|
+
Highlights specific posts in a sidebar:
|
220
|
+
|
221
|
+
1. **Configure the widget**:
|
222
|
+
```bash
|
223
|
+
scriptorium edit widgets/featuredposts/list.txt
|
224
|
+
```
|
225
|
+
|
226
|
+
2. **Add post references**:
|
227
|
+
```
|
228
|
+
001 My Important Post
|
229
|
+
002 Another Featured Post
|
230
|
+
```
|
231
|
+
|
232
|
+
### Adding widgets to your layout
|
233
|
+
|
234
|
+
To include widgets in your site:
|
235
|
+
|
236
|
+
1. **Edit your layout configuration**:
|
237
|
+
```bash
|
238
|
+
scriptorium edit config/layout.txt
|
239
|
+
```
|
240
|
+
|
241
|
+
2. **Add widget containers** to your layout:
|
242
|
+
```
|
243
|
+
header
|
244
|
+
left 20%
|
245
|
+
main
|
246
|
+
right 20%
|
247
|
+
footer
|
248
|
+
```
|
249
|
+
|
250
|
+
3. **Configure the sidebar** to include widgets:
|
251
|
+
```bash
|
252
|
+
scriptorium edit config/left.txt
|
253
|
+
```
|
254
|
+
|
255
|
+
4. **Add widget references**:
|
256
|
+
```
|
257
|
+
.widget links
|
258
|
+
.widget pages
|
259
|
+
.widget featuredposts
|
260
|
+
```
|
261
|
+
|
262
|
+
### Creating custom widgets
|
263
|
+
|
264
|
+
For advanced customization, you can create your own widgets:
|
265
|
+
|
266
|
+
1. **Create a widget directory**:
|
267
|
+
```bash
|
268
|
+
mkdir -p widgets/my-custom-widget
|
269
|
+
```
|
270
|
+
|
271
|
+
2. **Create the widget configuration**:
|
272
|
+
```bash
|
273
|
+
scriptorium edit widgets/my-custom-widget/config.txt
|
274
|
+
```
|
275
|
+
|
276
|
+
3. **Create the widget template**:
|
277
|
+
```bash
|
278
|
+
scriptorium edit widgets/my-custom-widget/template.lt3
|
279
|
+
```
|
280
|
+
|
281
|
+
4. **Register the widget** in your view's configuration
|
282
|
+
|
283
|
+
### Widget styling
|
284
|
+
|
285
|
+
Widgets inherit styling from your theme, but you can add custom CSS:
|
286
|
+
|
287
|
+
1. **Create widget-specific CSS**:
|
288
|
+
```bash
|
289
|
+
scriptorium edit themes/my-custom-theme/assets/widgets.css
|
290
|
+
```
|
291
|
+
|
292
|
+
2. **Include the CSS** in your layout templates
|
293
|
+
|
294
|
+
### Best practices for customization
|
295
|
+
|
296
|
+
- **Start small**: Make incremental changes and test frequently
|
297
|
+
- **Keep backups**: Save copies of working configurations
|
298
|
+
- **Use version control**: Track your customizations with git
|
299
|
+
- **Test thoroughly**: Ensure changes work across different content types
|
300
|
+
- **Document changes**: Keep notes on what you've customized
|
301
|
+
|
302
|
+
### Troubleshooting customizations
|
303
|
+
|
304
|
+
Common issues and solutions:
|
305
|
+
|
306
|
+
- **Changes not appearing**: Run `scriptorium generate` to rebuild
|
307
|
+
- **Broken layout**: Check for syntax errors in templates
|
308
|
+
- **Styling issues**: Verify CSS syntax and file paths
|
309
|
+
- **Widget not working**: Check widget configuration and file permissions
|
310
|
+
|
311
|
+
Customization in Scriptorium strikes a balance between flexibility and simplicity, allowing you to create unique sites while maintaining the core functionality and reliability of the platform.
|
@@ -0,0 +1,224 @@
|
|
1
|
+
# 8. Advanced Features
|
2
|
+
|
3
|
+
Scriptorium includes several advanced features that extend its functionality beyond basic blogging. These features help you integrate with external platforms and enhance your site's social presence.
|
4
|
+
|
5
|
+
## Reddit Integration
|
6
|
+
|
7
|
+
Scriptorium includes built-in Reddit integration that allows you to automatically share your blog posts to Reddit. This feature helps increase your content's visibility and drive traffic to your site.
|
8
|
+
|
9
|
+
### Setting up Reddit integration
|
10
|
+
|
11
|
+
Before you can use Reddit integration, you need to create a Reddit application and configure your credentials:
|
12
|
+
|
13
|
+
1. **Create a Reddit application**:
|
14
|
+
- Go to https://www.reddit.com/prefs/apps
|
15
|
+
- Click "Create App" or "Create Another App"
|
16
|
+
- Choose "script" as the application type
|
17
|
+
- Fill in the required fields (name, description, redirect URI)
|
18
|
+
- Note your client ID and client secret
|
19
|
+
|
20
|
+
2. **Configure Reddit credentials**:
|
21
|
+
```bash
|
22
|
+
scriptorium edit config/reddit.json
|
23
|
+
```
|
24
|
+
|
25
|
+
3. **Add your Reddit credentials** to the configuration file:
|
26
|
+
```json
|
27
|
+
{
|
28
|
+
"client_id": "your_client_id_here",
|
29
|
+
"client_secret": "your_client_secret_here",
|
30
|
+
"username": "your_reddit_username",
|
31
|
+
"password": "your_reddit_password",
|
32
|
+
"user_agent": "scriptorium-bot/1.0"
|
33
|
+
}
|
34
|
+
```
|
35
|
+
|
36
|
+
4. **Set appropriate permissions** for the configuration file:
|
37
|
+
```bash
|
38
|
+
chmod 600 config/reddit.json
|
39
|
+
```
|
40
|
+
|
41
|
+
### Using Reddit integration
|
42
|
+
|
43
|
+
Once configured, you can automatically post to Reddit when you publish blog posts:
|
44
|
+
|
45
|
+
1. **Add Reddit metadata** to your blog posts:
|
46
|
+
```
|
47
|
+
.title My Blog Post Title
|
48
|
+
.reddit_subreddit programming
|
49
|
+
.reddit_title My Blog Post Title
|
50
|
+
.reddit_flair "Discussion"
|
51
|
+
```
|
52
|
+
|
53
|
+
2. **Available Reddit metadata**:
|
54
|
+
- `.reddit_subreddit`: Target subreddit (e.g., "programming", "webdev")
|
55
|
+
- `.reddit_title`: Custom title for Reddit (optional, uses post title if not specified)
|
56
|
+
- `.reddit_flair`: Post flair (optional)
|
57
|
+
- `.reddit_nsfw`: Mark as NSFW (true/false)
|
58
|
+
- `.reddit_spoiler`: Mark as spoiler (true/false)
|
59
|
+
|
60
|
+
3. **Publish your post**:
|
61
|
+
```bash
|
62
|
+
scriptorium publish 001
|
63
|
+
```
|
64
|
+
|
65
|
+
4. **The post will automatically be shared** to Reddit with the specified metadata
|
66
|
+
|
67
|
+
### Reddit integration best practices
|
68
|
+
|
69
|
+
- **Choose appropriate subreddits**: Target subreddits relevant to your content
|
70
|
+
- **Follow subreddit rules**: Ensure your content complies with each subreddit's guidelines
|
71
|
+
- **Use descriptive titles**: Make your Reddit titles compelling and accurate
|
72
|
+
- **Engage with comments**: Respond to comments on your Reddit posts
|
73
|
+
- **Don't spam**: Avoid posting too frequently to the same subreddits
|
74
|
+
- **Respect rate limits**: Reddit has API rate limits, so don't post too many times in quick succession
|
75
|
+
|
76
|
+
### Troubleshooting Reddit integration
|
77
|
+
|
78
|
+
Common issues and solutions:
|
79
|
+
|
80
|
+
- **Authentication errors**: Verify your credentials in `config/reddit.json`
|
81
|
+
- **Rate limiting**: Wait before posting again if you hit rate limits
|
82
|
+
- **Subreddit not found**: Check that the subreddit name is correct and exists
|
83
|
+
- **Permission denied**: Ensure your Reddit account has permission to post to the target subreddit
|
84
|
+
|
85
|
+
## Social Media Features
|
86
|
+
|
87
|
+
Scriptorium includes several features to enhance your social media presence and make your content more shareable.
|
88
|
+
|
89
|
+
### Social media metadata
|
90
|
+
|
91
|
+
Add social media metadata to your posts to improve how they appear when shared:
|
92
|
+
|
93
|
+
```
|
94
|
+
.title My Blog Post Title
|
95
|
+
.og_title My Blog Post Title
|
96
|
+
.og_description A compelling description of my blog post
|
97
|
+
.og_image /assets/my-featured-image.jpg
|
98
|
+
.twitter_card summary_large_image
|
99
|
+
.twitter_title My Blog Post Title
|
100
|
+
.twitter_description A compelling description for Twitter
|
101
|
+
.twitter_image /assets/my-featured-image.jpg
|
102
|
+
```
|
103
|
+
|
104
|
+
### Open Graph tags
|
105
|
+
|
106
|
+
Open Graph tags control how your content appears when shared on Facebook, LinkedIn, and other platforms:
|
107
|
+
|
108
|
+
- **`.og_title`**: Title for social media shares
|
109
|
+
- **`.og_description`**: Description for social media shares
|
110
|
+
- **`.og_image`**: Featured image for social media shares
|
111
|
+
- **`.og_type`**: Content type (article, website, etc.)
|
112
|
+
- **`.og_url`**: Canonical URL for the content
|
113
|
+
|
114
|
+
### Twitter Card tags
|
115
|
+
|
116
|
+
Twitter Card tags optimize your content for Twitter sharing:
|
117
|
+
|
118
|
+
- **`.twitter_card`**: Card type (summary, summary_large_image, app, player)
|
119
|
+
- **`.twitter_title`**: Title for Twitter shares
|
120
|
+
- **`.twitter_description`**: Description for Twitter shares
|
121
|
+
- **`.twitter_image`**: Image for Twitter shares
|
122
|
+
- **`.twitter_site`**: Your Twitter username
|
123
|
+
- **`.twitter_creator`**: Content creator's Twitter username
|
124
|
+
|
125
|
+
### Social sharing buttons
|
126
|
+
|
127
|
+
Add social sharing buttons to your posts:
|
128
|
+
|
129
|
+
1. **Configure social sharing** in your theme:
|
130
|
+
```bash
|
131
|
+
scriptorium edit themes/my-theme/templates/post.lt3
|
132
|
+
```
|
133
|
+
|
134
|
+
2. **Add sharing buttons** to your post template:
|
135
|
+
```html
|
136
|
+
<div class="social-share">
|
137
|
+
<a href="https://twitter.com/intent/tweet?url=%{post.url}&text=%{post.title}" target="_blank">Share on Twitter</a>
|
138
|
+
<a href="https://www.facebook.com/sharer/sharer.php?u=%{post.url}" target="_blank">Share on Facebook</a>
|
139
|
+
<a href="https://www.linkedin.com/sharing/share-offsite/?url=%{post.url}" target="_blank">Share on LinkedIn</a>
|
140
|
+
</div>
|
141
|
+
```
|
142
|
+
|
143
|
+
### RSS feeds
|
144
|
+
|
145
|
+
Scriptorium automatically generates RSS feeds for your content:
|
146
|
+
|
147
|
+
- **Main RSS feed**: `your-site.com/feed.xml`
|
148
|
+
- **Category-specific feeds**: `your-site.com/category/feed.xml`
|
149
|
+
- **Tag-specific feeds**: `your-site.com/tag/feed.xml`
|
150
|
+
|
151
|
+
### Email subscriptions
|
152
|
+
|
153
|
+
Set up email subscriptions for your blog:
|
154
|
+
|
155
|
+
1. **Configure email settings**:
|
156
|
+
```bash
|
157
|
+
scriptorium edit config/email.txt
|
158
|
+
```
|
159
|
+
|
160
|
+
2. **Add subscription form** to your site:
|
161
|
+
```html
|
162
|
+
<form action="/subscribe" method="post">
|
163
|
+
<input type="email" name="email" placeholder="Enter your email">
|
164
|
+
<button type="submit">Subscribe</button>
|
165
|
+
</form>
|
166
|
+
```
|
167
|
+
|
168
|
+
### Analytics integration
|
169
|
+
|
170
|
+
Track your site's performance with analytics:
|
171
|
+
|
172
|
+
1. **Google Analytics**:
|
173
|
+
```bash
|
174
|
+
scriptorium edit config/analytics.txt
|
175
|
+
```
|
176
|
+
|
177
|
+
Add your Google Analytics tracking code:
|
178
|
+
```
|
179
|
+
GA_TRACKING_ID: UA-XXXXXXXXX-X
|
180
|
+
```
|
181
|
+
|
182
|
+
2. **Other analytics services**:
|
183
|
+
- Add tracking codes to your theme's header template
|
184
|
+
- Configure privacy settings and cookie consent
|
185
|
+
- Set up conversion tracking
|
186
|
+
|
187
|
+
### Social media automation
|
188
|
+
|
189
|
+
Automate your social media presence:
|
190
|
+
|
191
|
+
1. **Scheduled posting**: Set up automated posting to social platforms
|
192
|
+
2. **Cross-platform sharing**: Share content across multiple platforms simultaneously
|
193
|
+
3. **Content recycling**: Automatically reshare older content
|
194
|
+
4. **Engagement tracking**: Monitor likes, shares, and comments
|
195
|
+
|
196
|
+
### Best practices for social media
|
197
|
+
|
198
|
+
- **Consistent branding**: Use consistent colors, fonts, and imagery across platforms
|
199
|
+
- **Engage with your audience**: Respond to comments and messages
|
200
|
+
- **Post regularly**: Maintain a consistent posting schedule
|
201
|
+
- **Use hashtags strategically**: Research and use relevant hashtags
|
202
|
+
- **Monitor performance**: Track which content performs best
|
203
|
+
- **Optimize for each platform**: Tailor content for different social media platforms
|
204
|
+
|
205
|
+
### Privacy and security considerations
|
206
|
+
|
207
|
+
When using social media features:
|
208
|
+
|
209
|
+
- **Protect personal information**: Be careful with personal data in social media metadata
|
210
|
+
- **Use HTTPS**: Ensure your site uses HTTPS for secure sharing
|
211
|
+
- **Respect user privacy**: Implement appropriate privacy policies
|
212
|
+
- **Secure API keys**: Keep social media API keys and credentials secure
|
213
|
+
- **Monitor for abuse**: Watch for spam or inappropriate use of your social features
|
214
|
+
|
215
|
+
### Troubleshooting social media features
|
216
|
+
|
217
|
+
Common issues and solutions:
|
218
|
+
|
219
|
+
- **Images not appearing**: Check image paths and ensure images are publicly accessible
|
220
|
+
- **Metadata not updating**: Clear social media cache or use debugging tools
|
221
|
+
- **Sharing buttons not working**: Verify JavaScript is enabled and URLs are correct
|
222
|
+
- **Analytics not tracking**: Check tracking code installation and ad blockers
|
223
|
+
|
224
|
+
Advanced features in Scriptorium help you extend your reach beyond your blog and engage with audiences across multiple platforms. These features are designed to work seamlessly with your existing content while providing powerful tools for social media management and audience growth.
|