Каким образом можно перестроить индексы и пути.
Если в кратце, то появилась задача переноса сайта на эту админку, а на сайте достаточно большое число страниц - ручками - не катит... Я хочу напрямую записать данные в базу, и при этом сгенерить недостающие данные...
перестроить индексы и пути
Re: перестроить индексы и пути
это http://forum.cmsmadesimple.org/index.ph ... 130.0.html Вам не подходит?
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: перестроить индексы и пути
нет, тк у меня уже есть информация в другой базе, к тому-же мне нужно только содержание, а не вся страница.
- Il_Burbero
- Forum Members
- Posts: 128
- Joined: Tue Apr 15, 2008 10:36 am
Re: перестроить индексы и пути
"нет, тк у меня уже есть информация в другой базе, к тому-же мне нужно только содержание, а не вся страница."
А мой модуль всю страницу то и не копирует, он копирует содержимое
сохраняя пути к картинкам и объектам, название берет из тайтла ну и сохраняет стили и скрипты если нужно (отключаемо). Т.е. достаточно хтмлки с тайтлом и боди для импорта, скрипты и стили как дополнение при желании.
Я не писал в оффиц. инструкции но можно тупо сохранять странички в браузере, затем загружать их в папках с уникальным названием и импортировать этим модулем, за внутренние ссылки не ручаюсь, но картинки, объекты и разметка точно сохранятся (в боди перебиваются лишь пути картинок и объектов - относительные на абсолютные URL). Единственный минус папка аплоадс забъется кучей папок
с файлами.
Я хотел сделать сначала полный телепорт, но передумал, слишком уж вероятна "ошибка оператора"
и большая вариантность внешних и внутренних ссылок, вариантов построения сайта (кто разбивает по подпапкам, кто не разбивает), хотелось сделать более простую вещь, предусмотреть все варианты попросту нереально.
von-hamster можно более детально описать что ты хочешь?
Может я добавлю эту фишку в свой модуль. Я подумывал над обработкой SQL дампа, только пока не представляю как это можно сделать (уж очень по разному КМСки пишут странички в БД, у кого контент у кого еще чего) поэтому сомневаюсь вообще в целесообразности существования этой фишки.
А мой модуль всю страницу то и не копирует, он копирует содержимое

Я не писал в оффиц. инструкции но можно тупо сохранять странички в браузере, затем загружать их в папках с уникальным названием и импортировать этим модулем, за внутренние ссылки не ручаюсь, но картинки, объекты и разметка точно сохранятся (в боди перебиваются лишь пути картинок и объектов - относительные на абсолютные URL). Единственный минус папка аплоадс забъется кучей папок

Я хотел сделать сначала полный телепорт, но передумал, слишком уж вероятна "ошибка оператора"

von-hamster можно более детально описать что ты хочешь?
Может я добавлю эту фишку в свой модуль. Я подумывал над обработкой SQL дампа, только пока не представляю как это можно сделать (уж очень по разному КМСки пишут странички в БД, у кого контент у кого еще чего) поэтому сомневаюсь вообще в целесообразности существования этой фишки.
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: перестроить индексы и пути
Если говорить с точки зрения импорта, то мне не нужен весь - это во первых
Во вторых - у меня есть вложеность (тоесть в БД есть parent_id)
В третьих - структура присланой БД - это полный ПЭ, точнее с точки зрения БД - там все нормально, но там настолько все разбито (отдельно таблица параграфов, отдельно картинок, отдельно страниц, и еще куча дополнительных), что ужос... Кароче придется вручную (ну тоесть скриптом) собирать странички и перекидывать в БД...
Детально я хочу только одного: как запустить генерацию структуры... Тоесть я заполню основные данные (content_id, content_name, type, owner_id, parent_id, template_id, item_order,content_alias и тп), а потом вызову метод, который автоматом сформирует hierarchy, id_hierarchy, hierarchy_path... Дык вот вопрос заключается в том - какой это метод, и можно ли его вызвать (или что нужно сделать в админке, чтобы он сам запустился)?
ЗЫ... Если что-то не понятно - прошу простить - мне бывает сложно объяснить понятно что я хочу...
Во вторых - у меня есть вложеность (тоесть в БД есть parent_id)
В третьих - структура присланой БД - это полный ПЭ, точнее с точки зрения БД - там все нормально, но там настолько все разбито (отдельно таблица параграфов, отдельно картинок, отдельно страниц, и еще куча дополнительных), что ужос... Кароче придется вручную (ну тоесть скриптом) собирать странички и перекидывать в БД...
Детально я хочу только одного: как запустить генерацию структуры... Тоесть я заполню основные данные (content_id, content_name, type, owner_id, parent_id, template_id, item_order,content_alias и тп), а потом вызову метод, который автоматом сформирует hierarchy, id_hierarchy, hierarchy_path... Дык вот вопрос заключается в том - какой это метод, и можно ли его вызвать (или что нужно сделать в админке, чтобы он сам запустился)?
ЗЫ... Если что-то не понятно - прошу простить - мне бывает сложно объяснить понятно что я хочу...

