Jump to content
CMSTOOLS.ru - форум поддержки и развития CMS

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


Recommended Posts

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

Edited by kphp
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...