программинг своего модуля
программинг своего модуля
Всем ДД!
Пишу свой модуль для CMSMS основу всю сделал, но вот загвоздка..
нужно сделать чтоб нажимая на определенные ссылки появлялась страница новая
нашел как сделать иклюд новой странице но она появлется сверху уже имеющийся
МОжет кто юзал и знает как это обойти..
Пишу свой модуль для CMSMS основу всю сделал, но вот загвоздка..
нужно сделать чтоб нажимая на определенные ссылки появлялась страница новая
нашел как сделать иклюд новой странице но она появлется сверху уже имеющийся
МОжет кто юзал и знает как это обойти..
Re: программинг своего модуля
Без конкректного примера сложно сказать, что Вы там делаете. Смотрите APInegrem wrote:Всем ДД!
Пишу свой модуль для CMSMS основу всю сделал, но вот загвоздка..
нужно сделать чтоб нажимая на определенные ссылки появлялась страница новая
нашел как сделать иклюд новой странице но она появлется сверху уже имеющийся
МОжет кто юзал и знает как это обойти..
Метод CMSModule::CreateFrontendLink подменяет выдачу модуля, если inline=true или выдачу всего содержимого ({content}), если false
Метод CMSModule::Redirect переводит на другую страницу.
Re: программинг своего модуля
Спасибо!
Именно CMSModule::Redirect мне и нужен был, просто правильный синтаксис найти не мог
Именно CMSModule::Redirect мне и нужен был, просто правильный синтаксис найти не мог
Re: программинг своего модуля
Оказалось все не так просто
создал ссылку на редактирование материала
$editur[$row['id']] = $this->CreateLink($id, 'defaultadmin', $returnid, $gCms->variables['admintheme']->DisplayImage('icons/system/edit.gif', $this->Lang('edit'),'','','systemicon'), array('editid'=>$ecity_ur_id[$row['id']]));
и затем проверим значение показываю форму редактирования с другой странице..
if (isset($params['editid'])) {
$smarty =& $this->smarty;
$smarty->assign('defaulttemplateform_title',$title);
$smarty->assign('info_title',$info);
$smarty->assign('startform',
$this->CreateFormStart($id,'setdefaulttemplate',$returnid,'post','',false,'',
array('prefname'=>$prefname,
'active_tab'=>$active_tab,
'filename'=>$filename)));
$smarty->assign('editing',$this->Lang('editing'));
$smarty->assign('input_template', $this->CreateInputText($id, 'event_name', $ecity_ur[$params['editid']], 30));
//$smarty->assign('input_template',$this->CreateInputText(false,$id,
// $this->GetPreference($prefname),
//'input_template'));
$smarty->assign('submit',$this->CreateInputSubmit($id,'submit',$this->Lang('submit')));
$smarty->assign('cancel',$this->CreateInputSubmit($id,'submit',$this->Lang('cancel')));
$smarty->assign('endform',
$this->CreateFormEnd());
echo $this->ProcessTemplate('edit.tpl');
}
взял для примера новостной блок
Но все равно выводя эту форму, она показывается в верхней части а нижнаяя часть остается.(см изображение)
Как можно показать эту форму но чтоб нижняя часть не показывалась..

создал ссылку на редактирование материала
$editur[$row['id']] = $this->CreateLink($id, 'defaultadmin', $returnid, $gCms->variables['admintheme']->DisplayImage('icons/system/edit.gif', $this->Lang('edit'),'','','systemicon'), array('editid'=>$ecity_ur_id[$row['id']]));
и затем проверим значение показываю форму редактирования с другой странице..
if (isset($params['editid'])) {
$smarty =& $this->smarty;
$smarty->assign('defaulttemplateform_title',$title);
$smarty->assign('info_title',$info);
$smarty->assign('startform',
$this->CreateFormStart($id,'setdefaulttemplate',$returnid,'post','',false,'',
array('prefname'=>$prefname,
'active_tab'=>$active_tab,
'filename'=>$filename)));
$smarty->assign('editing',$this->Lang('editing'));
$smarty->assign('input_template', $this->CreateInputText($id, 'event_name', $ecity_ur[$params['editid']], 30));
//$smarty->assign('input_template',$this->CreateInputText(false,$id,
// $this->GetPreference($prefname),
//'input_template'));
$smarty->assign('submit',$this->CreateInputSubmit($id,'submit',$this->Lang('submit')));
$smarty->assign('cancel',$this->CreateInputSubmit($id,'submit',$this->Lang('cancel')));
$smarty->assign('endform',
$this->CreateFormEnd());
echo $this->ProcessTemplate('edit.tpl');
}
взял для примера новостной блок
Но все равно выводя эту форму, она показывается в верхней части а нижнаяя часть остается.(см изображение)
Как можно показать эту форму но чтоб нижняя часть не показывалась..

