Запоминание позиций модулей за Шаблоном

Опубликовано:
Редактировалось: 2 раза — последний 28 марта 2023
Просмотров: 3649
Настроение: Хорошее
Играет: Динамик сдох :(
+3
Голосов: 3
Всем привет! Давно не писал я в своем блоге, и вот как раз на днях менял я шаблон на своем сайте, сменил расставил модули поглядел не понравилось сменил я его обратно и тут маленькая неприятность модули то не сохраняют позиции за шаблонами и кто где был расположен я точно и не помнил убил почти час все расставляя по местам и тут пришло мне в голову написать хак для того чтобы модульные позиции запоминались отдельно для каждого шаблона...

Теперь ближе к сути.
Для начала нам необходимо добавить дополнительное поле в таблицу cms_modules_bind назовем ее tpl тип поставим varchar длину 128 (это с запасом мало ли с каким названием попадется шаблон, а так хватило бы с лихвой 64 или 32) готовый запрос в базу такой не забываем менять префикс cms на свой:

Код PHP:
  1. ALTER TABLE `cms_modules_bind` ADD `tpl` varchar(128) NOT NULL;
Далее нам необходимо отредактировать два файла /admin/applets/modules.php и /core/classes/page.class.php

В файле /admin/applets/modules.php:

находим строчку (где то 421я):
Код PHP:
  1. $sql = "DELETE FROM cms_modules_bind WHERE module_id = $id";
меняем ее на:
Код PHP:
  1. $sql = "DELETE FROM cms_modules_bind WHERE module_id = ". $id ." AND tpl = '". $inConf->template ."'";
находим строчку (где то 427я):
Код PHP:
  1. VALUES ($id, 0, '{$position}')";
меняем ее на:
Код PHP:
  1. VALUES ($id, 0, '{$position}', '". $inConf->template ."')";
находим строчку (где то 435я):
Код PHP:
  1. VALUES ($id, $value, '{$showpos[$value]}')";
меняем ее на:
Код PHP:
  1. VALUES ($id, $value, '{$showpos[$value]}', '". $inConf->template ."')";
находим строчку (где то 538я):
Код PHP:
  1. VALUES ($lastid, 0, '{$position}')";
меняем ее на:
Код PHP:
  1. VALUES (". $lastid .", 0, '". $position ."', '". $inConf->template ."')";
находим строчку (где то 546я):
Код PHP:
  1. VALUES ($lastid, $value, '{$showpos[$value]}')";
меняем ее на:
Код PHP:
  1. VALUES (". $lastid .", ". $value .", '". $showpos[$value] ."', '". $inConf->template ."')";
находим строчку (где то 594я):
Код PHP:
  1. $sql = "SELECT id FROM cms_modules_bind WHERE module_id = $id AND menu_id = 0 LIMIT 1";
меняем ее на:
Код PHP:
  1. $sql = "SELECT id FROM cms_modules_bind WHERE module_id = ". $id ." AND menu_id = 0 AND tpl='". $inConf->template ."' LIMIT 1";
находим строчку (где то 779я):
Код PHP:
  1. $bind_sql = "SELECT * FROM cms_modules_bind WHERE module_id = ".$mod['id'];
меняем ее на:
Код PHP:
  1. $bind_sql = "SELECT * FROM cms_modules_bind WHERE tpl='". $inConf->template ."' AND module_id = ". $mod['id'];
с этим файлом все теперь беремся за файл /core/classes/page.class.php

находим строчку (где то 365я):
Код PHP:
  1. INNER JOIN cms_modules_bind mb ON mb.module_id = m.id AND mb.menu_id IN ($menuid, 0)
меняем ее на:
Код PHP:
  1. INNER JOIN cms_modules_bind mb ON mb.module_id = m.id AND mb.menu_id IN ($menuid, 0) AND tpl = '". TEMPLATE ."'
Ну вот и все вроде, главное делать последовательно сперва запрос в базу потом изменяем файлы и заливаем на сервер, для тех кто не менял указанные файлы прикладываю архив с уже измененными файлами (за основу были взяты файлы из версии 1.10.1). Скачать архив с измененными файлами

И ВНИМАНИЕ!!! Тестим сперва на локалке например с использованием Open Server и только потом ставим на рабочий сайт!

Для спонсоров )))
Офтоп
P.S. Чуть позже выложу инструкцию как прикрутить визуальный редактор к блогам, а то видел на фрилансе искали исполнителей значит кому то нужно ))
P.P.S. Еще чуть позже выставлю на продажу первую версию моего нового компонента Медиа Блоги
Комментарии (1)
Letsgo #
: 0
Давно пора такое.

Голосуем

Самый нужный компонент