How to Change HashOver's Behavior via Settings
Settings can be changed in three different ways:
-
From the
/hashover/admin/settings
page, where you can make adjustments to a number of settings visually. TheAdmin
column below indicates which settings are currently available on the admin Settings page. -
In the
/hashover/config/settings.json
file. Do not do this if you are not familiar with the syntax of JSON, if the file is not properly formatted it will fail to load. TheName
column below gives each setting's JSON key. -
By passing the settings to HashOver in the frontend options. For more information about this, please view the Technical page. The
Option
column below indicates which settings are allowed to be used in this manner.
Example of a valid
settings.json
file:
The example below sets the interface language to German, sets the primary comment form position to below the posted comments, and disables the website field.
"language": "de_DE",
"form-position": "bottom",
"website-field": "off"
}
Note:
When settings are loaded from
settings.json
or the frontend options their type is checked before being applied, settings
with the wrong type are rejected and a default value will be used instead.
The
Type
column below specifies the expected type for each setting.
Full List of Available Settings
Name | Type | Admin | Option | Description |
---|---|---|---|---|
allowed-domains
|
array
|
❌ | ❌ |
There is something called the "same-origin policy" that all modern web browsers follow, along with a security mechanism called "Cross-Origin Resource Sharing" which prevents scripts being delivered by one server from sending requests to another server without having permission to receive a response. This setting is a list of remote domains that are to be allowed to receive responses from HashOver. This allows you to host HashOver on one server while using it on another different server. For example, hosting HashOver on a service that supports PHP, but using it on a host that doesn't support PHP, like GitHub pages. This setting is empty by default, allowing no remote access. |
allows-dislikes
|
boolean
|
✔ | ✔ |
This setting controls whether users may dislike each other's comments. Setting
this to
This setting is
|
allows-images
|
boolean
|
✔ | ✔ |
This setting controls whether users can post images in their comments. Setting
this to
This setting is
|
allows-likes
|
boolean
|
✔ | ✔ |
This setting controls whether users may like each other's comments. Setting this
to
This setting is
|
allows-login
|
boolean
|
✔ | ❌ |
This setting controls whether users are allowed to login. Setting this
to
This setting is
|
allows-user-replies
|
boolean
|
✔ | ✔ |
This setting controls whether users are allowed to reply to each other outside
of HashOver over email. Setting this to
This setting is
|
appends-css
|
boolean
|
✔ | ✔ |
This setting controls whether the configured theme CSS file is automatically
added to the page. Setting this to
This setting is
|
appends-rss
|
boolean
|
✔ | ✔ |
This setting controls whether the comments RSS API is added to the page. Setting
this to
This setting is
Note: Web browsers have been removing support for RSS and feed readers have been decreasing in popularity over the last decade. This setting, along with the RSS API, may be removed in the future. |
collapse-limit
|
integer
|
✔ | ✔ |
This setting controls how many comments are shown before they start getting collapsed, when comment collapsing is enabled.
This setting is
|
collapses-comments
|
boolean
|
✔ | ✔ |
This setting controls whether the comments get collapsed. Setting this
to
This setting is
|
collapses-interface
|
boolean
|
✔ | ✔ |
This setting controls whether the entire HashOver interface gets collapsed.
Setting this to
This setting is
|
comments-root
|
string
|
❌ | ❌ | This setting controls the path to the comments directory. The value of this setting is automatically generated, so the default value is unknown. However, this setting exists to allow you to override this automatic default value. This allows you to store the comments outside of your website's root directory for added security. |
cookie-expiration
|
string
|
✔ | ✔ |
This setting controls when cookies set by HashOver expire. This setting is a
relative DateTime format, so cookies expire a certain number of days or months
from the current date. You can use things like
This setting is
|
counts-deletions
|
boolean
|
✔ | ✔ |
This setting controls whether deleted comments get counted.
This setting is
|
data-format
|
string
|
✔ | ❌ |
This setting controls how the comments are stored. The available formats
are
This setting is
|
date-pattern
|
string
|
✔ | ❌ |
This setting controls how comment post dates are formatted when the Intl
extension is installed. This format is in the
ICU datetime format,
by default the format outputs a date like "January 1, 2020". The dates are
localized automatically based on the locale code in the
This setting is
|
date-format
|
string
|
✔ | ❌ |
This setting controls how comment post dates are formatted. This format is in the PHP DateTime format, by default the format outputs a date like "January 1, 2020".
This setting is
|
default-name
|
string
|
✔ | ❌ |
This setting controls what name a user will be given if they don't enter a name when posting their comment. Since a name is not required by default.
This setting is
|
default-sorting
|
string
|
✔ | ✔ |
This setting controls the default order comments will appear in. The available options are...
This setting is
|
displays-title
|
boolean
|
✔ | ✔ |
This setting controls whether the page title is displayed above the primary
comment form. Setting this to
This setting is
|
domain
|
string
|
❌ | ❌ | This setting controls the server domain name. The value of this setting is automatically generated, so the default value is unknown. However, this setting exists to allow you to override this automatic default value. |
email-field
|
string
|
✔ | ✔ |
This setting controls the behavior of the email address field. Setting this
to
This setting is
|
enabled-api
|
array
|
❌ | ❌ |
This setting is a list of APIs to enable. The available options are
This setting is
|
form-position
|
string
|
✔ | ✔ |
This setting controls the position of the primary comment form. Setting this
to
This setting is
|
gravatar-default
|
string
|
✔ | ✔ |
This setting controls which themed Gravatar default avatars to use when a user's
email address doesn't have a Gravatar avatar image associated with it. For
available options, please see the
Gravatar documentation.
The option
This setting is
|
gravatar-force
|
boolean
|
✔ | ✔ |
This setting controls whether the themed Gravatar default avatars are always loaded instead of each user's personal avatar image.
This setting is
|
http-backend
|
string
|
❌ | ❌ |
This setting controls the client-side path to the HashOver backend directory. In
a default installation this setting is
/hashover/backend
by default, however, the value of this setting is technically automatically
generated, so the default value is unknown. This setting exists to allow you to
override this automatic default value.
|
http-images
|
string
|
❌ | ❌ |
This setting controls the client-side path to the HashOver images directory. In
a default installation this setting is
/hashover/images
by default, however, the value of this setting is technically automatically
generated, so the default value is unknown. This setting exists to allow you to
override this automatic default value.
|
http-root
|
string
|
❌ | ❌ |
This setting controls the client-side path to the HashOver root directory. In a
default installation this setting is
/hashover
by default, however, the value of this setting is technically automatically
generated, so the default value is unknown. This setting exists to allow you to
override this automatic default value.
|
icon-mode
|
string
|
✔ | ✔ |
This setting controls the type of avatar each comment has. The available options
are
This setting is
|
icon-size
|
integer
|
✔ | ✔ |
This setting controls the size of the Gravatar avatar image.
This setting is
|
image-format
|
string
|
✔ | ❌ |
This setting controls the type of images used in the interface. Use
This setting is
|
image-types
|
array
|
❌ | ❌ |
This setting is a list of image file extensions that will be allowed to be
posted and displayed in comments using the
This setting is
|
language
|
string
|
✔ | ✔ |
This setting controls the language of the HashOver interface, its locale. A
number of languages are currently supported, look in
This setting is
|
latest-max
|
integer
|
❌ | ❌ |
This setting controls how many comments will be collected as metadata for the Latest Comments API. Changing this setting does not change the number of comments already collected, so there may be a delay in how many are shown.
This setting is
|
local-metadata
|
boolean
|
✔ | ❌ |
This setting controls whether metadata is updated when HashOver is accessed from
within a local network. Setting this to
Metadata about each page using HashOver, such as title and URL, is created or updated every time a request for comments is sent to the HashOver server backend. This is fine for production use, but it might not be desirable in development where each page URL might be different than in production. For example, the domain might be different: example.com vs. 127.0.0.1.
This setting is
|
login-method
|
string
|
✔ | ❌ |
This setting controls how user login is handled. Only the original login system, which uses cookies to store the user's information on their system for easy commenting after their first comment, has been implemented currently.
This setting is
|
mailer
|
string
|
✔ | ❌ |
This setting controls how email notifications are sent. Setting this to
Using
This setting is
|
mail-type
|
string
|
✔ | ❌ |
This setting controls what format email notifications will be sent in. Setting
this to
This setting is
|
minifies-javascript
|
boolean
|
✔ | ✔ |
This setting controls whether the HashOver frontend JavaScript code will be
minified. Minification is a process by which unnecessary code is removed to
reduce the size of the file sent to the user, which can help save bandwidth.
Setting this to
HashOver has a built-in minifier, which reduces the size of the JavaScript by removing code comments and unnecessary lines and other characters. This minifier does not obfuscate the code, and it provides a link to the full original source code as a code comment at the top of the minified output.
This setting is
|
minify-level
|
integer
|
✔ | ✔ |
This setting controls the level of minification.
This setting is
|
name-field
|
string
|
✔ | ✔ |
This setting controls the behavior of the name field. Setting this to
This setting is
|
password-field
|
string
|
✔ | ✔ |
This setting controls the behavior of the password field. Setting this
to
This setting is
|
pends-user-edits
|
boolean
|
✔ | ❌ |
This setting controls whether a comment requires approval when it is edited by a
user. Setting this to
This setting is separate from but complementary to general comment moderation,
the
This setting is
|
popularity-limit
|
integer
|
✔ | ✔ |
This setting controls how many comments are allowed to be considered popular;
how many comments will appear in the "Popular Comments" section. Setting this
to
This setting is
|
popularity-threshold
|
integer
|
✔ | ✔ |
This setting controls how many net likes are needed for a comment to be considered "popular"; whether they qualify to be shown in the "Popular Comments" section. For this calculation net likes is: number of likes minus number of dislikes.
This setting is
|
requires-login
|
boolean
|
❌ | ❌ |
This setting controls whether users must be logged in to comment. Setting this
to
This is a technical setting implemented to allow very restrictive custom login
methods, particularly those designed to integrate HashOver into a website's own
login system to prevent people who are not logged in to the website itself from
posting comments. Do not set this to
This setting is
|
root-directory
|
string
|
❌ | ❌ | This setting controls the path to the HashOver root directory. The value of this setting is automatically generated, so the default value is unknown. This setting exists to allow you to override this automatic default value. |
secure-cookies
|
boolean
|
✔ | ❌ |
This setting controls whether the HashOver cookies will only be transmitted from
the user over a secure HTTPS connection. Setting this to
This setting is
|
sends-notifications
|
string
|
✔ | ✔ |
This setting controls whether HashOver will send notification emails and to
whom. Setting this to
This setting is
|
server-timezone
|
string
|
✔ | ✔ |
This setting controls the default timezone used by the server. By default, the
server's timezone will try to be automatically detected, but if the time is
incorrect you will want to set this manually. This setting expects a timezone
location in a common format, like
This setting is
|
sets-cookies
|
boolean
|
✔ | ✔ |
This setting controls whether HashOver will set cookies. Setting this to
If you are in Europe, you might find it useful to set this to
This setting is
|
shows-reply-count
|
boolean
|
✔ | ✔ |
This setting controls whether the number of reply comments are shown separately
from the number of normal comments. Setting this to
This setting is
|
spam-check-modes
|
string
|
✔ | ❌ |
This setting controls which HashOver modes have IP address spam checking.
HashOver has two modes, JavaScript mode and PHP mode, one or the other or both
can have IP address spam checking enabled. PHP mode is more susceptible to spam
attacks, but both modes can be targeted on popular websites. Setting this
to
This setting is
|
spam-database
|
string
|
✔ | ❌ |
This setting controls where to find the spam IP address database. Setting this
to
This setting is
|
stores-ip-address
|
boolean
|
✔ | ❌ |
This setting controls whether each user's IP address is stored along with their
comment. Setting this to
You should set this
This setting is
|
stream-depth
|
integer
|
✔ | ✔ |
This setting controls how many levels of indentation replies have in stream mode.
This setting is
|
subscribes-user
|
boolean
|
✔ | ✔ |
This setting controls whether users are subscribed to email notifications by
default. Setting this to
This setting is
|
supports-multisites
|
boolean
|
❌ | ❌ |
This setting controls whether comment threads should be separated by domain
names. Setting this to
When using an SQL database, this setting only controls whether the
This setting is
|
theme
|
string
|
✔ | ✔ |
This setting controls the theme, specifically, it controls which theme CSS file to add to the page and which theme directory to load the HTML template from. See the admin Settings page for available themes.
This setting is
|
theme-path
|
string
|
❌ | ❌ |
This setting controls the path to the HashOver theme directory. In a default
installation this setting is
themes/default
by default, however, the value of this setting is technically automatically
generated, so the default value is unknown. This setting exists to allow you to
override this automatic default value.
|
time-pattern
|
string
|
✔ | ❌ |
This setting controls how comment post times are formatted when the Intl
extension is installed. This format is in the
ICU datetime format,
by default the format outputs a 12-hour time like "12:00 PM". You can
use
This setting is
|
time-format
|
string
|
✔ | ❌ |
This setting controls how comment post times are formatted. This format is in
the
PHP DateTime format,
by default the format outputs a 12-hour time like "12:00 PM". You can
use
This setting is
|
unlinks-files
|
boolean
|
❌ | ❌ |
This setting controls whether user deleted comments are actually deleted from
storage. Setting this to
This setting is
|
uses-ajax
|
boolean
|
✔ | ✔ |
This setting controls whether most actions in the JavaScript frontend are
performed over asynchronous requests (AJAX). Setting this to
This setting is
|
uses-auto-login
|
boolean
|
✔ | ❌ |
This setting controls whether a user is automatically logged in when they post
their first comment. Setting this to
This setting is
|
uses-cancel-buttons
|
boolean
|
✔ | ✔ |
This setting controls whether reply and edit forms have cancel buttons. Setting
this to
This setting is
|
uses-labels
|
boolean
|
✔ | ✔ |
This setting controls whether form text inputs have labels. Setting this
to
This setting is
|
uses-markdown
|
boolean
|
✔ | ✔ |
This setting controls whether Markdown in comments will be parsed. Setting this
to
This setting is
|
uses-moderation
|
boolean
|
✔ | ❌ |
This setting controls whether new comments need to be approved by the admin user
before they will appear to normal users. Setting this to
This setting is
|
uses-short-dates
|
boolean
|
✔ | ✔ |
This setting controls whether the comment post dates use a short format. Setting
this to
This setting is
|
uses-user-timezone
|
boolean
|
✔ | ✔ |
This setting controls whether the JavaScript frontend will adjust the comment
post times to the user's timezone. Setting this to
This setting is
|
website-field
|
string
|
✔ | ✔ |
This setting controls the behavior of the website field. Setting this to
This setting is
|