Re: программинг своего модуля
Оказалось, что Вы в административной панели, а я сначала подумала, что ссылка нужна во фронтенде. Не совсем понятна Ваша структура, вот, например, edit.tpl что содержит? Я обычно под каждую страницу делаю свой action, чтобы не пихать в defaultadmin все подряд. То есть, создаю ссылку:negrem wrote:Оказалось все не так просто
Как можно показать эту форму но чтоб нижняя часть не показывалась..
Code: Select all
$editur[$row['id']] = $this->CreateLink($id, 'edit', $returnid, $gCms->variables['admintheme']->DisplayImage('icons/system/edit.gif', $this->Lang('edit'),'','','systemicon'), array('editid'=>$ecity_ur_id[$row['id']]));
defaultadmin.action.php + admin.tpl
edit.action.php + edit.tpl
add.action.php + add.tpl
и так далее.
Вот это неверно, Вы своей ссылкой на ту же страницу defaultadmin пересылаете, а не на другую, т. е. по сути просто defaultadmin перезагружаете, а в моем примере была бы на самом деле новая страница + отдельный шаблон.negrem wrote:и затем проверим значение показываю форму редактирования с другой странице.
Re: программинг своего модуля
да все разобрался, а то незнал как кидать в др файлы. СПасибо большое!
тоже сделал как правильно, а то девалтадмин весь забит был.
тоже сделал как правильно, а то девалтадмин весь забит был.
Re: программинг своего модуля
Возникла проблема с пользовательной стороной..
Пробывал сам разобраться но так что то ничего не получилось.
В крации: вывожу 6 зависимых селектов, которые берут данные с базы.
В зависимости от выбранного элемента меняется следующий.
Использую json и именно из-за этого думаю не работает вся система.
//беру с базы что надо
$ko = array();
while ($row = mysql_fetch_array($result))
{$ko[$row['id']] = $row['name'];}
echo json_encode($ko);
}
// функция вывода данных селекта
function loadKo(select)
{var koSelect = $('select[name="ko"]');
koSelect.attr('disabled', 'disabled'); // делаем список городов не активным
// послыаем AJAX запрос, который вернёт список городов для выбранной области
$.getJSON('index.php', {action:'getKo', id:select.value}, function(koList){
koSelect.html(''); // очищаем список городов
// заполняем список городов новыми пришедшими данными
$.each(koList, function(i2){
koSelect.append('<option value="' + i2 + '">' + this + '</option>'); });
koSelect.removeAttr('disabled'); // делаем список городов активным
});
}
Скрипт взял готовый в инете и переделал как мне надо, если просто запустить скрипт без cms все отлично работает.
Скрипт использует jquery библиотеку.
Пробывал прикручивать с использованием шаблона но подумал может нужно там как то показывать данные какие то дополнительные для json, затем попробывал простым include'ом вывести..всё выводиться но селекты не активны и показывает что данные не поступают через json запросы.
Может какие-то надо прописать что использую json или даже в крайнем случае можно показать через iframe как то?
Пробывал сам разобраться но так что то ничего не получилось.
В крации: вывожу 6 зависимых селектов, которые берут данные с базы.
В зависимости от выбранного элемента меняется следующий.
Использую json и именно из-за этого думаю не работает вся система.
//беру с базы что надо
$ko = array();
while ($row = mysql_fetch_array($result))
{$ko[$row['id']] = $row['name'];}
echo json_encode($ko);
}
// функция вывода данных селекта
function loadKo(select)
{var koSelect = $('select[name="ko"]');
koSelect.attr('disabled', 'disabled'); // делаем список городов не активным
// послыаем AJAX запрос, который вернёт список городов для выбранной области
$.getJSON('index.php', {action:'getKo', id:select.value}, function(koList){
koSelect.html(''); // очищаем список городов
// заполняем список городов новыми пришедшими данными
$.each(koList, function(i2){
koSelect.append('<option value="' + i2 + '">' + this + '</option>'); });
koSelect.removeAttr('disabled'); // делаем список городов активным
});
}
Скрипт взял готовый в инете и переделал как мне надо, если просто запустить скрипт без cms все отлично работает.
Скрипт использует jquery библиотеку.
Пробывал прикручивать с использованием шаблона но подумал может нужно там как то показывать данные какие то дополнительные для json, затем попробывал простым include'ом вывести..всё выводиться но селекты не активны и показывает что данные не поступают через json запросы.
Может какие-то надо прописать что использую json или даже в крайнем случае можно показать через iframe как то?
-
- Forum Members
- Posts: 113
- Joined: Tue Jun 22, 2010 11:05 am
Re: программинг своего модуля
Ну во-первых JSON не использовал так что особенностей не знаю, однако мне кажется что вы запрос к неправильному файлу отправляете?negrem wrote: $.getJSON('index.php', {action:'getKo', id:select.value}, function(koList){
И еще идее для обычной ajax загрузки пример:
Code: Select all
var tmp = url + "&showtemplate=false";
var tmp2 = tmp.replace(/amp;/g,'');
$(dest).load(tmp2);
2) url - нужный урл - т.е. по которому cms выполнит требуемые действия - можете проверить просто перейдя по ссылке вручную и добавив в action модуля тестовый вывод...
3) var tmp2 = tmp.replace(/amp;/g,''); - а тут просто убираем все &
Re: программинг своего модуля
да я тоже так думал, поменял пути к файлу которому ответ возравщяется но все равно не работает.
Если просто запустить файл отдельно один и тот же, изменив конечно подключение к базе
то просто работает отлично
а внутри модуля все равно не работает
Если просто запустить файл отдельно один и тот же, изменив конечно подключение к базе
то просто работает отлично
а внутри модуля все равно не работает
-
- Forum Members
- Posts: 113
- Joined: Tue Jun 22, 2010 11:05 am
Re: программинг своего модуля
А конкретно можете показать какого вида ссылка? (не забывайте чято там не путь к файлу ап ссылка фронтенда вида:negrem wrote:да я тоже так думал, поменял пути к файлу которому ответ возравщяется но все равно не работает.
Если просто запустить файл отдельно один и тот же, изменив конечно подключение к базе
то просто работает отлично
а внутри модуля все равно не работает
http://vasya.ru/index.php?mact=ModuleNa ... 22&page=22
ну или можно наверное аналог с pretty_url