Page Mass Edit — mass editing of blog articles

The Cotonti plugin provides a user-friendly interface for quick search and browsing of article pages, mass editing of various types of data, including "magical" additional fields (extrafields).

Status: Published

69

Code pagemassedit

Category Extentions
Administration and management, Blogs, news, articles, Utilities and tools
Availability
Free

Page Mass Edit — mass editing of Page module pages

Plugin for Cotonti v1.+ 
Provides a convenient interface for quick viewing and mass editing of page content. 
Allows changing titles, aliases, meta tags, keywords, authors, categories, statuses, dates, files, URLs, parsers and any additional fields (extrafields) for multiple records simultaneously.


On August 10, 2026 integration with the xtradbrowpage plugin was added.

For online stores based on Market PRO v.5 moduleintegration is paid.


Table of Contents


History of creation and the problem it solves

Administrators of Cotonti sites often face the need to massively update meta tags, change categories or fix the statuses of dozens of pages. Standard tools allow editing only one record at a time, which takes a lot of time.

Page Mass Edit solves this task: it displays all pages in one table with filtering and search capabilities, and then allows making changes to multiple records simultaneously. The interface is deliberately made flexible — the administrator can hide unnecessary columns via settings, focusing only on the fields that need to be updated.

The plugin does not interfere with the logic of the page module — it only reads and writes data through the standard Cotonti API, preserving all permission checks and database integrity.

Features

  • Two administration tabs: 
    • “Page list” — viewing pages with search and filtering.
    • “Mass editing” — a table with the ability to change fields simultaneously.
  • Powerful search and filtering: 
    • Search by title, text, description.
    • Filter by exact ID.
    • Category selection via a dropdown with Select2 support (including nesting and category translation by the i18n plugin).
    • Filter by status (all / pending / published / drafts).
  • Flexible configuration of displayed columns — the administrator chooses which fields to show in the editing table:
    • ID, Title, Alias, Meta Title, Meta Description, Keywords, Author, Category, Status, Publish start date, Expiry date, File, URL, Parser, Updated, Delete.
    • A separate option enables/disables extrafields.
  • Mass editing — changes are applied only to fields whose values were actually modified (comparison with current data), which eliminates false updates.
  • Mass deletion — the ability to mark pages for deletion directly from the mass editing table.
  • Pagination — on both tabs, with preservation of filter parameters when navigating.
  • Plugin settings — number of items per page, category blacklist (hidden from dropdown lists).
  • Full localization — Russian and English languages out of the box.

Requirements

  • Cotonti v1.+ (current branch)
  • page module (must be installed and active)
  • PHP 8.5+ 
  • MySQL 8.4+ 
  • Administrator rights to access the plugin control panel.

Plugin structure

pagemassedit/
├── pagemassedit.setup.php           # Plugin registration and settings description
├── pagemassedit.admin.php           # Administration panel (tools hook)
├── pagemassedit.functions.php       # Helper functions (category dropdown)
├── lang/
│   ├── pagemassedit.ru.lang.php     # Russian language file
│   └── pagemassedit.en.lang.php     # English language file
└── tpl/
    └── pagemassedit.admin.tpl       # Admin panel template

Installation

  1. Download the plugin ZIP archive from the official repository .
  2. Unpack the archive into the plugins/ folder of your site.
  3. Go to the Cotonti admin panel → Extensions .
  4. Find “Page Mass Edit” and click “Install” .

The plugin is ready to work immediately — go to Tools → Page Mass Edit .

Plugin settings in admin panel

All settings are available at Extensions → Page Mass Edit → Configuration .

ParameterTypeDefaultDescription
perpagestring20Number of pages displayed per page of the list/table.
blacklist_catsstring(empty)Category codes separated by commas that will be hidden in the category selection dropdowns.
show_idradio1Show “ID” column.
show_titleradio1Show “Title” column.
show_aliasradio1Show “Alias” column.
show_metatitleradio1Show “Meta Title” column.
show_metadescradio1Show “Meta Description” column.
show_keywordsradio1Show “Keywords” column.
show_authorradio1Show “Author” column.
show_catradio1Show “Category” column.
show_stateradio1Show “Status” column.
show_beginradio1Show “Publish start” column.
show_expireradio1Show “Publish end” column.
show_fileradio1Show “File” column.
show_urlradio1Show “URL” column.
show_parserradio1Show “Parser” column.
show_updatedradio1Show “Updated” column.
show_deleteradio1Show “Delete” column.
show_extrafieldsradio1Show extrafields columns.

Changing any of these options instantly affects the display of the mass editing table.

Usage

  1. Go to Tools → Page Mass Edit .
  2. The “Page list” tab will open.
  3. You can:
    • Enter a search query in the “Search” field.
    • Select a category from the dropdown list.
    • Specify the exact page ID.
    • Choose the search area: title, title+text, description.
  4. Click “Filter” — the table will update according to the criteria.

Results are displayed in a table with columns: ID, Title (link to the page), Category, Author, Status. Pagination with highlighting of found words is provided.

