Jump to content

Небольшое обновление Simpla 2.3.7 от 21 апреля 2015


Recommended Posts

1) Исправлена работа тега {debug}
Ранее debug зацикливался при выводе дерева категорий.
 
2) Обновлен парсер товаров get_info.php
 
3) Добавлен платежный модуль DeltaKey
 
4) Новая каптча
Из-за частых жалоб на спам пришлось усложнить каптчу.
 
5) Исправлена ошибка с возможностью скачивания цифровых файлов, которых нет в оплаченном заказе
 
6) Возможность вызывать любые методы api из шаблона
 
Пример:
    {api module=delivery method=get_deliveries var=deliveries enabled=1}
    {foreach $deliveries as $d} {$d->name} {/foreach}
 
module: название модуля (config,  settings, design, products, variants, categories, brands, features, money, pages, blog, cart, image, delivery, payment, orders, users, coupons, comments, feedbacks, notify, managers);
 
method: название метода соответствующего модуля
 
var: имя переменной, в которой будет сохранен результат вызова
 
далее идут параметры, которые нужно передать
 
Приведенный пример аналогичен добавлению в обработчик шаблона такого кода:
$results =  $this->deliveries->get_deliveries(array('enabled'=>1))
$this->design->assign('deliveries', $results);

 

7) Исправлена ошибка добавления товаров к заказу
Link to post
Share on other sites
  • Replies 131
  • Created
  • Last Reply

Top Posters In This Topic

5) Возможность вызывать любые методы api из шаблона

 

 

Пример:

    {api module=delivery method=get_deliveries var=deliveries enabled=1}
    {foreach $deliveries as $d} {$d->name} {/foreach}
 

 

module: название модуля (config,  settings, design, products, variants, categories, brands, features, money, pages, blog, cart, image, delivery, payment, orders, users, coupons, comments, feedbacks, notify, managers);

 

method: название метода соответствующего модуля

 

var: имя переменной, в которой будет сохранен результат вызова

 

далее идут параметры, которые нужно передать

 

Приведенный пример аналогичен добавлению в обработчик шаблона такого кода:

$results =  $this->deliveries->get_deliveries(array('enabled'=>1))
$this->design->assign('deliveries', $results);

 

 

По сути то же самое что и http://simpla-addons.org/blog/modules/universalnyj-plagin-dlya-simpla-cms только вот мое решение более упрощенное.
Link to post
Share on other sites

6) Возможность вызывать любые методы api из шаблона

Тем не менее в новой версии в шаблонах почему то так не задействовано и прописано как и прежде:
{* Доставка *}
{if $deliveries}
<h2>Выберите способ доставки:</h2>
<ul id="deliveries">
	{foreach $deliveries as $delivery}
	<li>
		<div class="checkbox">
			<input type="radio" name="delivery_id" value="{$delivery->id}" {if $delivery_id==$delivery->id}checked{elseif $delivery@first}checked{/if} id="deliveries_{$delivery->id}">
		</div>
		
			<h3>
			<label for="deliveries_{$delivery->id}">
			{$delivery->name}
			{if $cart->total_price < $delivery->free_from && $delivery->price>0}
				({$delivery->price|convert} {$currency->sign})
			{elseif $cart->total_price >= $delivery->free_from}
				(бесплатно)
			{/if}
			</label>
			</h3>
			<div class="description">
			{$delivery->description}
			</div>
	</li>
	{/foreach}
</ul>
{/if}
в файле cart.tpl.
Link to post
Share on other sites

 

Тем не менее в новой версии в шаблонах почему то так не задействовано и прописано как и прежде:

{* Доставка *}
{if $deliveries}
<h2>Выберите способ доставки:</h2>
<ul id="deliveries">
	{foreach $deliveries as $delivery}
	<li>
		<div class="checkbox">
			<input type="radio" name="delivery_id" value="{$delivery->id}" {if $delivery_id==$delivery->id}checked{elseif $delivery@first}checked{/if} id="deliveries_{$delivery->id}">
		</div>
		
			<h3>
			<label for="deliveries_{$delivery->id}">
			{$delivery->name}
			{if $cart->total_price < $delivery->free_from && $delivery->price>0}
				({$delivery->price|convert} {$currency->sign})
			{elseif $cart->total_price >= $delivery->free_from}
				(бесплатно)
			{/if}
			</label>
			</h3>
			<div class="description">
			{$delivery->description}
			</div>
	</li>
	{/foreach}
</ul>
{/if}
в файле cart.tpl.

подскажите, а зачем использовать еще один вызов, если $deliveries уже у CartView выбраны?

Link to post
Share on other sites

подскажите, а зачем использовать еще один вызов, если $deliveries уже у CartView выбраны?

