как вывести переменную

#1 17 марта 2014 в 02:17
Здравствуйте, Подскажите. как в tpl вывести группу? Т.е: если юзер, к примеру, гость. Что то типа {$user.group_is_goust}-как это правильно написать?
#2 17 марта 2014 в 08:08
идете в БД, таблицу cms_user_groups и смотрите, какой id у группы "Гости". На свежеустановленом сайте у гостей id=8.
Потом в фронтенде пишете
  1. $id_group = cmsDatabase::getInstance()->get_field('cms_users', "id = '{$inUser->id}'", 'group_id');
  2. if($id_group == 8){$user = 'guest';}
Потом в фронтэнде не забываете передать переменную $user в шаблон
  1. assign('user', $user)->
Ну и наконец в tpl пишете
  1. {if $user == 'guest'}бла бла бла{/if}
#3 17 марта 2014 в 08:43
В классах есть ф-ция
  1. public static function getGroupIdByUserId($user_id){
  2.  
  3. return cmsDatabase::getInstance()->get_field('cms_users', "id='{$user_id}'", 'group_id');
  4.  
  5. }
Может её как то подключить сразу в модуле? И я не понял-в фронтэнде, это где? У меня пользовательский модуль, куда нужно вставить эту проверку, а фронтед для него где? И не понял это assign('user', $user)-> куда, на название модуля?
Сори, за тупость.
#4 17 марта 2014 в 09:02
а смысл менять шило на мыло? при обращении к этому ядерному методу вам все равно придется заранее узнать id юзера, который вызвал скрипт. и возратит этот метод ровно ту информацию, что и мой код — id группы. а уж как вы с этим id поступите, зависит от вашего мастерства программиста.

у пользовательского модуля нет фронтэнда. это просто запись в БД и все. если вы хотите создать настоящий модуль, берите мою утилиту Генератор модуля и дерзайте. Она вам создаст модуль со всеми причиндалами и даже пропишет его в БД — можете сразу наполнять фронтэнд модуля (в папке с именем модуля файл module.php) действиями. например, узнать id юзера или id его группы…
#5 17 марта 2014 в 09:16
Спасибо, обязательно воспользуюсь. Но в данный момент мне как то не нужен "настоящий" модуль.Я закинул в tpl файл шаблон слайдера и в одной из ссылок мне надо вставить это долбаное условие и всё. Как нибудь попроще не получится? И если можно в двух словах подскажите почему если я этот запрос вставляю в мой модуль в {php}...{/php}, то не работает?
#6 17 марта 2014 в 09:19

Подскажите. как в tpl вывести группу?

У меня пользовательский модуль


Откуда у пользовательского модуля взялся шаблон?
#7 17 марта 2014 в 09:23
Шаблон слайдера. И если не правильно выразился-пользовательский модуль, я имел ввиду module_slider.tpl
#8 17 марта 2014 в 10:10
Что там внутри module_slider.tpl совершенно неважно, шаблон не может существовать и выводится сам по себе, то есть где-то как минимум должно быть прописано вот это
  1. cmsPage::initTemplate('modules','module_slider.tpl')->display('module_slider.tpl');
Вот я и спрашиваю, где?… При условии что это пользовательский модуль.
#9 17 марта 2014 в 10:36
Да, нет.Всё намного проще.Берёшь модуль module.tpl. Копируешь, переименовываешь в module_… Вместо {module_body}, или как то так, вставляешь свой код.В моём случае код слайдера.И всё, При создании модуля в админки при выборе модуля появляется свой.Возможно для него где то и есть, то что ты написал. Я не знаю.
#10 17 марта 2014 в 11:23
Блин, что то не хочет php работать в модуле. Нашёл похожий модуль, быстренько переделал, установил.Всё встало.Работает.Но условие не работает. Стал проверять, в модуле не выводится переменая $user.
  1. <a title="к разделу" href="{if $user == 'children'}cms{else}dostup.html{/if}">{php}echo $user;{/php}</a>
