Перейти к содержимому


Фото
* * * * * 1 голосов

Консультация по движку


  • Чтобы отвечать, сперва войдите на форум
81 ответов в теме

#1 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 09.05.2017 - 12:29

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

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

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

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

 



#2 mishanya

mishanya
  • Фрилансер
  • 2 575 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Ukraine

Опубликовано 09.05.2017 - 13:01

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

 

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

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



#3 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 09.05.2017 - 13:28

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

<?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));
	



#4 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 09.05.2017 - 20:32

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

<?php

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

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



#5 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 09.05.2017 - 20:44

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



#6 Maksclub

Maksclub
  • Фрилансер
  • 1 398 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 10.05.2017 - 03:31

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

 

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



#7 Maksclub

Maksclub
  • Фрилансер
  • 1 398 сообщений
  • Дизайн, Программирование, Верстка, Заказчик, Пользователь
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 10.05.2017 - 03:39

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

 

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

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

 

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


Изменено: Maksclub, 10.05.2017 - 04:23


#8 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 10.05.2017 - 07:02

Через View получаются настройки, валюты, юзер и т.д.



#9 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 09:16

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

 

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



#10 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 10:12

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

Да как сказать... приходиться, приходиться...



#11 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 12:05

Ребят, а существуют в симпле системные переменные, типо путь к текущей теме, корень сайта и т.д.?



#12 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 12:34

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

    print_r($api->config);
    print_r($api->settings);



#13 pepelxD

pepelxD
  • Пользователь
  • 42 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 13:25

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

    print_r($api->config);
    print_r($api->settings);

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


Изменено: pepelxD, 10.05.2017 - 13:31


#14 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 10.05.2017 - 13:46

variant - это просто один из variants 

По умолчанию - первый.



#15 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 13:48

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

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

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

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



#16 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 10.05.2017 - 13:55

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



#17 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 15:26

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

 

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

http://www.php.su/reset



#18 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 10.05.2017 - 15:31

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

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

		// Вариант по умолчанию
		if(($v_id = $this->request->get('variant', 'integer'))>0 && isset($variants[$v_id]))
			$product->variant = $variants[$v_id];
		else
			$product->variant = reset($variants);


#19 ahmed

ahmed
  • Пользователь
  • 172 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Россия

Опубликовано 10.05.2017 - 18:17

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

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

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



#20 Kosjak76

Kosjak76
  • Модератор
  • 3 857 сообщений
  • Программирование
  • Версия CMS:1.x, 2.x
  • Откуда:Харьков, Украина

Опубликовано 10.05.2017 - 18:24

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

http://www.php.su/reset

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

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

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

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






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых