Перейти к содержанию
CMSTOOLS.org - форум поддержки и развития CMS

[Модуль] товары для групп как вк


Рекомендуемые сообщения

1 заходим в system открыть там файл mod.php

вставляем туда

//тавары
case "groups_shop":
		include ENGINE_DIR.'/modules/groups_shop.php';
	break;

2 ищем в корне сайта файл htaccess

Вставляем туда

 #Тавары
    RewriteCond %{QUERY_STRING} ^act=([a-z]+)
	RewriteRule ^(.*)public_shop([0-9]+) $1index.php?go=groups_shop&public_id=$2 [QSA,L]
	RewriteCond %{QUERY_STRING} ^page=([0-9]+)
	RewriteRule ^(.*)public_shop([0-9]+) $1index.php?go=groups_shop&public_id=$2 [QSA,L]
	RewriteRule ^public_shop([0-9]+)(/?)+$ index.php?go=groups_shop&public_id=$1 [L]

3 заходим в templates\Default\public открыть там файл main.tpl

вставляем туда

[shop]<a href="/public_shop{id}" onClick="Page.Go(this.href); return false" class="fl_l" style="text-decoration:none"><div class="albtitle" style="border-bottom:0px">{shop-num} <b id="langForum">Товары</b></div></a>
 [shop_privacy]<a href="/public_shop{id}?act=new" onClick="Page.Go(this.href); return false" class="fl_r {no}" style="text-decoration:none"><div class="albtitle" style="border-bottom:0px;color:#ddd">Добавить товар</div></a>[/shop_privacy]
 <div class="clear"></div>{shops}
 <br><div class="clear"></div>[/shop]

 

4 заходим в templates\Default\public\edit открыть там файл general.tpl
ищем

<div class="texta">&nbsp;</div>
   <div class="html_checkbox" id="comments" onClick="myhtml.checkbox(this.id)" style="margin-bottom:8px">Комментарии включены</div>
  <div class="mgclr clear"></div>

после ставим

<div class="texta">&nbsp;</div>
   <div class="html_checkbox" id="shop" onClick="myhtml.checkbox(this.id)" style="margin-bottom:8px">Товары</div>
  <div class="mgclr clear"></div>

тамже ищем

 <input type="hidden" id="intog" value="{val_intog}" />
  <div class="mgclr"></div>
  <div class="texta">{translate=groups_28}</div>
  <div class="sett_privacy" onClick="groups.privacyOpen('forum')" id="forum_lnk_wall1" style="margin-top: 3px;">{val_forums_text}</div>
  <div class="sett_openmenu no_display" id="privacyMenu_forum" style="margin-top: 3px;margin-left: 255px;width: 272px;">
  <div id="selected_p_wall_lnk_wall1" class="sett_selected" onClick="groups.privacyClose('forum')">{val_forums_text}</div>
  <div class="sett_hover" onClick="groups.setPrivacy('forum', 'Открытые', '2', 'forum_lnk_wall1')">{translate=groups_29}</div>
  <div class="sett_hover" onClick="groups.setPrivacy('forum', 'Ограниченные', '3', 'forum_lnk_wall1')">{translate=groups_30}</div>
  </div>

 <input type="hidden" id="forum" value="{val_forum}" />

 после ставим

<div class="mgclr"></div>
  <div class="texta">Товары:</div>
  <div class="sett_privacy" onClick="groups.privacyOpen('shop')" id="shop_lnk_wall1" style="margin-top: 3px;">{val_shop_text}</div>
  <div class="sett_openmenu no_display" id="privacyMenu_shop" style="margin-top: 3px;margin-left: 255px;width: 272px;">
  <div id="selected_p_wall_lnk_wall1" class="sett_selected" onClick="groups.privacyClose('shop')">{val_shop_text}</div>
  <div class="sett_hover" onClick="groups.setPrivacy('shop', 'Открытые', '2', 'shop_lnk_wall1')">Открытые (Видят все пользователи)</div>
  <div class="sett_hover" onClick="groups.setPrivacy('shop', 'Ограниченные', '3', 'shop_lnk_wall1')">Ограниченные (Видят только подписчики)</div>
  </div>
  
  
  <input type="hidden" id="shop" value="{val_shop}" />