- Il_Burbero
- Forum Members
- Posts: 128
- Joined: Tue Apr 15, 2008 10:36 am
Re: перестроить индексы и пути
Да, я так и делал. Только content_id не учавствует, автоматом генерится.Тоесть я заполню основные данные (content_id, content_name, type, owner_id, parent_id, template_id, item_order,content_alias и тп)
Создавал массив $contentparam с соотв значениями, напр $contentparam[content_name] = 'content'
После заполнения все очень просто, я даже сам удивился (поясню камментами)
Code: Select all
$contentops =& $gCms->GetContentOperations(); //вызываем операции с контентом
$contentobj = $contentops->CreateNewContent($contentparam['content_type']); //создаем новый контент пустышку
$contentobj->SetOwner($userid); //выставляем текущего владельца
$contentobj->FillParams($contentparam); //заполняем пустышку переменными
$error = $contentobj->ValidateData(); // ну здесь понятно без слов, проверка на вшивость
if ($error === FALSE) //делаем если ошибок нет
{
$contentobj->Save(); //сохраняем
$contentops->SetHierarchyPosition($contentobj->Id()); //выставляем правильную иерархию
audit($contentobj->Id(), $contentobj->Name(), 'Added Content'); //хз нужна ли она или нет я оставил.
}
else //делаем если ошибки
{
}
Code: Select all
$contentparam['firsttime'] = 1; //флажок, что то вроде "только что создано не редактировалось ниразу"
$contentparam['content_type'] = 'content'; //тип, т.к. имеется еще Разделитель и Секция заголовка
$contentparam['orig_content_type'] = 'content'; //хз нафиг надо но зачем то надо, обычно равен предыдущему
$contentparam['title'] = ' '; //переменная {title}
$contentparam['content_en'] = ' '; // переменная {content}
$contentparam['alias'] = $alias; //тут из названия понятно
$contentparam['parent_id'] = $parent_id; //ИД родителя
$contentparam['template_id'] = $template_id; //ИД шаблона
$contentparam['showinmenu'] = "on";
$contentparam['active'] = "on";
$contentparam['cachable'] = "on";

Ну и навсякий случай совет - названия переменных брать из формы добавления контента (Контент » Страницы » Добавить новый контент), я дооолго тупил почему у меня не заполняется когда тупо взял названия из БД

Ну а вызывать в админке можно через модуль пустышку (Module Maker). Единственный минус, для того чтобы запускать что то в админке нужно создать модуль т.е. обязательно класс основной и в нем действие по умолчанию action.default.php, шаблоны, язык - поэтому проще не парится поставить Module Maker. А шаблонизацию в action.default.php можно обойти (хотя это очень плохо) вот так
Code: Select all
echo $this->StartTabHeaders(); //заголовки табиков
echo $this->SetTabHeader('maintab', $this->Lang('maintab'), ('maintab' == $tab));
echo $this->EndTabHeaders();
echo $this->StartTabContent();
echo $this->StartTab('maintab', $params); //содержимое табика
// тут можно вызывать/делать что хочешь и все это будет в админке.
echo $this->EndTab();
echo $this->EndTabContent();
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: перестроить индексы и пути
Решилось все достаточно просто...
После импорта я создал новую пустую страничку - после этого появилась иерархия
Затем я изменил порядок двух страниц - проставилось остальное

После импорта я создал новую пустую страничку - после этого появилась иерархия
Затем я изменил порядок двух страниц - проставилось остальное
