Перейти к содержанию
Официальный форум поддержки Simpla

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


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

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) Исправлена ошибка добавления товаров к заказу
Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 131
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

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 только вот мое решение более упрощенное.
Ссылка на сообщение
Поделиться на другие сайты

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.
Ссылка на сообщение
Поделиться на другие сайты

 

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

{* Доставка *}
{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 выбраны?

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

{api module=delivery method=get_deliveries var=deliveries enabled=1}
Ссылка на сообщение
Поделиться на другие сайты

 

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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}

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

Ссылка на сообщение
Поделиться на другие сайты

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

{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 свойства, а "телефон" параметр (значение) свойства.

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

Ссылка на сообщение
Поделиться на другие сайты

 

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

{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 свойства, а "телефон" параметр (значение) свойства.

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

 

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. Как то обидно что ли, одного человека добавили а мои нет, хотя я вижу что некоторая часть была включена.  

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

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

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

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

 

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

Файл 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. Поэтому, если считаете, что это ошибка, надо писать об этом в разделе  общих ошибок, а не в теме конкретной версии...

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...