5 заходим в templates\Default\js открыть там файл profile.js

и вставляем туда

Спойлер
//Тавары
var public_shop = {
  New: function(i){
    if($('#title_n').val() != 0){
      if($('#text').val() != 0 || $('#vaLattach_files').val() != 0){
        butloading('forum_sending', 70, 'disabled');
        $.post('/index.php?go=groups_shop&act=new_send', {public_id: i, cat: $('#cat_n').val(), url: $('#url_n').val(), cena: $('#cena_n').val(), title: $('#title_n').val(), text: $('#text').val(), attach_files: $('#vaLattach_files').val()}, function(d){
          Page.Go('/public_shop'+i+'?act=view&id='+d);
        });
      } else
        setErrorInputMsg('text');
    } else
      setErrorInputMsg('title_n');
  },
  Page: function(p){
    if($('#load_forum_page_lnk').text() == lang_199){
      textLoad('load_forum_page_lnk');
      $.post('/index.php?go=groups_shop&public_id='+p, {a: '1', page: page}, function(d){
        page++;
        $('#ForumPage').append(d);
        $('#load_forum_page_lnk').text(lang_199);
        if(!d){
          $('#'+$('.forum_bg2:last').attr('id')).css('margin-bottom', '-15px');
          $('#forum_page_lnk').hide();
          $('#load_forum_page_lnk').text('');
        }
      });
    }
  },
  SendMsg: function(i){
    if($('#fast_text_1').val() != 0){
      butloading('msg_send', 56, 'disabled');
      $.post('/index.php?go=groups_shop&act=add_msg', {fid: i, msg: $('#fast_text_1').val(), answer_id: $('#answer_comm_id1').val()}, function(d){
        updateNum('#msgNumJS', 1);
        langNumric('langMsg', $('#msgNumJS').text(), lang_200, lang_201, lang_202, lang_200, lang_200);
        $('#msg').append(d);
        $('#fast_text_1').val('').focus();
        butloading('msg_send', 56, 'enabled', lang_box_send);
        $('#answer_comm_for_1').html('');
        $('#answer_comm_id1').val('');
      });
    } else
      setErrorInputMsg('fast_text_1');
  },
  MsgPage: function(f){
    if($('#load_forum_msg_lnk').text() == lang_203){
      textLoad('load_forum_msg_lnk');
      $.post('/index.php?go=groups_shop&act=prev_msg', {fid: f, first_id: $('.forum_msg_border2:first').attr('id'), page: page}, function(d){
        page++;
        $('#msgPrev').html(d+$('#msgPrev').html());
        $('#load_forum_msg_lnk').text(lang_203);
        if(!d){
          $('#load_forum_msg_lnk').text(lang_204).css('background', '#fff');
          $('#forum_msg_lnk').attr('onClick', 'public_shop.HidePage('+f+')');
        }
      });
    }
  },
  HidePage: function(f){
    $('#forum_msg_lnk').attr('onClick', 'public_shop.MsgPage('+f+')');
    $('#load_forum_msg_lnk').text(lang_203).css('background', 'rgb(233, 237, 241)');
    $('#msgPrev').html('');
    page = 1;
  },
  EditText: function(){
    at = $('#attach').html();
    $('#teckText, #editLnk').hide();
    $('#editTextTab').show();
    $('#editText').focus();
  },
  CloseEdit: function(){
    $('#teckText, #editLnk, #editClose').show();
    $('#editTextTab').hide();
  },
  SaveEdit: function(i){
    $('#editClose').hide();
    butloading('saveedit', 55, 'disabled');
    $.post('/index.php?go=groups_shop&act=saveedit', {text: $('#editText').val(), fid: i}, function(d){
      if(!at) at = '';
      $('#teckText').html(d+'<span id="attach">'+at+'</span>');
      Forum.CloseEdit();
      butloading('saveedit', 55, 'enabled', lang_box_save);
    });
  },
  EditTitle: function(){
    settings.privacyClose('msg');
    $('#titleTeck').hide();
    $('#editTitle').show();
    $('#title').focus();
  },
  CloseEditTitle: function(){
    $('#titleTeck').show();
    $('#editTitle').hide();
  },
  SaveEditTitle: function(f){
    if($('#title').val() != 0){
      Forum.CloseEditTitle();
      $('#editTitleSaved').text($('#title').val());
      $.post('/index.php?go=groups_shop&act=savetitle', {fid: f, title: $('#title').val()});
    } else
      setErrorInputMsg('title');
  },
  Fix: function(f){
    settings.privacyClose('msg');
    if($('#fix_text').text() == lang_205){
      $('#fix_text').text(lang_206);
      $('.forum_infos_div').html(lang_207).fadeIn('fast');
    } else {
      $('#fix_text').text(lang_205);
      $('.forum_infos_div').html(lang_208).fadeIn('fast');
    }
    $.post('/index.php?go=groups_shop&act=fix', {fid: f});
  },
  Status: function(f){
    settings.privacyClose('msg');
    if($('#status_text').text() == lang_209){
      $('#status_text').text(lang_210);
      $('.forum_infos_div').html(lang_211).fadeIn('fast');
      $('.forum_addmsgbg').hide();
    } else {
      $('#status_text').text(lang_209);
      $('.forum_infos_div').html(lang_212).fadeIn('fast');
      $('.forum_addmsgbg').show();
    }
    $.post('/index.php?go=groups_shop&act=status', {fid: f});
  },
  DelBox: function(f, p){
    settings.privacyClose('msg');
    Box.Show('del_forthe', 350, lang_title_del_photo, '<div style="padding:15px;" id="del_status_text_forum">'+lang_213+'</div>', lang_box_canсel, lang_box_yes, 'public_shop.StartDelete('+f+', '+p+')');
  },
  StartDelete: function(f, p){
    $('#box_loading').show();
    ge('box_butt_create').disabled = true;
    $('#del_status_text_forum').text(lang_214);
    $.post('/index.php?go=groups_shop&act=del', {fid: f}, function(d){
      Page.Go('/public_shop'+p);
    });
  },
  DelMsg: function(i){
    $('#'+i).html('<span class="color777">'+lang_215+'</span>');
    updateNum('#msgNumJS');
    langNumric('langMsg', $('#msgNumJS').text(), lang_200, lang_201, lang_202, lang_200, lang_200);
    $.post('/index.php?go=groups_shop&act=delmsg', {mid: i});
  },
  CreateVote: function(f){
    if($('#vote_title').val() !=0){
      if($('#vote_answer_1').val() != 0){
        butloading('savevote', 75, 'disabled', '');
        $.post('/index.php?go=groups_shop&act=createvote', {fid: f, vote_title: $('#vote_title').val(), vote_answer_1: $('#vote_answer_1').val(), vote_answer_2: $('#vote_answer_2').val(), vote_answer_3: $('#vote_answer_3').val(), vote_answer_4: $('#vote_answer_4').val(), vote_answer_5: $('#vote_answer_5').val(), vote_answer_6: $('#vote_answer_6').val(), vote_answer_7: $('#vote_answer_7').val(), vote_answer_8: $('#vote_answer_8').val(), vote_answer_9: $('#vote_answer_9').val(), vote_answer_10: $('#vote_answer_10').val()}, function(d){
          Page.Go(location.href);
        });
      } else
      setErrorInputMsg('vote_answer_1');
    } else
      setErrorInputMsg('vote_title');
  },
  RemoveForAttach: function(){
    $('#attach_block_vote').hide();
    $('#vote_title, #vote_answer_1, #vote_answer_2').val('');
    $('#addNewAnswer').html('<a class="cursor_pointer" onClick="Votes.AddInp()">'+lang_198+'</a>');
    $('#addDelAnswer').html(lang_197);
    $('#attatch_vote_title').text('');
    $('#answerNum').val('2');
    for(i = 2; i <= 10; i++)
      $('#div_inp_answr_'+i).remove();
  },
  VoteDelBox: function(f){
    Box.Show('del_forthe', 350, lang_title_del_photo, '<div style="padding:15px;" id="del_status_text_forum">'+lang_216+'</div>', lang_box_canсel, lang_box_yes, 'public_shop.StartVoteDelete('+f+')');
  },
  StartVoteDelete: function(f){
    Box.Close();
    $('#voteblockk').hide();
    $('#votelnk').html('<div class="sett_hover" onClick="settings.privacyClose(\'msg\'); $(\'#attach_block_vote\').slideDown(100); $(\'#vote_title\').focus()">'+lang_217+'</div>');
    $.post('/index.php?go=groups_shop&act=delvote', {fid: f});
  }
}

 