Mass editing pages

  1. Switch to the “Mass editing” tab.
  2. If necessary, use filters (search, category, ID, status) to narrow down the list of pages.
  3. Adjust the visibility of columns in the plugin configuration (see above) — hide the fields you do not intend to change.
  4. Make changes directly in the table fields. Each field can be edited independently.
  5. Click “Save changes” .

Important: The plugin only updates fields whose value actually differs from the current one. This saves resources and prevents false triggers (for example, updating the modification date).

Mass deletion: in the “Delete” column, switch the radio button to “Yes” for the pages to be deleted. When saving, they will be deleted using the standard page module procedure (with cache clearing, file processing, etc.).

Administration panel (two tabs)

The panel is accessible via Admin → Tools → Page Mass Edit .

“Page list” tab

  • Search form with filtering by phrase, category and ID.
  • Table with links to pages, categories, authors and statuses.
  • Pagination with preservation of search parameters.
  • Highlighting of found words in titles and text (when search is active).

“Mass editing” tab

  • Similar search and filtering form (including status filter).
  • Table with columns selected by the administrator.
  • Editable fields: text fields, dropdown lists (category, status, file, parser), date selectors, checkboxes.
  • Extrafields are automatically loaded and displayed according to their type.
  • The “Save changes” button applies all edits made.
  • Pagination preserves filters and page number after saving.

Detailed description of each file

pagemassedit.setup.php

Registers the plugin in Cotonti and describes its settings. 
- The [BEGIN_COT_EXT] section contains metadata: code, name, category, version, dependencies (page ), access rights. 
- The [BEGIN_COT_EXT_CONFIG] section lists all configuration parameters with order, type, default value and description. These parameters automatically appear in the plugin settings form.

pagemassedit.admin.php

The main file, connected via the tools hook. Implements all the admin panel logic:

  1. Includes necessary dependencies (pagemassedit , page , functions.php ).
  2. Determines the current tab and processes POST save requests.
  3. “Page list” tab: builds an SQL query with dynamic WHERE depending on filters, retrieves data, builds the table, generates pagination, word highlighting, passes variables to the template.
  4. “Mass editing” tab: 
    • On POST with a=update starts a processing loop: loads current data for the submitted IDs, compares each field and writes only changed ones. Handles deletion.
    • During normal display, builds the table taking into account column visibility settings. For each column, the appropriate input field is created (text, select, date, checkbox).
    • Supports extrafields via cot_build_extrafields() call.

pagemassedit.functions.php

Contains the helper function cot_pagemassedit_selectcat_select2() . 
It generates a category dropdown with Select2 support:

  • Supports a category blacklist (blacklist_cats from settings).
  • Respects access rights (cot_auth ).
  • Supports filtering by subcategory.
  • Integrates with the i18n plugin for translating category names.
  • Outputs options with the data-depth attribute for correct hierarchy.

Language files

pagemassedit.ru.lang.php and pagemassedit.en.lang.php contain all interface text strings: plugin names, tab names, field labels, messages, settings descriptions.

Template pagemassedit.admin.tpl

HTML template with XTemplate blocks, using Bootstrap 5 (built into Cotonti). Includes:

  • Tab switching via nav-tabs .
  • Search forms with hidden fields to preserve admin parameters.
  • Data tables with conditional blocks for each column (IF {SHOW_...} ).
  • Pagination blocks.
  • JavaScript for highlighting search words.

Usage example

Task: update Meta Title and Meta Description for 50 pages from the “News” category, and also change their status to “Published”.

  1. Open the “Page Mass Edit” panel, “Mass editing” tab.
  2. In the filter, select the “News” category, status “All”.
  3. In the plugin settings, enable the display of “Meta Title”, “Meta Description”, “Status” columns; the rest can be temporarily hidden for convenience.
  4. Make the necessary changes in the table cells. If needed, copy new values from an external editor.
  5. Click “Save changes”. The plugin will process only the fields that were changed and display the message “Pages updated: 50”.

Troubleshooting

  • The filter does not find pages. Make sure the search criteria are set correctly. Check if the category blacklist is active and hiding the desired category.
  • No result is visible after saving changes. You may have changed a field whose value is the same as the current one — in this case the plugin deliberately does not execute a database query. Check the message about the number of updated records.
  • Extrafields are not displayed. Enable the “Show extrafields” option in plugin settings. Make sure additional fields are indeed registered in the page module.
  • The category dropdown is empty. Check administrator rights to read categories. Ensure the blacklist (blacklist_cats ) does not contain all categories.
  • The URL gets messed up after filtering. Use the “Filter” button instead of directly entering the URL. The plugin correctly handles hidden form fields.
  • Incorrect operation of the category dropdown (Select2). 
    Category selection in search and edit forms is implemented via the cot_pagemassedit_selectcat_select2() function, which uses the built-in Select2 library already included in Cotonti. For correct display and functionality, your admin theme must have styles and scripts similar to those listed below.