Это Вы не у меня спрашивайте, а у автора Simpla CMS.

Я бы убрал вызов из view/CartView.php и использовал бы глобальную функцию в шаблоне:

{api module=delivery method=get_deliveries var=deliveries enabled=1}
Link to post
Share on other sites

 

Это Вы не у меня спрашивайте, а у автора Simpla CMS.

Я бы убрал вызов из view/CartView.php и использовал бы глобальную функцию в шаблоне:

{api module=delivery method=get_deliveries var=deliveries enabled=1}

если можна, объясните, чем этот метод лучше или быстрее того, что используется в CartView.php, просто интересно, если действительно есть разница, то буду пользоваться таким. получается так можно половину всего изменить, даже больше

Link to post
Share on other sites

если можна, объясните, чем этот метод лучше или быстрее того, что используется в CartView.php, просто интересно, если действительно есть разница, то буду пользоваться таким. получается так можно половину всего изменить, даже больше

Этот метод предназначен для людей которые не сильны в PHP и не сильны в иерархии псевдо MVC симплы.
Link to post
Share on other sites

Этот метод предназначен для людей которые не сильны в PHP и не сильны в иерархии псевдо MVC симплы.

да но, если не ошибаюсь, поправьте конечно если что, в таком случае лучше вообще убрать дублирующие методы из всех view, т.к. получитсья что все запросы в базу будут дублироваться, что повлияет на скорость работы сайта. насколько я понял таким способом можно делать и фильтрацию товаров например, передавая в {api module=products method=get_products var=products ...} параметры фильтра.

Link to post
Share on other sites

Каким образом Вы хотите передавать параметры фильтра в функцию {api module=products method=get_products var=products ...} которая записана в шаблоне?

Link to post
Share on other sites

Каким образом Вы хотите передавать параметры фильтра в функцию {api module=products method=get_products var=products ...} которая записана в шаблоне?

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

Edited by mishanya
Link to post
Share on other sites

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

Мне интересно как же Вы такое реализуете.

Честно сказать я ни то что не знаю как подобное сделать, а считаю подобные танцы с бубном крайне топорны как в подходе так и в реализации идеи.

Link to post
Share on other sites

Мне интересно как же Вы такое реализуете.

Честно сказать я ни то что не знаю как подобное сделать, а считаю подобные танцы с бубном крайне топорны как в подходе так и в реализации идеи.

возможно я не прав, кстати, да, такая идея это немного извращение.

 

1. вот у нас есть форма с выбором бренда и например категории,

2. на странице в шаблоне у нас написано {api module=products method=get_products var=products}

3. жмем сабмит, вю принимает форму, и передает обратно в шаблон эти поля бренда и категории,

4. дальше проверяем

 

{if !$curr_brand && !$curr_category}
 {api module=products method=get_products var=products}
{else}
 {api module=products method=get_products var=products category_id=$curr_category brand_id=$curr_brand}
{/if}

или

{$filter = [
	'category_id' => $curr_category,
	'brand_id' => $curr_brand,
]}

{api module=products method=get_products var=products filter=$filter}

таким образом не будет работать разве?

Link to post
Share on other sites

Это одним просто секс какой то)

{api module=products method=get_products var=products category_id=$curr_category brand_id=$curr_brand}
Ладно бренд и категория, ну а что Вы будете вписывать туда для опций, если для опций функция будет выглядеть примерно так:
{api module=products method=get_products var=products 2=телефон}
где "2" - ID свойства, а "телефон" параметр (значение) свойства.

Я уже не говорю о фильтрации по цене и прочих других фильтрациях.

Link to post
Share on other sites

 

Это одним просто секс какой то)

{api module=products method=get_products var=products category_id=$curr_category brand_id=$curr_brand}
Ладно бренд и категория, ну а что Вы будете вписывать туда для опций, если для опций функция будет выглядеть примерно так:
{api module=products method=get_products var=products 2=телефон}
где "2" - ID свойства, а "телефон" параметр (значение) свойства.

Я уже не говорю о фильтрации по цене и прочих других фильтрациях.

 

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

Link to post
Share on other sites

да но, если не ошибаюсь, поправьте конечно если что, в таком случае лучше вообще убрать дублирующие методы из всех view, т.к. получитсья что все запросы в базу будут дублироваться, что повлияет на скорость работы сайта. насколько я понял таким способом можно делать и фильтрацию товаров например, передавая в {api module=products method=get_products var=products ...} параметры фильтра.

 

