Разработка сайтов на UMI.CMS
Знать UMI.CMS в совершенстве невозможно.
Даже сами разработчики знают о ней не все...

UMi

Ursa Minor

Добавление страниц с помощью api

Разберем на примере как добавить страницу с помощью api

Допустим, нам необходимо добавить в пакетном режиме пачку фотографий.
Для создания элемента используется метод addElement

Определяем папку где будут лежать картинки. У меня /images/cms/data/gallery/
Закачиваем их туда.

Считаем, что массив с фотографиями мы как-то подготовили. В примере для простотв я зписал данные прямо в массив.

Остальной код такой:

<?php
$с = cmsController::getInstance();
$р = umiHierarchy::getInstance();

//массив с данными. Как его получить - это отдельная песня, здесь ее не рассматриваем
$fotos = array(
array( 'name'=>'Моя фото 1',
'alt_name'=>'foto1',
'descr' =>'Тестовый хомячок'
),
array( 'name'=>'Моя фото 1',
'alt_name'=>'foto1',
'descr' => 'Тестовый хомячок'
)
);


//готовим данные
$hierarchy_type_id = 36;
$obj_type_id = 697;
$domain_id = 5;//у меня ид домена был 5. Свои данные посмотрите в админке
$lang_id = 1;//аналогично
$tpl_id = 32;//ид шаблона по которому будет выводиться фотография. У вас будет другой

$parent_id = 31860;//ид фотогалереи. подставить свое

foreach($fotos as $foto){//в цикле перебираем фото
$name = $foto['name'];
$alt_name = $foto['alt_name'];
$photo = './images/cms/data/gallery/'.$alt_name.'.jpg';
$descr = $foto['descr'];


$element_id = $h->addElement($parent_id, $hierarchy_type_id, $name, $alt_name, $obj_type_id, $domain_id, $lang_id, $tpl_id); //Создаем новый пустой элемент (новую страницу)

$element = $h->getElement($element_id,true,true); //Получаем только что созданный элемент
setPerms($element_id);//расставляем права доступа

if($data = $c->getModule("data"))
{
$data->saveEditedGroups($element_id); //Сохраняем все данные, полученные из динамических форм, построенных по типу данных
}


//Заполняем элемент всеми необходимыми значениями
$element->setIsActive();
$element->setValue("photo", $photo);
$element->setValue("descr", $descr);
$element->setValue("h1", $name);
$element->setValue("title", $name);
$element->commit();

}
?>

Теперь, чтобы наша страница была видна всем, кроме супервайзера, нужно задать на нее права доступа.

Если вы работаете из браузера можно писать так:

 

<?php
function setPerms($element_id) {
$users_module = cmsController::getInstance()->getModule("users");
$users_module->setPerms($element_id);
}
?>

права установятся как на предыдущую страницу.
 Увы, если вы работаете  из консоли  придется все группы пользователей заносить в масси вручную, я, во всяком случае, другого способа не нашел. И  выглядеть это будет так:

Для 2.7 и ниже:

<?php
function setPerms($element_id) {
permissionsCollection::getInsta nce()->resetElementPermissi ons($element_id);
$users_array = array(2374,2373);
foreach($users_array as $k=>$v){
permissionsCollection::getInstance()->setElementPermissions($v, $element_id, 1);
}
permissionsCollection::getInstance()->setElementPermissions(26888, $element_id, 2);
//26888 - группа редакторы у меня. Подставьте сюда ид группы, имеющей права на редактирование. (супервайзер по умолчанию имеет права на все)
}

?>

Для 2.8:

 

<?php
function setPerms($element_id) {
$p = permissionsCollection::getInstance();
//$p->resetElementPermissions($element_id);
$users_array = array(2374,2373);
foreach($users_array as $k=>$v){
$p->setElementPermissions($v, $element_id, 1);
}

 $p->setElementPermissions(26888, $element_id, 31);
}
?>

Разница в том, что в 2.8 права устанавливаются в диапазоне 0-31, до 2.8: 0-2

 

Теперь еще по работе в консоли

Для начала нам потребуется ssh-клиент. Берем putty http://putty.spb.ru/download.html
Если тарифный план не разрешает ssh лучше всего временно перейти на более дорогой, где он есть

В заголовке скрипта указать данные для лицензирования и необходимые параметры

#!/usr/local/php/bin/php
<?php


define("UMICMS_CLI_MODE", "1");

error_reporting(E_ALL);
//ini_set("error_reporting",E_ALL);
//ini_set("display_errors","on");

// UMI.CMS licensing
$_SERVER['SERVER_ADDR'] = '999.999.999.999';//IP сервера
$_SERVER['HTTP_HOST'] = 'some_domain.ru';

 $_SERVER['DOCUMENT_ROOT'] = '/home/s/sample';//путь от корня сервера. Посмотрите через вывод $_SERVER['DOCUMENT_ROOT'] или спросите у хостера
$_REQUEST['path'] = "/admin/";
chdir($_SERVER['DOCUMENT_ROOT'].'/');
ini_set('include_path', $_SERVER['DOCUMENT_ROOT'].'/');
include "./config.php";
?>

Для 2.8:

<?php

error_reporting(E_ALL);
ini_set("error_reporting",E_ALL);
ini_set("display_errors","on");

define("CURRENT_WORKING_DIR", '/home/s/sample');
$_SERVER['DOCUMENT_ROOT'] = '/home/s/sample';
define("ROOT",$_SERVER['DOCUMENT_ROOT']);

define("UMICMS_CLI_MODE", "1");

// UMI.CMS licensing
$_SERVER['SERVER_ADDR'] = '99.99.99.99';
$_SERVER['HTTP_HOST'] = 'some_domain.ru';
$_SERVER['HTTP_USER_AGENT'] = 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.22 Version/10.51';

$_REQUEST['path'] = "/admin/";
chdir($_SERVER['DOCUMENT_ROOT'].'/');
ini_set('include_path', $_SERVER['DOCUMENT_ROOT'].'/');


require CURRENT_WORKING_DIR . '/libs/config.php';


//общее


?>

 
Строка #!/usr/local/php/bin/php - это путь к интерпретатору php. Если вы не знаете его местоположение уточните в техподдержке хостера.


Кладем его в корень сайта и ставим права 777

Запускаем putty, вводим адрес хоста. первый раз putty выбросит окошко с грозным предупреждением - это потому что она еще не знает вашего сайта. Можно смело нажимать ДА. Откроется окошко консоли, вызывающее ностальгические воспоминания о временах DOS))

Основные команды unix можно посмотреть http://umi-cms.spb.su/ref/apache/putty/
Операция "вставить" - правая кнопка мыши.

Новости

30.10.2016

Обновлено описание макроса для вывода всех элементов справочника UMI.CMS с учетом версии 14.

 

21.07.2015

Памятка по обновлению до debian 8.1. Приятно вкусить все плюшки PHP 5.6

11.11.2014

Как выполнить SQL-запрос из bash-скрипта. Памятка

11.11.2014

Как отследить нагрузку сайта на сервер.

06.11.2014

Заготовка для галереи изображений с прокруткой. Не знаю, когда дойдут руки довести ее до вида плагина, поэтому открываю как есть. Можно доработать.

05.11.2014

Выкладываю как заготовку свой слайдер изображений на mootools

Все обновления