Jump to content

interyes

Пользователь
  • Content Count

    38
  • Joined

  • Last visited

Posts posted by interyes

  1. Да элементарно. Пусть все поддомены ссылаются на основной сайт, а далее в htaccess прописываете 

     

    RewriteCond %{HTTP_HOST} ^sochi\.site\.ru$
    RewriteRule ^$ /index.php?module=MainView&page_url=sochi [L]
     

    Остальное в шаблоне. Я так не только поддомены делал, но и несколько сайтов с разным дизайном и контентом.

     

    Не забудьте создать страницу с url = sochi (главная для поддомена).

    Остальное индивидуально, зависит от задач.

     

    можете описать что мы делаем этим кодом в двух словах? Я просто добавил все поддомены как псевдонимы к основному сайту на хостинге и все работает поддомены встают во все пути, к всем файлам, https тоже работает.

     

    Боюсь что-то упустить

  2.  

    Вам необходимо делать проверку.

     

    Сначала взять все id вариантов товаров, которые находятся в корзине

    файл view/IndexView.php

     

    под кодом

     

    $this->design->assign('categories', $this->categories->get_categories_tree()); 

     

    вставьте

    //Варианты товаров в корзине
    if(!empty($_SESSION['shopping_cart']))
        $variants_in_cart = array_keys($_SESSION['shopping_cart']);
    else
        $variants_in_cart = array();
    
    
    $this->design->assign('variants_in_cart', $variants_in_cart);
     

     

    После чего вам в шаблоне будет доступна проверка

     

    {if in_array($product->variant->id,$variants_in_cart)}
    товар в корзине
    {else}
    добавить в корзину
    {/if}

    В шаблоне показано примерно, но смысл, думаю, ясен. 

    Большое спасибо!

  3. Всем привет! Столкнулся с проблемой которую хотелось бы профиксить. При клике на кнопку "В корзину", выводится результат "В корзине" и добавляется класс к самой кнопке, но после ребута страницы все возвращается как было. Кто-то делал чтоб статус кнопки сохранялся т.е. оставался "В корзине". Всем спасибо!

     

    .tpl

    <input type="submit" class="Button js-add2basket" value="В корзину" data-result-text="В корзине"/>
    

    ajax-cart.js

    // Аяксовая корзина
    $('form.cart').live('submit', function(e) {
    	e.preventDefault();
    	button = $(this).find('input[type="submit"]');
    	$.ajax({
    		url: "ajax/cart.php",
    		data: {variant: $(this).find('select').val()},
    		dataType: 'json',
    		success: function(data){
    			$('#cart_informer').html(data);
    			if(button.attr('added_text'))
    				button.val(button.attr('added_text'));
    		}
    	});
    	$(this).find('input[type="submit"]').effect("transfer", { to: $("#cart_informer") }, 500);	
    	return false;
    });
    
    

    кусок .js с добавлением класса

     // Добавление в корзину
            $(document).on('submit', 'form.variants', function (e) {
                e.preventDefault();
                var button = $(this).find('input[type="submit"]');
                var variant = $(this).find('.Menu_select-inner li.active').attr('data-variant');
                $.ajax({
                    url: "ajax/cart.php",
                    data: {
                        variant: $(this).find('select').val(),
                        amount: $(this).find('input[name="amount"]').val(),
                        variant: variant
                    },
                    dataType:'json',
                    success: function(data) {
                        $('#cart_mini').html(data.cart_mini);
                        $('#cart_informer').html(data.cart_informer);
                        if(button.attr('data-result-text'))
                        button.val(button.attr('data-result-text'));
                        button.addClass('incart');
                    }
                });
                // addBasketPop.popup('open');
                //     setTimeout(function(){
                //     addBasketPop.popup('close').fadeOut();
                // }, 1000);
                return false;
            });  

     

     

  4. И это советует корс - царь программирования...

    Позор!

    Нужно данные отправлять json-ом без шаблонов, потом с помощью JS нужные данные вставлять в нужные места, а не вот такое рукоблудство.

    Noxter, есть примеры реализации?

  5. robots лучше генерировать через php

    В htacess 

    RewriteRule ^robots.txt$ robots.php
    

     

    В корень сайта файл robots.php

    <?php
    //код на php
    $domain = $_SERVER['HTTP_HOST'];
    
    
    if ($_SERVER['HTTP_HOST'] !== 'www.site.ru')
    {
    $google = "User-agent: Googlebot \nDisallow: /";
    }
    ?>
    
    User-agent: Mail.Ru
    Crawl-delay: 1
    
    User-agent: *
    Disallow: /sections/404
    Disallow: /simpla/
    Disallow: /order/
    Disallow: /user/
    Disallow: /captcha/
    Disallow: /Smarty/
    Disallow: /api/
    Disallow: /compiled/
    Disallow: /cart
    Disallow: /in/
    Disallow: /resize/
    <?=$page?>
    
    Sitemap: https://<?=$domain?>/sitemap.xml
    
    <?=$google?>
    
    

     

    Этот robots запрещает индексацию поддонов гуглу и добавляет каждому свой sitemap.

    Спасибо, а с какой целью закрывать индексацию поддоменов для гугл?

  6. Так же в скрипте везде добавил по аналогии

    // Обновление информера корзины
            //----------------------------------------//
            function update_cart(variant_id, amount) {
                var coupon_code = $("#coupon_code").val();
                $.ajax({
                    url: "ajax/cart_update.php",
                    data: {
                        'variant_id': variant_id,
                        'amount': amount,
                        'coupon_code': coupon_code
                    },
                    success: function(data) {
                        if (data) {
                            if (data.total_products == 0) {
                                $('#purchases').find('.Popup_top').remove();
                                $('#purchases').html('<div class="Popup_bottom">Ваша корзина пуста!</div>');
                                $('#cart_mini').html(data.cart_mini);
                            } else {
                                $('.cart_item_total_' + variant_id).html(data.cart_item_total);
                                $('#cart_total').html(data.cart_total);
    							$('#cart_delivery').html(data.cart_delivery);
                                $('#cart_mini').html(data.cart_mini);
                                $('#cart_coupon').html(data.cart_coupon);
                                $('#coupon_result').html(data.coupon_result);
                                if ( data.coupon_status == 'success' ) {
                                    $('#cart_coupon').parent().removeClass('hidden')
                                } else {
                                    $('#cart_coupon').parent().addClass('hidden')
                                }
                            }
                            return false;
                        }
                    }
                });
            };
    
  7. Что то делаю видимо не так.

    В корзине код

    <span id="cart_delivery">{include file='cart_delivery.tpl'}</span>
    

    cart_delivery.tpl

    {if $cart->total_products >= 5}
    			<span style="font-size: 22px;color: #ff3f3f;">+ БЕСПЛАТНАЯ ДОСТАВКА<span>
    {else}
                <span>*Менее 5-ти позиций, <b>доставка - 300 руб.</b><span>
    {/if}
    

    cart_update.php

    $result = array('cart_item_total'=>$simpla->design->fetch('cart_item_total.tpl'),
    					'cart_total'=>$simpla->design->fetch('cart_total.tpl'), 
    					'cart_delivery'=>$simpla->design->fetch('cart_delivery.tpl'), 
    					'cart_mini'=>$simpla->design->fetch('cart_mini.tpl'),
    					'cart_coupon'=>$simpla->design->fetch('cart_coupon.tpl'),
    					'coupon_status'=>$coupon_result,
    					'coupon_result'=>$simpla->design->fetch('cart_coupon_result.tpl'),
    					'total_products'=>$cart->total_products
    );
    

    Подскажите, что не учел?

  8. Как минимум нужна ссылка на сайт.

    Возможно создать для каждой текстовки свой шаблон и в cart_update.php по аналогии обрабатывать?

    $result = array('cart_item_total'=>$simpla->design->fetch('cart_item_total.tpl'),
    					'cart_total'=>$simpla->design->fetch('cart_total.tpl'), 
    					'cart_mini'=>$simpla->design->fetch('cart_mini.tpl'),
    					'cart_coupon'=>$simpla->design->fetch('cart_coupon.tpl'),
    					'coupon_status'=>$coupon_result,
    					'coupon_result'=>$simpla->design->fetch('cart_coupon_result.tpl'),
    					'total_products'=>$cart->total_products
    	);
    
  9. Всем привет. На сайте реализована всплывающее окно с корзиной и в шаблоне корзины имеется следующая конструкция:

    {if $cart->total_products >= 5}
        <span id="cart_total" style="font-size: 22px;color: #ff3f3f;">+ БЕСПЛАТНАЯ ДОСТАВКА<span>
    {/if} 
    {if $cart->total_products < 5}
        <span id="cart_total">*Менее 5-ти позиций, <b>доставка - 300 руб.</b><span>
    {/if}     
    

    Прошу помощи как сделать обновление этой информации при изменении кол-ва без перезагрузки всего сайта.

  10. Да элементарно. Пусть все поддомены ссылаются на основной сайт, а далее в htaccess прописываете 

     

    RewriteCond %{HTTP_HOST} ^sochi\.site\.ru$
    RewriteRule ^$ /index.php?module=MainView&page_url=sochi [L]
     

    Остальное в шаблоне. Я так не только поддомены делал, но и несколько сайтов с разным дизайном и контентом.

     

    Не забудьте создать страницу с url = sochi (главная для поддомена).

    Остальное индивидуально, зависит от задач.

     

    Большое спасибо!

  11. Всем привет. 

    Реализую региональность на поддоменах. 

    Сделал переменные городов и прочего по видео Виталия Виноградова 

     

    Сначала планировал в каждую папку поддомена заливать копию сайта. 

    Возник вопрос как реализовать вызов всех файлов simpla оставив их только на главном сайте.

     

    Хотелось бы в поддоменах видеть 3 файла index.php, sitemap.php и robots.txt

     

  12. Всем привет! Столкнулся с проблемой, необходимо грузить 64 изображения товара, изображения не большие по 200кб. Загрузка пакетом через админку работать отказывается, может кто сталкивался с подобным?

  13. Для того чтоб срабатывал код

     

    // Если есть товар с таким URL, добавляем к нему число
            while($this->get_product((string)$product['url']))
            {
                if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts))
                    $product['url'] = $parts[1].'_'.($parts[2]+1);
                else
                    $product['url'] = $product['url'].'_2';
            }

     

               
    Нужно в ProductAdmin.php закоментировать код который выводит сообщение об ошибке
     

     

     // Не допустить одинаковые URL разделов.
                //elseif(($p = $this->products->get_product($product->url)) && $p->id!=$product->id)
                //{            
                //$this->design->assign('message_error', 'url_exists');
                //if(!empty($product->id))
                //    $images = $this->products->get_images(array('product_id'=>$product->id));
                //}

     

  14. ну добавьте вы $product['id'] к примеру

    не совсем понял. выводит сообщение, что товар с этим адресом уже есть. я так понимаю, что до исполнения этой функции дело просто не доходит. ошибаюсь? можно подробнее, что вы имеете ввиду?

  15. в api/Products.php в функции add_product есть код 

     

    // Если есть товар с таким URL, добавляем к нему число
            while($this->get_product((string)$product['url']))
            {
                if(preg_match('/(.+)_([0-9]+)$/', $product['url'], $parts))
                    $product['url'] = $parts[1].'_'.($parts[2]+1);
                else
                    $product['url'] = $product['url'].'_2';
            }

    Никак не могу понять как заставить его работать при ручном добавлении товара

  16. Всем привет!

     

    Столкнулся с проблемой. Много товаров с одним названием. Есть ли решение как подставлять в url товара _id?

     

    Пробовал через product.tpl при создании подставляет, а при обновлении подставляет снова. итог tovar_2_2 и так далее до бесконечности.

  17. {* Фильтр по брендам *}
    {if $category->brands}
    <div id="brands">
    	<a href="catalog/{$category->url}" {if !$brand->id}class="selected"{/if}>Все бренды</a>
    	{foreach name=brands item=b from=$category->brands}
    		{if $b->image}
    		<a class="abrand" data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a>
    		{else}
    		<a class="abrand" data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}" {if $b->id == $brand->id}class="selected"{/if}>{$b->name|escape}</a>
    		{/if}
    	{/foreach}
     <a class="archive" href="#"></a>
    {literal}
     <script>
        var abrand = 2; // - количество отображаемых новостей
        hidenews = "Cкрыть";
        shownews = "Показать все";
    
        $(".archive").html( shownews );
        $(".abrand:not(:lt("+abrand+"))").hide();
    
        $(".archive").click(function (e){
          e.preventDefault();
          if( $(".abrand:eq("+abrand+")").is(":hidden") )
          {
            $(".abrand:hidden").show();
            $(".archive").html( hidenews );
          }
          else
          {
            $(".abrand:not(:lt("+abrand+"))").hide();
            $(".archive").html( shownews );
          }
        });
      </script>
     {/literal}
     
    </div>
    {/if}
    

    Вот

  18. Сделал вот так, ценник меняется но input не подсвечивается как выбранный. Где ошибся?

    {if $product->variants|count > 0}
    		<!-- Выбор варианта товара -->
    		<form class="variants" action="/cart">
    			
             
             
             {* Это если вариант 1*}
            {if $product->variants|count==1  && !$product->variant->name}
                {foreach $product->variants as $v}<input id="product_{$v->id}" name="variant" value="{$v->id}" 
                    type="radio" {if $product->variant->id==$v->id}checked{/if} style="display:none;"/>{/foreach}
            {/if}
            {if $product->variants|count==1}
                {foreach $product->variants as $v}{$v->name}<input id="product_{$v->id}" name="variant" 
                    value="{$v->id}" type="radio" {if $product->variant->id==$v->id}checked{/if} 
                    style="display:none;"/>{/foreach}
            {else}
            {* А это если вариантов несколько *}
             
            {foreach $product->variants as $v}
    		<label>
    			<input  value="{$v->id}" type="radio"    
                {if $v->compare_price > 0}
                compare_price="{$v->compare_price|convert}"
                {/if}    
                price="{$v->price|convert}"    
                {if $product->variant->id==$v->id}
                checked="checked"
                {/if}>
                <span>{$v->name}</span>
    		</label>  
            {/foreach}
            {/if}	
    
                <div class="price">
                    <strike>
                    {if $product->variant->compare_price > 0}
                    {$product->variant->compare_price|convert}
                    {/if}
                    </strike>
                    <span class="pr">{$product->variant->price|convert}</span>
                    <span class="rouble">o</span>
                </div>
             
             
                  
        	{literal}
                <script>
                    $(function() {
                        $(".variants label").live("click", function(){
                   
                        price = $(this).find('input:checked').attr('price');
                        compare_price = '';
                        if(typeof $(this).find('input:checked').attr('compare_price') == 'string')
                            compare_price = $(this).find('input:checked').attr('compare_price');
                        $(this).find('input:checked').attr('compare_price');
                        $(this).closest('form').find('span.pr').html(price);
                        $(this).closest('form').find('strike').html(compare_price);
                        return false;		
                         
                        });
                    });
                </script>
    		{/literal}      
    
    			<input type="submit" class="button" value="БЕРУ!" data-result-text="Хочу ЕЩЁ!"/>
    		</form>     
          
    		<!-- Выбор варианта товара (The End) -->
    		{else}
    			Нет в наличии
    		{/if}
    
    
  19. Это нужно делать отдельно от статистики по продажам, это файл аякс статистики, а не контролер, создайте новый класс по примеру других контролеров админки, можно прицепить к юзерам это, выводить можно много где, как и выбирать это все. Например сделать выборку в той же статистике но в файле simpla/statsadmin.php (вроде так пишется, я с планшета, не помню) и передавать отдельным массивом

    <?PHP
    
    require_once('api/Simpla.php');
    
    
    ############################################
    # Class goodCategories displays a list of products categories
    ############################################
    class StatsAdmin extends Simpla
    {
     
      public function fetch()
      {
    	  
    	  
    	  
    $result = mysql_query ("SELECT count(o.user_id) as order_count, SUM(o.total_price) as total_price, o.user_id, u.name
    FROM `s_orders` o
    LEFT JOIN `s_users` u ON o.user_id = u.id
    WHERE status=2 
    GROUP BY o.user_id
    ORDER BY order_count DESC");
    $myres = mysql_fetch_array ($result);
    
    while ($myres = mysql_fetch_array($result));  
    	  
    	  
    	  
    	  
     	return $this->design->fetch('stats.tpl');
      }
    }
    

     

    В нужную сторону двигаюсь? 

  20. С Stats.php начинать это делать надо? Как то так?

    <?php
    
    require_once('../../../api/Simpla.php');
    
    class StatAjax extends Simpla
    {	
    	public function fetch()
    	{
    		$query = $this->db->placehold('SELECT count(o.user_id) as order_count, SUM(o.total_price) as total_price, o.user_id, u.name FROM `s_orders` o LEFT JOIN `s_users` u ON o.user_id = u.id WHERE status=2 GROUP BY o.user_id ORDER BY order_count DESC');
    		$this->db->query($query);
    		$data = $this->db->results();
    
    		$results = array();
     		foreach($data as $d)
     		{
     			$result['sum'] = $d->sum;
     			$result['o.user_id'] = $d->user_id;
     			
     			
     			$results[] = $result;
    		}
    		return $results;
    	}
    	
    }
    
    $stat_ajax = new StatAjax();
    header("Content-type: application/json; charset=utf-8");
    header("Cache-Control: must-revalidate");
    header("Pragma: no-cache");
    header("Expires: -1");		
    $json = json_encode($stat_ajax->fetch());
    print $json;
    
  21. Вот у меня так

    {* Фильтр по свойствам *}
    
    {if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
        {$wrapper = '' scope=parent}
    {/if}
    
    
    {literal}
    <script>
    $("#brands a, .pagination a").live('click', function(){
    
            var state = {
                title: $(this).attr("title"),
                url: $(this).attr("href")
            }
            history.pushState( state, state.title, state.url );
    
            // при нажатии back/forward в браузере
            window.onpopstate = function(e){
                get_pagination(this);
                return false;
            }
    
            get_pagination(this);
            return false;
    
        });
    
        function get_pagination(href){
    
            /*var href = $(this);*/
            var get_link = $(href).attr('href');
    
            $('#content').css('opacity','0.5');
            $.get(get_link, function(data){
            if(data){
                $('#content').html(data);
                $('#content').css('opacity','1');
                scroll = $('#content').offset().top;
                $('html, body').stop().animate({scrollLeft: 0, scrollTop:(scroll-200)}, 500);
              }
            });
    
        }
    
    </script>
    
    {/literal}
    
    
    
    
    
    {if $features}
    <form method="get" action="{url page=null}"  class="filtr">
    	<table id="features">
    		<tr>
    		{foreach $features as $f}
    		
    			
    			<td class="feature_values">
    				<ul>
    					{foreach $f->options as $k=>$o}
    			                <li style="list-style:none;float:left;margin-right:15px;">
    						<label>
    							<input type="checkbox" name="{$f->id}[]" onchange="submit(this.form);" {if $filter_features.{$f->id} && in_array($o->value,$filter_features.{$f->id})}checked="checked"{/if} value="{$o->value|escape}" />{$o->value|escape}
    						</label>
    					</li>
    					{/foreach}
    				</ul>
    			</td>
    		
    		{/foreach}
    		</tr>
    	</table>
    </form>
    {/if}
    
×
×
  • Create New...