тамже находим

var val_forum = $('#forum').val();

ниже ставим

var val_shop = $('#shop').val();

тамже ищем

$.post('/?go=groups&act=saveinfo', {id: id, title: title, descr: descr, comments: comments, country: country, city: city, catid: catid, subcatid: subcatid, adres_page: adres_page, val_wall1: val_wall1, val_forum: val_forum, 

после ставим

val_shop: val_shop,

вэтайже строчке 

ищем

discussion: $('#discussion').val(),

после нее  ставим

shop: $('#shop').val(),

тамже ищем

$('#privacyMenu_wall1','#privacyMenu_intog','#privacyMenu_forum',').fadeOut(120);

после вставить

#privacyMenu_shop'

тамже ищем

if(oi != 'privacyMenu_wall1' && oi != 'privacyMenu_intog' && oi != 'privacyMenu_forum' && oi != 'wall_lnk_wall1' && oi != 'intog_lnk_wall1'&& oi != 'forum_lnk_wall1')

внее вставить

&& oi != 'shop_lnk_wall1' && oi != 'privacyMenu_shop'

6 заходим в system\modules открыть там файл groups.php
ищем там

//################### Сохранение отредактированых данных группы ###################//
		case "saveinfo":
			NoAjaxQuery();
			$id = intval($_POST['id']);
			$comments = intval($_POST['comments']);

после ставим

$shop = intval($_POST['shop']);

тамже находим

$val_forum = intval($_POST['val_forum']);

после ставим

 $val_shop = intval($_POST['val_shop']);

тамже находим

 if($val_forum <= 0 OR $val_forum > 3) $val_forum = 1;

 после ставим

if($val_shop <= 0 OR $val_shop > 3) $val_shop = 1;

 тамже находим

$user_privacy = "val_wall1|{$val_wall1}||val_intog|{$val_intog}||val_forum|{$val_forum}||";

 после ставим

 val_shop|{$val_shop}||

тамже находим 

 $db->query("UPDATE `".PREFIX."_communities` SET title = '{$title}', descr = '{$descr}', country = '{$country}', city = '{$city}', category = '{$catid}', subcategory = '{$subcatid}', country_city_name = '{$country_city_name}', comments = '{$comments}',

после ставим

shop = '{$shop}',

тамже находим

//Проверка на админа
$row = $db->super_query("SELECT id, title, album, 

и ставим в запрос

shop,

тамже находим

//Обсуждения
		if($row['discussion'])
			$tpl->set('{settings-discussion}', 'discussion');
		else
		    $tpl->set('{settings-discussion}', 'none');

после ставим

//Товары
		if($row['shop'])
			$tpl->set('{settings-shop}', 'shop');
		else
		    $tpl->set('{settings-shop}', 'none');

тамже ищем

// Приватность группы
$rowd = xfieldsdataload($row['privacy']);

после ставим

$tpl->set('{val_shop}', $rowd['val_shop']);
 $tpl->set('{val_shop_text}', strtr($rowd['val_shop'], array('2' => 'Открытые (Видят все пользователи', '3' => 'Ограничены (Видят только подписчики)')));

7 заходим в system\modules открыть там файл public.php

ищем

	$row = $db->super_query("SELECT id, title, descr, group_real, album, adsens, public_rating,  traf, ulist, flist, photo, date, admin, feedback, comments, real_admin, rec_num, del, data_del, ban, ban_list, adres, audio_num, forum_num,

после ставим

shop_num, shop,

тамже ищем

// Приватность
		if($user_privacy_loting['val_wall1'] == 1){
	        $tpl->set_block("'\\[wall_privacy\\](.*?)\\[/wall_privacy\\]'si","");
		} else {
			$tpl->set('[wall_privacy]', '');
			$tpl->set('[/wall_privacy]', '');
		}
		if($user_privacy_loting['val_wall1'] == 3 and $public_admin == false) {
		    $tpl->set_block("'\\[wall_privacy_admin\\](.*?)\\[/wall_privacy_admin\\]'si","");
		} else {
			$tpl->set('[wall_privacy_admin]', '');
			$tpl->set('[/wall_privacy_admin]', '');

после ставим

if($user_privacy_loting['val_shop'] == 3){
		    $tpl->set_block("'\\[shop_privacy\\](.*?)\\[/shop_privacy\\]'si","");
		} else {
			$tpl->set('[shop_privacy]', '');
			$tpl->set('[/shop_privacy]', '');
		}

тамже ищем

//Обсуждения
		if($row['discussion']){
			$tpl->set('{settings-discussion}', 'discussion');
			$tpl->set('[discussion]', '');
			$tpl->set('[/discussion]', '');
		} else {
			$tpl->set('{settings-discussion}', 'none');
			$tpl->set_block("'\\[discussion\\](.*?)\\[/discussion\\]'si","");
			
		}

после ставим

 //тавары
	if($row['shop']){
			$tpl->set('{settings-shop}', 'shop');
			$tpl->set('[shop]', '');
			$tpl->set('[/shop]', '');
		} else {
			$tpl->set('{settings-shop}', 'none');
			$tpl->set_block("'\\[shop\\](.*?)\\[/shop\\]'si","");
			
		}

тамже ищем

$row_last_user = $db->super_query("SELECT user_search_pref FROM `".PREFIX."_users` WHERE user_id = '{$row_forum['lastuser_id']}'");
				$last_userX = explode(' ', $row_last_user['user_search_pref']);
				$row_last_user['user_search_pref'] = gramatikName($last_userX[0]).' '.gramatikName($last_userX[1]);
	
				$row_forum['title'] = stripslashes($row_forum['title']);
				
				$msg_num = $row_forum['msg_num'].' '.gram_record($row_forum['msg_num'], 'msg');

				$last_date = megaDateNoTpl($row_forum['lastdate']);

				$thems .= "<div class=\"forum_bg\"><div class=\"forum_title cursor_pointer\" onClick=\"Page.Go('/forum{$row['id']}?act=view&id={$row_forum['fid']}'); return false\">{$row_forum['title']}</div><div class=\"forum_bottom\">{$msg_num}. {$lang['lang_1190']} <a href=\"/u{$row_forum['lastuser_id']}\" onClick=\"Page.Go(this.href); return false\">{$row_last_user['user_search_pref']}</a>, {$last_date}</div></div>";
				
			}
			
			$tpl->set('{thems}', $thems);
		
		} else 
			$tpl->set('{thems}', '<div class="wall_none">'.$lang['lang_1191'].'</div>');

выше ставим

if(!$row['shop_num']) $row['shop_num'] = '';
		$tpl->set('{shop-num}', $row['shop_num']);
		
		if($row['shop_num'] AND $row['shop']){
			
			$sql_shop = $db->super_query("SELECT fid, title, lastuser_id, url, cena, lastdate, msg_num FROM `".PREFIX."_communities_shop` WHERE public_id = '{$row['id']}' ORDER by `fixed` DESC, `lastdate` DESC, `fdate` DESC LIMIT 0, 5", 1, "groups_shop/shop{$row['id']}");
			
			foreach($sql_shop as $row_shop){

тамже ищем

$row_last_user = $db->super_query("SELECT user_search_pref FROM `".PREFIX."_users` WHERE user_id = '{$row_shop['lastuser_id']}'");
				$last_userX = explode(' ', $row_last_user['user_search_pref']);
				$row_last_user['user_search_pref'] = gramatikName($last_userX[0]).' '.gramatikName($last_userX[1]);

ниже ставим
 

$row_shop['title'] = stripslashes($row_shop['title']);
				
				$msg_num = $row_shop['msg_num'].' '.gram_record($row_shop['msg_num'], 'msg');

				$last_date = megaDateNoTpl($row_shop['lastdate']);

				$thems .= "<div class=\"page_market_item cursor_pointer\">
  <a onClick=\"Page.Go('/public_shop{$row['id']}?act=view&id={$row_shop['fid']}'); return false\">
    <img class=\"page_market_item_img cursor_pointer\" src=\"{$row_shop['url']}\">
  </a>
  <a class=\"page_market_item_link cursor_pointer\" onClick=\"Page.Go('/public_shop{$row['id']}?act=view&id={$row_shop['fid']}'); return false\">
    <div class=\"page_market_item_title cursor_pointer\">{$row_shop['title']}</div>
  </a>
  <div class=\"page_market_price cursor_pointer\">{$row_shop['cena']} грн.</div>
</div>";
				
			}
			
			$tpl->set('{shops}', $thems);
		
		} else 
			$tpl->set('{shops}', '<div class="wall_none">В сообществе ещё нет товаров.</div>');
			

заходим в базу даных во вкалдку vii_communities    

саздаем там 2 поле

shop_num mediumint 8

shop tinyint 1

делаем sql запрос

Спойлер
CREATE TABLE `vii_communities_shop` (
  `fid` int(11) UNSIGNED NOT NULL,
  `public_id` int(11) UNSIGNED NOT NULL,
  `fuser_id` int(11) UNSIGNED NOT NULL,
  `title` varchar(65) NOT NULL,
  `cena` varchar(65) NOT NULL,
  `text` text NOT NULL,
  `url` text NOT NULL,
  `cat` text NOT NULL,
  `attach` text NOT NULL,
  `fdate` varchar(10) NOT NULL,
  `msg_num` mediumint(8) UNSIGNED NOT NULL,
  `lastdate` varchar(10) NOT NULL,
  `lastuser_id` int(11) UNSIGNED NOT NULL,
  `fixed` tinyint(2) UNSIGNED NOT NULL,
  `status` tinyint(2) UNSIGNED NOT NULL,
  `vote` mediumint(8) UNSIGNED NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
	

CREATE TABLE `vii_communities_shop_msg` (
  `mid` int(11) UNSIGNED NOT NULL,
  `fid` int(11) UNSIGNED NOT NULL,
  `muser_id` int(11) UNSIGNED NOT NULL,
  `msg` text NOT NULL,
  `attach` text NOT NULL,
  `mdate` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
	
эта в ланги либа переведеш

'shop_1'					        => 'Товары',
'shop_2'					        => 'Добавить товар',
'shop_3'					        => 'Товары сообщества',
'shop_4'					        => 'Стоимость (.грн)',
'shop_5'					        => 'Обложка товара',
'shop_6'					        => 'Создать товар',
'shop_7'					        => 'Закрепить товар',
'shop_8'					        => 'Закрыть товар',
'shop_9'					        => 'Открыть товар',
'shop_10'					        => 'Удалить товар',
'shop_11'					        => 'Товар',
'shop_12'					        => 'Категория товара',
'shop_13'					        => 'Написать продавцу',
'shop_14'					        => 'Просмотр товара',
'shop_15'					        => 'Цена',

 

скринов нету не помню из какой сборки вырезал

 

[Модуль] товары для групп как вк.zip

Изменено пользователем kphp
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...