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

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

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

get_products(array('id' => $_POST['id']))

получаю объект продукта, но в нем отсутствуют кастомные свойства variant, images, features, variants......
хотя если сделать var_dump($product)  в product.tpl свойства все есть у объекта.

Полазил по файлам, за вывод товаров отвечает класс ProductView, который наследуется от View не совсем конечно все понял еще и смарти никогда не испоьзовал...
Так вот, объясните пожалуйста всю цепочку по которой в product.tpl у объекта $product все свойства присутствуют.
 

 

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 81
  • Дата создания
  • Последний ответ

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

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

потому что они выбираються отдельно.

 

в ProductView сначала выбирается товар.

затем выбираются варианты (get_variants) и свойства (get_features)

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

Примерно так:

<?php

	require_once('api/Simpla.php');
	$api = new Simpla();

	$product_id=$api->request->get('$product_id', 'integer');
	$product = $api->products->get_product(intval($product_id));

	$variants = array();
	foreach($api->variants->get_variants(array('product_id'=>$product->id, 'in_stock'=>true)) as $v)
		$variants[$v->id] = $v;
	$product->variants = $variants;
	$product->variant = reset($variants);

	$product->images = $api->products->get_images(array('product_id'=>$product->id));
	$product->image = reset($product->images);

	$product->features = $api->features->get_product_options(array('product_id'=>$product->id));
	

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

 

Примерно так:

<?php

	require_once('api/Simpla.php');
	$api = new Simpla();
        ........
	

Т.е. Наследоваться нужно от класса Simpla и уже в нем будут все методы для формирования объекта продукта со всеми свойствами?

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

День добрый, подскажите документацию по симпле. В частности мне нужно аяксом получить объект продукта по его id. 

 

До Симплы добрались фронтенд-разрабы?

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

Да, именно так

 

а в ProductView идет наследование от класса View (который тоже наследуется от класса Simpla),

правильно понимаю, что это просто дает ПРОФИТ для дизайна (смарти),

 

а если нужны просто данные, то можно как в примере выше сразу от наследоваться от класса Simpla?  :)

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

Т.е. Наследоваться нужно от класса Simpla и уже в нем будут все методы для формирования объекта продукта со всеми свойствами?

 

Вместо такого вопроса лучше затратить пару минут и  проверить самостоятельно.

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

<?php

    require_once('api/Simpla.php');

    $api = new Simpla();

   

    print_r($api->config);

    print_r($api->settings);

Ну да, все гениальное просто.

А где можно почитать про поля variants и variant  в объекте продукта, их различия и связь?  Смотрю вроде как одинаковые поля у них...Да и в том коде что Вы привели выше они из одного массива копируются.....

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

Прочитать - вряд ли где.

Можно догадаться:

1. по названиям: variants - список (массив) вариантов, variant - один из элементов (первый).

2. По коду:  $product->variant = reset($variants);

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

Не всегда первый, если вызывать с параметром (например из yandex.php) - то может быть любой

 

reset --  Установить внутренний указатель массива на его первый элемент

reset() перемещает внутренний указатель array к его первому элементу и возвращает значение первого элемента массива или FALSE если массив пуст.

http://www.php.su/reset

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

Ну да, ну да...

Прокомментируй мне вот этот код

		// Вариант по умолчанию
		if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id]))
			$product->variant = $variants[$v_id];
		else
			$product->variant = reset($variants);
Ссылка на сообщение
Поделиться на другие сайты

Комментарии можете найти, например, на http://www.php.su/

Если Вы по вопросу 'первый или не первый', то Ваша правда, могут быть ситуации, когда не первый.

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

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

reset --  Установить внутренний указатель массива на его первый элемент

reset() перемещает внутренний указатель array к его первому элементу и возвращает значение первого элемента массива или FALSE если массив пуст.

http://www.php.su/reset

И к чему тогда вот этот пост?

Если я прав? :) Про то, как работает reset() - я в курсе)) 

Что ты хотел сказать этим постом?

Код, который я привел - стандартный код из движка, и он активно используется...

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

Код, который я привел - стандартный код из движка, и он активно используется...

 

Код, который Вы привели - стандартный. Но из этого кода АКТИВНО используется именно часть с reset(...), которая дает первый элемент.

А часть с присваиванием произвольного элемента реально работает крайне мало. На сайте я знаю лишь одно место, где это работает - в ссылках в yandex.php. Знаете другие места - сообщайте...

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

Ребят, допустим мне в созданном мной file.php необходимо обработать шаблон smarty, мне необходимо в нем отдельно подключать Smarty.class.php или же готовый объект уже где - то доступен? И Вообще, в каких файлах происходит подключение.

 

Вроде разобрался, это метод design экземпляра объекта Simpla. Верно?

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

В теме

http://forum.simplacms.ru/topic/815-%D0%BE%D1%82%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0-%D0%B2%D1%81%D0%B5%D1%85-%D0%B1%D1%80%D0%B5%D0%BD%D0%B4%D0%BE%D0%B2/

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

И на форуме, если поискать, можно найти и другие подобные примеры.

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

Делаю аякс к файлу, в нем необходимо обработать шаблон .tpl и записать в переменную. Использую

$html = $api->design->fetch('template.tpl');

Смарти начинает ругаться на запись

{$product->variant->price|convert}
convert - Unknown modifier

 

Вопрос:  в каком файле регистрируется этот модификатор, да и вообще модификаторы? Они для каждого view свои или же есть какойто центральный файл?
Еще вопрос про стили и скрипты, предусмотрен ли в симпле механизм загрузки скриптов и стилей? Или только инлайн в шаблонах .tpl?

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...