перестроить индексы и пути

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

перестроить индексы и пути

Post by von-hamster »

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

Если в кратце, то появилась задача переноса сайта на эту админку, а на сайте достаточно большое число страниц - ручками - не катит... Я хочу напрямую записать данные в базу, и при этом сгенерить недостающие данные...
koljan
Forum Members
Forum Members
Posts: 68
Joined: Wed Feb 20, 2008 3:15 pm

Re: перестроить индексы и пути

Post by koljan »

это http://forum.cmsmadesimple.org/index.ph ... 130.0.html Вам не подходит?
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: перестроить индексы и пути

Post by von-hamster »

нет, тк у меня уже есть информация в другой базе, к тому-же мне нужно только содержание, а не вся страница.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: перестроить индексы и пути

Post by Il_Burbero »

"нет, тк у меня уже есть информация в другой базе, к тому-же мне нужно только содержание, а не вся страница."

А мой модуль всю страницу то и не копирует, он копирует содержимое :) сохраняя пути к картинкам и объектам, название берет из тайтла ну и сохраняет стили и скрипты если нужно (отключаемо). Т.е. достаточно хтмлки с тайтлом и боди для импорта, скрипты и стили как дополнение при желании.

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

von-hamster можно более детально описать что ты хочешь?
Может я добавлю эту фишку в свой модуль. Я подумывал над обработкой SQL дампа, только пока не представляю как это можно сделать (уж очень по разному КМСки пишут странички в БД, у кого контент у кого еще чего) поэтому сомневаюсь вообще в целесообразности существования этой фишки.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: перестроить индексы и пути

Post by von-hamster »

Если говорить с точки зрения импорта, то мне не нужен весь - это во первых
Во вторых - у меня есть вложеность (тоесть в БД есть parent_id)
В третьих - структура присланой БД - это полный ПЭ, точнее с точки зрения БД - там все нормально, но там настолько все разбито (отдельно таблица параграфов, отдельно картинок, отдельно страниц, и еще куча дополнительных), что ужос... Кароче придется вручную (ну тоесть скриптом) собирать странички и перекидывать в БД...

Детально я хочу только одного: как запустить генерацию структуры... Тоесть я заполню основные данные (content_id, content_name, type, owner_id, parent_id, template_id, item_order,content_alias и тп), а потом вызову метод, который автоматом сформирует hierarchy, id_hierarchy, hierarchy_path... Дык вот вопрос заключается в том - какой это метод, и можно ли его вызвать (или что нужно сделать в админке, чтобы он сам запустился)?

ЗЫ... Если что-то не понятно - прошу простить - мне бывает сложно объяснить понятно что я хочу...  :)
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: перестроить индексы и пути

Post by Il_Burbero »

Тоесть я заполню основные данные (content_id, content_name, type, owner_id, parent_id, template_id, item_order,content_alias и тп)
Да, я так и делал. Только content_id не учавствует, автоматом генерится.

Создавал массив $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";
Переменная $contentparam['alias'] очень опасная вещь, как только будет дубль то ValidateData() сотрет пустышку, выдаст ошибку, соответственно нифига не добавится :)
Ну и навсякий случай совет - названия переменных брать из формы добавления контента (Контент » Страницы » Добавить новый контент), я дооолго тупил почему у меня не заполняется когда тупо взял названия из БД :), а у нас FillParams обрабатывает POST (обычно) запрос а там переменные не все совпадают по названиям.

Ну а вызывать в админке можно через модуль пустышку (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();      
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: перестроить индексы и пути

Post by von-hamster »

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

:)
Post Reply

Return to “Russian - русский”