Как скопировать все виджеты из одной темы в другую?

InstantCMS 2.X
#1 23 августа 2017 в 11:39
Как скопировать все виджеты из одной темы в другую?

а то при смене темы приходится перенастраивать и вновь расставлять виджеты. Может я не заметил и есть какой-то простой механизм копирования?

Также было бы здорово, если бы отдельную тему можно было назначить отдельному юзеру. Например верстальщик мог бы так тестировать новую тему на рабочем сайте, а остальные юзеры видели бы стандартную тему, что позволило бы не закрывать сайт на время технических работ.
#2 23 августа 2017 в 16:29
Как Вы себе это представляете? Если только у ваших шаблонов все позиции для виджетов имеют одинаковое название и настройки стилей.
#3 23 августа 2017 в 16:40

Как Вы себе это представляете? Если только у ваших шаблонов все позиции для виджетов имеют одинаковое название и настройки стилей.

@spartak
Представляется то это все очень просто..

Позиции не важны, важно хотя бы просто их перенести со всеми настройками пусть даже в блок "Неиспользуемые виджеты", откуда уже со всеми настройками можно было бы расставить по нужным местам. Столкнулся с подобной проблемой, когда для мобильного приложения делал отдельный шаблон — все виджеты нужно было перенастраивать с нуля.
#4 23 августа 2017 в 20:20

Позиции не важны, важно хотя бы просто их перенести со всеми настройками пусть даже в блок "Неиспользуемые виджеты",

@SmartControl
Это вообще не проблема. Один запрос в phpmyadmin. Для примера, копирование всех виджетов из шаблона default в позицию "неиспользуемые виджеты" шаблона new:
  1. INSERT INTO `cms_widgets_bind` (`template`, `widget_id`, `title`, `links`, `class`, `class_title`, `class_wrap`,
  2. `is_title`, `is_enabled`, `is_tab_prev`, `groups_view`, `groups_hide`, `options`, `page_id`, `position`, `ordering`, `tpl_body`,
  3. `tpl_wrap`, `device_types`)
  4. SELECT 'new', `widget_id`, `title`, `links`, `class`, `class_title`, `class_wrap`,
  5. `is_title`, `is_enabled`, `is_tab_prev`, `groups_view`, `groups_hide`, `options`, `page_id`, '_unused', `ordering`, `tpl_body`,
  6. `tpl_wrap`, `device_types` FROM `cms_widgets_bind` WHERE `template` = 'default';
#5 24 августа 2017 в 06:34

пусть даже в блок "Неиспользуемые виджеты", 

Я думаю, вам стоит написать тикет в официальном гите. Идея, на мой взгляд, здравая.

В вордпресс реализовано подобным образом. При смене темы все виджеты, для которых не нашлось позиций в новой теме, попадают в блок "неиспользуемые".

И да, проблема неудобство есть. Мне тоже приходилось лезть в базу, чтобы не настраивать все заново.
#6 24 августа 2017 в 07:49


Позиции не важны, важно хотя бы просто их перенести со всеми настройками пусть даже в блок "Неиспользуемые виджеты",

@SmartControl
Это вообще не проблема. Один запрос в phpmyadmin. Для примера, перенос всех виджетов из шаблона default в позицию "неиспользуемые виджеты" шаблона new:
  1. INSERT INTO `cms_widgets_bind` (`template`, `widget_id`, `title`, `links`, `class`, `class_title`, `class_wrap`,
  2. `is_title`, `is_enabled`, `is_tab_prev`, `groups_view`, `groups_hide`, `options`, `page_id`, `position`, `ordering`, `tpl_body`,
  3. `tpl_wrap`, `device_types`)
  4. SELECT 'new', `widget_id`, `title`, `links`, `class`, `class_title`, `class_wrap`,
  5. `is_title`, `is_enabled`, `is_tab_prev`, `groups_view`, `groups_hide`, `options`, `page_id`, '_unused', `ordering`, `tpl_body`,
  6. `tpl_wrap`, `device_types` FROM `cms_widgets_bind` WHERE `template` = 'default';

Ris

так задача не открепить от старой темы, а создать аналогично в новой теме.
#7 24 августа 2017 в 08:07
yury,
Ничего никуда не открепляется.
Виджеты копируются со всеми настройками в неиспользуемые виджеты нового шаблона.
SELECT 'new' — вместо new напишите имя вашего нового шаблона.
WHERE `template` = 'default' — вместо default — имя старого шаблона.

В результате в настройках вот такая картина:
#8 24 августа 2017 в 08:48
ок. спасибо за подсказку. а можно как то выборочно скопировать виджеты таким запросом?
#9 24 августа 2017 в 09:03

ок. спасибо за подсказку. а можно как то выборочно скопировать виджеты таким запросом?

yury
Конечно можно. Добавьте условие в WHERE
Например так: WHERE `template` = 'default' AND `position` = 'header' AND `tpl_body` = 'menu'
Скопируются только виджеты меню из шапки.
#10 24 августа 2017 в 10:38


ок. спасибо за подсказку. а можно как то выборочно скопировать виджеты таким запросом?

yury
Конечно можно. Добавьте условие в WHERE
Например так: WHERE `template` = 'default' AND `position` = 'header' AND `tpl_body` = 'menu'
Скопируются только виджеты меню из шапки.

Ris

спасибо огромное, выручили. а то уж думал придется мучиться переносить сто питсот виджетов руками
#11 24 августа 2017 в 11:03
Создал тикет. Присоединяйтесь github.com/instantsoft/icms2/issues/599
#12 24 августа 2017 в 19:42

важно хотя бы просто их перенести со всеми настройками пусть даже в блок "Неиспользуемые виджеты"

@SmartControl
Мешанина получится в "неиспользованных", если все в кучу свалить…
#13 24 августа 2017 в 19:47

Мешанина получится в "неиспользованных", если все в кучу свалить...

AndroS
Нормально всё получается, как ни странно.
Проверил, процесс раскладки уже готовых виджетов в десятки раз быстрее, чем настройка их заново.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.