Required styles (add to your admin theme CSS):

/* Main container for single select2 (not multiple) */
.select2-container--default .select2-selection--single {
  background-color: var(--bs-body-bg, #fff);
  border: 1px solid var(--bs-border-color, #ced4da);
  border-radius: 0.375rem;
  padding: 0.375rem 0.75rem;
  font-size: 1rem;
  line-height: 1.5;
  height: 38px;
  display: flex;
  align-items: center;
  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.select2-container--default .select2-selection--single:focus {
  border-color: #86b7fe;
  box-shadow: 0 0 0 0.2rem rgba(13, 110, 253, 0.25);
  outline: 0;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--bs-body-color, #212529);
  line-height: 1.5;
  padding-left: 0;
  padding-right: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 100%;
  right: 0.75rem;
}
.select2-container--default .select2-results__options {
  max-height: 50vh !important;
  overflow-y: auto;
  background-color: var(--bs-body-bg, #fff);
  color: var(--bs-body-color, #212529);
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
  background-color: var(--bs-link-hover-color, #FF5722);
  color: #fff;
}
.select2-container--default .select2-results__group {
  font-weight: bold;
  padding: 0.375rem 0.75rem;
  color: var(--bs-body-color, #212529);
  background-color: var(--bs-sidebar-bg, #f8f9fa);
}
/* Dark theme */
[data-bs-theme="dark"] .select2-container--default .select2-selection--single {
  background-color: var(--bs-body-bg, #212529);
  border-color: var(--bs-sidebar-border, #444);
}
[data-bs-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--bs-body-color, #e9ecef);
}
[data-bs-theme="dark"] .select2-container--default .select2-results__options {
  background-color: var(--bs-body-bg, #212529);
  color: var(--bs-body-color, #e9ecef);
}
[data-bs-theme="dark"] .select2-container--default .select2-results__option--highlighted[aria-selected] {
  background-color: #343a40 !important;
  color: #fff;
}
[data-bs-theme="dark"] .select2-container--default .select2-results__group {
  color: var(--bs-body-color, #e9ecef);
}

Required JavaScript (include in your admin theme):

$(document).ready(function () {
  const selectName = 'c';
  const selectSelector = 'select[name="' + selectName + '"]';
  $(selectSelector).select2({
    placeholder: "---",
    width: '100%',
    templateResult: function (state) {
      if (!state.id) return state.text;
      const depth = parseInt(state.element?.dataset?.depth || '0', 10);
      const text = state.text.trim();
      const indent = '\u00A0'.repeat(depth * 3);
      return depth === 0 ? $('' + text + '') : $('' + indent + text + '');
    },
    templateSelection: function (state) {
      return state.id ? state.text : state.text;
    }
  });
  $(selectSelector).on('select2:select', function (e) {
    const selectedText = e.params.data.text.trim();
    const containerId = $(this).attr('name');
    const renderedSelector = '#select2-' + containerId + '-container';
    $(renderedSelector).attr('title', selectedText);
  });
  const selectedOption = $(selectSelector).find(':selected');
  if (selectedOption.length) {
    const cleanTitle = selectedOption.text().trim();
    const containerId = $(selectSelector).attr('name');
    const renderedSelector = '#select2-' + containerId + '-container';
    $(renderedSelector).attr('title', cleanTitle);
  }
});

If after adding styles and scripts the list still displays incorrectly, check that your admin theme does not use other styles for Select2 that may override these. Double-check that jQuery and Select2 are loaded before executing the above code.

License

BSD. Free use and modification while retaining copyright.

Buy Page Mass Edit — mass editing of blog articles at low prices. The online store offers to order Page Mass Edit — mass editing of blog articles, view the full description, detailed specifications, product photos and current discounted prices
People often order this together with this item: Cotonti CMF: Plugin Installation, Integration, and Adaptation.


Rating based on reviews:
Stars received: 0
Total reviews: 0
Average rating: 0
9 minutes read

You may have been looking for this for a long time

Cotonti CMF: Plugin Installation, Integration, and Adaptation

You may have been looking for this for a long time.:

Market PRO v.5+ module for Cotonti CMF

Reviews to products

No reviews yet


Product multicategories:

Additional categories where this product is shown as similar.
Item seller
webitproff

Offline

webitproff

Last logged: 2026-09-26 15:22

About me briefly
Support and development of web projects on the CMF Cotonti: private messengers via the website, open and closed small social networks, trading platforms and marketplaces, freelance and services exchange portal, catalogs of goods from wholesale suppliers, dropshipping platforms, online stores, and much more.
View developments and download
Public portfolio of my works and developments
Telegram for messages
@webitproff
Telegram channel
@s/aBuyFILE
  • Date published 2026-08-11 23:42
  • Updated 2026-09-13 14:13

Page Discussion in Telegram

Последние сообщения

Market PRO Showcase

CMS, Script and Engine - for an online showcase website, e-commerce store of info products and digital goods. Different prices in different currencies per item. Online crypto payments for goods and services.