Перейти к содержанию
giks

[Решено] Пару вопросов от новичка

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

Добрый день. Знакомство с opencart я начал буквально вчера и есть пару вопросов на которые хотел бы получить ответы.

 

1. Увидев .tpl я подумал сразу о smarty, но оказалось используется нативный шаблонизатор php. Ок. Поизучав вьюхи, я увидел самый обычный код php+html. Так вот, в чем собственно суть таких шаблонов .tpl?  С таким успехом вьюхи можно было бы хранить в обычных .php файлах(как в том же yii). Что еще удивило, так это синтаксис циклов и условий((((( Такое ощущений что разработчики не слышали про альтернативный синтаксис который используется в связке с html. Ну да ладно.....

 

2.Вызов методов библиотек. Вроде все просто, НО если я вызываю библиотеку encryption->encrypt() то все норм и я получаю хэш, но если я вызываю,к примеру, user->getUserName() то получаю ошибку типа вызов non-object. Не могу понять почему так.....

 

3.Загадка для меня. Я указываю в админке адрес магаза часы работы и т.п. Где собственно эти значения лежат??? В файлах нет, значит в базе. Посмотрел базу-и там пусто. Как так вообще?!

 

4. ЧПУ. Если использовать uri c запросом route то все понятно ?route=папка/контроллер/метод. Но если перехожу на чпу то формируется какой то непонятный uri, хотя по идее должно быть типа host/controller/method. То есть как происходит вызов метода при чпу.

Спасибо за внимание!

Поделиться сообщением


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

1. ... Так вот, в чем собственно суть таких шаблонов .tpl? ...

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

3. ...

БД, таблица префикс_setting

Поделиться сообщением


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

Добрый день. Знакомство с opencart я начал буквально вчера и есть пару вопросов на которые хотел бы получить ответы.

 

1. Увидев .tpl я подумал сразу о smarty, но оказалось используется нативный шаблонизатор php. Ок. Поизучав вьюхи, я увидел самый обычный код php+html. Так вот, в чем собственно суть таких шаблонов .tpl?  С таким успехом вьюхи можно было бы хранить в обычных .php файлах(как в том же yii). Что еще удивило, так это синтаксис циклов и условий((((( Такое ощущений что разработчики не слышали про альтернативный синтаксис который используется в связке с html. Ну да ладно.....

Условное разделение. Дайте любое расширение - лишь бы работало

Хм.. а чем Вам мешает нельтернативный синтаксис. Или Вы привыкли к альтернативному?

 

2.Вызов методов библиотек. Вроде все просто, НО если я вызываю библиотеку encryption->encrypt() то все норм и я получаю хэш, но если я вызываю,к примеру, user->getUserName() то получаю ошибку типа вызов non-object. Не могу понять почему так.....

потому что объекта user не существует во фронте

3.Загадка для меня. Я указываю в админке адрес магаза часы работы и т.п. Где собственно эти значения лежат??? В файлах нет, значит в базе. Посмотрел базу-и там пусто. Как так вообще?!

Ни можИт быть..

Смотрю в книгу - вижу...?

4. ЧПУ. Если использовать uri c запросом route то все понятно ?route=папка/контроллер/метод. Но если перехожу на чпу то формируется какой то непонятный uri, хотя по идее должно быть типа host/controller/method. То есть как происходит вызов метода при чпу.

Спасибо за внимание!

Это Вам так хочется? Насмотрелись на другие движки?

Поделиться сообщением


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

1. кроме всего прочего:

- когда говорят "посмотри product.tpl" - однозначно речь идет о шаблоне карточки товара;

- а если сказать "посмотри product.php" - тут уже хрен его, о чем - то ли о контроллере, то ли о языковом файле (а их может быть несколько при разных языках), то ли о модели.

2. не все библиотеки подключаются в каталоге (во frontend).

3. ответили выше - "БД, таблица префикс_setting".

4. "как происходит вызов метода при чпу." --- посмотри файлы catalog/controller/common/

- seo_url.php

- seo_pro.php

Поделиться сообщением


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

Ухты, как оперативно откликнулись. Спасибо.

3. 3-й Вопрос решен спасибо. Просто как то по другому себе представлял структуру бд.

1. Про шаблонизаторы-я тоже не сторонник. Что касается синтаксиса, хз ИМХО {?> } ?> вещи такого плана это жесть. Выискивать эти скобки и манипуляции с открытием/закрытием тэгов php. Куда проще и понятнее с альт.синтакисом.

2. Про библиотеки-я создал свою библиотеку с hello world и тоже получил ошибку.

4. Ну работал с CI и YII там нативно controller/action/id хотя роутер можно как угодно переписать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2. Про библиотеки-я создал свою библиотеку с hello world и тоже получил ошибку.

 

 

Вы покажите как вы ее инициализируете, как вызываете?

 

Иначе - разговор ни о чем.

 

 

вот пример

$this->load->library('user');
$this->user = new User($this->registry);

Поделиться сообщением


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

2. в раздел FAQ загляни.

Поделиться сообщением


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

chukcha, хм...... в руководстве написано, что достаточно вызвать

$this->encryption->encrypt('say')
тобеш

$this->библиотека-> метод
И таким образом метод encrypt работает. Таким же макаром я и свою билиотеку загружал и получал ошибку. НО если

$this->load->library('test');
$test=new Test();
echo $test->say();
то все работает. Интересно в чем разница с encryption? или это какие то заморочки на уровне ядра

Поделиться сообщением


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

вызвать метод из библиотеки != загрузить библиотеку для дальнейшего использования.

смотри в FAQ.

Поделиться сообщением


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

Чтобы не плодить новую тему. создам здесь. Можете плиз объяснить вообще функциональность такого класса:

class Config {
private $data = array();

public function get($key) {
return (isset($this->data[$key]) ? $this->data[$key] : null);
}

public function set($key, $value) {
$this->data[$key] = $value;
}

public function has($key) {
return isset($this->data[$key]);
}

public function load($filename) {
$file = DIR_CONFIG . $filename . '.php';

if (file_exists($file)) {
$_ = array();

require($file);

$this->data = array_merge($this->data, $_);
} else {
trigger_error('Error: Could not load config ' . $filename . '!');
exit();
}
}
}

И вот кусок кода из контроллера header $data['telephone'] = $this->config->get('config_telephone');

Опишу как я понимаю процесс. Итак, вызывается метод библиотеки config который возвращает какое то значение в переменную $data['telephone'] , которая в свою очередь подгружается в вид.Все просто. Теперь сама библиотека. Обычный базовый класс,есть пустой массив,и функция get которая возвращает значение !!!ПУСТОГО!!! массива по ключу(он же аргумент функции).Вот тут у меня заминка, как так????ведь обычный пучтой массив. По идее тут мог бы быть какой-нибудь запрос к бд или еще что то.....Вообще поясните плиз. Я просто не в первый раз встречаю такие классы которые с виду ничего и не делают, но по факту что то такие делают)

Поделиться сообщением


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

то все работает. Интересно в чем разница с encryption? или это какие то заморочки на уровне ядра

до вызова 

$this->encryption->encrypt('say')

выше по коду

require_once(DIR_SYSTEM . 'library/encryption.php');

и

//  Encryption
$registry->set('encryption', new Encryption($config->get('config_encryption')));

Поделиться сообщением


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

...

Обычный базовый класс,есть пустой массив,и функция get которая возвращает значение !!!ПУСТОГО!!! массива по ключу(он же аргумент функции).Вот тут у меня заминка, как так????ведь обычный пучтой массив. По идее тут мог бы быть какой-нибудь запрос к бд или еще что то.....Вообще поясните плиз. Я просто не в первый раз встречаю такие классы которые с виду ничего и не делают, но по факту что то такие делают)

ну массив не долго пустует.

выше по коду загрузка настроек из базы например 

// Settings
$query = $db->query("SELECT * FROM " . DB_PREFIX . "setting WHERE store_id = '0' OR store_id = '" . (int)$config->get('config_store_id') . "' ORDER BY store_id ASC");

foreach ($query->rows as $setting) {
	if (!$setting['serialized']) {
		$config->set($setting['key'], $setting['value']);
	} else {
		$config->set($setting['key'], unserialize($setting['value']));
	}
}

 

Поделиться сообщением


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

ага понял. я и забыл про index.php))) надо поизучать. после yii надо переучиываться.

Поделиться сообщением


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

... ИМХО {?> } ?> вещи такого плана это жесть. Выискивать эти скобки и манипуляции с открытием/закрытием тэгов php. ...

Любые IDE с подсветкой синтаксиса решают эту неприятность. Изменено пользователем destreser

Поделиться сообщением


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

Такое ощущений что разработчики не слышали про альтернативный синтаксис который используется в связке с html. Ну да ладно.....

Такое ощущений что каждый кто знакомство с opencart начал буквально вчера считает себя умнее разработчиков. ну да ладно...

Поделиться сообщением


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

 

Такое ощущений что каждый кто знакомство с opencart начал буквально вчера считает себя умнее разработчиков. ну да ладно...

Я так не считаю. тем более что я не программист) Просто высказал свое мнение.

Поделиться сообщением


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

Возник вопрос по работе модуля html-content(opencart 2). Я так понимаю его суть преобразовывать html тэги в готовое отображение? или этот модуль просто позволяет создавать обычный текст в любом месте макета? Потому что первый вариант я попробовал и просто выводится текст как есть, может я что то не так делаю или просто он работает по варианту 2.

Поделиться сообщением


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

НЕ НАДО ЛЕПИТЬ МУХ, КОТЛЕТЫ И ПОМЕТ В ОДНУ ТЕМУ.

закрыто.

Возник вопрос по работе модуля html-content(opencart 2). Я так понимаю его суть преобразовывать html тэги в готовое отображение? или этот модуль просто позволяет создавать обычный текст в любом месте макета? Потому что первый вариант я попробовал и просто выводится текст как есть, может я что то не так делаю или просто он работает по варианту 2.

в песочницу с такими вопросами.

Поделиться сообщением


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

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.