Вот код module.php
  1. <?php
  2. /******************************************************************************/
  3. // //
  4. // InstantCMS v1.10 //
  5. // http://instantcms.ru/ //
  6. // //
  7. // written by InstantCMS Team, 2007-2012 //
  8. // produced by InstantSoft, (www.instantsoft.ru) //
  9. // //
  10. // LICENSED BY GNU/GPL v2 //
  11. // //
  12. /******************************************************************************/
  13.  
  14. function mod_karusel($module_id){
  15.  
  16. $inCore = cmsCore::getInstance();
  17. $inDB = cmsDatabase::getInstance();
  18.  
  19. $inCore->loadModel('content');
  20. $model = new cms_model_content();
  21.  
  22. $cfg = $inCore->loadModuleConfig($module_id);
  23.  
  24. if (!isset($cfg['subs'])) { $cfg['subs'] = 1; }
  25. if (!isset($cfg['cat_id'])) { $cfg['cat_id'] = 1; }
  26. if (!isset($cfg['newscount'])) { $cfg['newscount'] = 5; }
  27.  
  28. if($cfg['cat_id']){
  29.  
  30. if (!$cfg['subs']){
  31.  
  32. //выбираем из категории
  33. $model->whereCatIs($cfg['cat_id']);
  34.  
  35. } else {
  36.  
  37. //выбираем из категории и подкатегорий
  38. $rootcat = $inDB->getNsCategory('cms_category', $cfg['cat_id']);
  39. if(!$rootcat) { return false; }
  40. $model->whereThisAndNestedCats($rootcat['NSLeft'], $rootcat['NSRight']);
  41.  
  42. }
  43.  
  44. }
  45.  
  46. $id_group = cmsDatabase::getInstance()->get_field('cms_users', "id = '{$inUser->id}'", 'group_id');
  47. if($id_group == 10){$user = 'children';}
  48. else{
  49. echo'ERROR';
  50. }
  51.  
  52.  
  53. $inDB->where("con.showlatest = 1");
  54.  
  55. $inDB->orderBy('con.pubdate', 'DESC');
  56. $inDB->limitPage(1, $cfg['newscount']);
  57.  
  58. $content_list = $model->getArticlesList();
  59. if(!$content_list) { return false; }
  60.  
  61. $smarty = $inCore->initSmarty('modules', 'mod_karusel.tpl');
  62. $smarty->assign('articles', $content_list);
  63. $smarty->assign('user', $user);
  64. $smarty->assign('module_id', $module_id);
  65. $smarty->assign('cfg', $cfg);
  66. $smarty->display('mod_karusel.tpl');
  67.  
  68. return true;
  69.  
  70. }
  71. ?>
Где не так? Или всё не так? smile
#11 17 марта 2014 в 11:47
Этот запрос не выполняется.
  1. $id_group = cmsDatabase::getInstance()->get_field('cms_users', "id = '{$inUser->id}'", 'group_id');
  2. if($id_group == 10){$user = 'children';}
  3. else{
  4. echo'ERROR';
  5. }
Выдало ERROR
#12 17 марта 2014 в 14:14


Этот запрос не выполняется.

  1. $id_group = cmsDatabase::getInstance()->get_field('cms_users', "id = '{$inUser->id}'", 'group_id');
  2. if($id_group == 10){$user = 'children';}
  3. else{
  4. echo'ERROR';
  5. }
Выдало ERROR

Lora

Какбы логично, у вас же переменным $inCore $inDB, присваиваются значениея, а $inUser нет,
просто после
  1. $inCore = cmsCore::getInstance();
  2.  
  3. $inDB = cmsDatabase::getInstance();
вставте
  1. $inUser = cmsUser::getInstance();
#13 17 марта 2014 в 15:10
Большое спасибо, мил человек, вроде всё заработало.Единственное не понимаю, почему в модуле не выводятся переменные ни $user ни $group_id, ведь значения им присвоины?
{php}echo $user;{/php}
#14 18 марта 2014 в 11:59


Большое спасибо, мил человек, вроде всё заработало.Единственное не понимаю, почему в модуле не выводятся переменные ни $user ни $group_id, ведь значения им присвоины?
{php}echo $user;{/php}

Lora

у вас переменная:
1) не $group_id, а $id_group
2) $id_group не передается в шаблон
3) $user имеет значение только в том слечае если $id_group равна 10, в противном случае она пуста.
#15 18 марта 2014 в 13:09
C $id_group понятно, спасибо. А $user не выводится таком виде {php}echo $user; {/php}/ В таком выводится {$user}.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.