С новым функционалом {api ...действительно в принципе можно заменить вызовы API  из файлов view на вызовы из шаблона.

Другой вопрос, будет ли это рационально и экономно. Сейчас во view в одном месте формируются данные для шаблона, а если их перенести в шаблон, то будет много вызовов из разных мест.  А если при изменении шаблона новичок накопирует эти вызовы в разные места, то и может получиться дублирование запросов в базу.

А в остальном разницы почти никакой.

Передавать параметры, в том числе выбранные опции свойств - сложностей особых нет...

 

А идея вообще заманчивая - изменил только в шаблоне - и все работает. Но для этого надо еще API дорабатывать.  Например, текущее  {api ...} не позволяет корректно работать, например, с методом  get_page, так как у него принимаемый параметр скалярный, а не массив...

Link to post
Share on other sites

 

1) Исправлена работа тега {debug}
Ранее debug зацикливался при выводе дерева категорий.
 
2) Обновлен парсер товаров get_info.php
 
3) Добавлен платежный модуль DeltaKey
 
4) Новая каптча
Из-за частых жалоб на спам пришлось усложнить каптчу.
 
5) Исправлена ошибка с возможностью скачивания цифровых файлов, которых нет в оплаченном заказе
 
6) Возможность вызывать любые методы api из шаблона
 
Пример:
    {api module=delivery method=get_deliveries var=deliveries enabled=1}
    {foreach $deliveries as $d} {$d->name} {/foreach}
 
module: название модуля (config,  settings, design, products, variants, categories, brands, features, money, pages, blog, cart, image, delivery, payment, orders, users, coupons, comments, feedbacks, notify, managers);
 
method: название метода соответствующего модуля
 
var: имя переменной, в которой будет сохранен результат вызова
 
далее идут параметры, которые нужно передать
 
Приведенный пример аналогичен добавлению в обработчик шаблона такого кода:
$results =  $this->deliveries->get_deliveries(array('enabled'=>1))
$this->design->assign('deliveries', $results);

 

7) Исправлена ошибка добавления товаров к заказу

 

Простите за наглость, почему в changelog.txt не указанны мои pull requests. Как то обидно что ли, одного человека добавили а мои нет, хотя я вижу что некоторая часть была включена.  

Простой человеческий интерес. 

Link to post
Share on other sites

Простите за наглость, почему в changelog.txt не указанны мои pull requests. Как то обидно что ли, одного человека добавили а мои нет, хотя я вижу что некоторая часть была включена.  

Простой человеческий интерес. 

Видел на github твои реквесты.

 

Жаль у этого движка нет сообщества, что бы разрабатывало его несколько человек, а не один.

Может быть он вырос в более мощный инструмент из коробки.

Link to post
Share on other sites

Видел на github твои реквесты.

 

Жаль у этого движка нет сообщества, что бы разрабатывало его несколько человек, а не один.

Может быть он вырос в более мощный инструмент из коробки.

я и в коде их вижу, а в ченж логе нет. 

Link to post
Share on other sites

Видимо, исправлялись ошибки, когда  можно было создать категорию или бренд без УРЛ и названия категории.

Есть еще близкие ошибки:

1. Если при импорте указать бренд как текст из нескольких пробелов, то создается как раз бренд без названия.

2. Если при импорте указать категорию как текст из нескольких пробелов, то импорт прерывается с ошибкой...

Link to post
Share on other sites
  • 3 weeks later...

Нашел незначительную ошибку.

Файл view/ProductsView.php строка 112, код:

foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p)
тут лишний параметр in_stock=>1, скорее всего машинально был прописан.
Link to post
Share on other sites

 

Нашел незначительную ошибку.

Файл view/ProductsView.php строка 112, код:

foreach($this->products->get_products(array('id'=>$related_ids, 'in_stock'=>1, 'visible'=>1)) as $p)
тут лишний параметр in_stock=>1, скорее всего машинально был прописан.

 

1. Нет такого кода в указанном файле, видимо, имеется в виду файл view/ProductView.php

2. ИМХО, это совсем не ошибка, а так и задумано, чтобы показывать в связанных лишь те товары, которые реально имеются в наличии.

3. Если указанный параметр убрать, то возможна такая ситуация: если у связанного товара все варианты отсутствуют, то этот связанный товар будет показываться без цены и с сообщением Нет в наличии. Это выглядит как будто сказать "Вот тебе детка, конфетка", предложив пустой фантик.

4. Ситуация п.3 имеет место в списках товаров категории. Я бы сказал, скорее стоило и там добавить такой параметр, чтобы не показывать отсутствующие товары.

5. Или даже ввести параметр в настройках - показывать или не показывать отсутствующие.

6. Это было уже в версии 2.2.0. Поэтому, если считаете, что это ошибка, надо писать об этом в разделе  общих ошибок, а не в теме конкретной версии...

Link to post
Share on other sites
×
×
  • Create New...