решено MicrodataPro

  • Автор темы yura_co
  • Дата начала
yura_co

yura_co

master
#1
Тестирование модуля MicrodataPro ругается на логотип
А именно сторка :
Код:
$data['organization_logo']  = $this->host . "image/" . $this->config->get('config_logo')
отдает ошибку:
Array to string conversion in /catalog/controller/extension/module/microdatapro.php on line 37
Подскажите, чего ему не нравится? Что ему не хватает для преобразования в строку?
 
Baco

Baco

architect
#2
Не нраиЦЦа ему то, что в бро сделан мультиязычный логотип, надо поменять эту строку на так:

PHP:
$logos = $this->config->get('config_logo');
if (is_array($logos)) {               
            if (is_file(DIR_IMAGE . $logos[$this->config->get('config_language_id')])) {               
                $data['organization_logo'] = $this->host . 'image/' . $logos[$this->config->get('config_language_id')];
            }
} else {
            if (is_file(DIR_IMAGE . $this->config->get('config_logo'))) {
                $data['organization_logo'] = $this->host . 'image/' . $this->config->get('config_logo');
            }
}
 
S

SlaSoft

Maestro
#3
Не нраиЦЦа ему то, что в бро сделан мультиязычный логотип, надо поменять эту строку на так:
Мне тоже не нравится, потому как такие ещи должны быть обособлены и не влиять на стандарт, потому как такие вещи могут быть спрятаны во всяких кубах.

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

После инициализации configa и получения кода язык, приблизительно так
$this->config->set('config_logo', $this->config->get('config_logo_multi')[$this->config->get('config_language_id')]

предварительно проверив существование

Потмоу как мультязыковые настройки могут использоваться где угодно, в любой момент
 
ТС
yura_co

yura_co

master
Топик Стартер #4
@Baco, плиз ещё одна ошибка:
Код:
<?php
class ControllerCommonHome extends Controller {
    public function index() {
        $code = $this->config->get('config_language_id');     
        $this->document->setTitle($this->config->get('config_meta_title_' . $code));
        $this->document->setDescription($this->config->get('config_meta_description_' . $code));
        $this->document->setKeywords($this->config->get('config_meta_keyword_' . $code));
        $this->document->setOpengraph('og:description', $this->config->get('config_meta_description_' . $code));
        $logos = $this->config->get('config_logo');
        if (is_array($logos)) {             
            if (is_file(DIR_IMAGE . $logos[$code])) {
                $this->document->setOgImage(HTTP_SERVER . 'image/' . $logos[$code]);
            }
        }
выдавая ошибку:
Notice: Array to string conversion in /system/storage/modification/catalog/controller/common/home.php on line 11
@SlaSoft, o_O это нужно в модуле добавить? это я только понял что это инициализация а куда её пихать не понял...
 
ТС
yura_co

yura_co

master
Топик Стартер #5
понял что ошибка опять в лого и нужно добавить
$this->config->get('config_language_id')
но вот куда его добавить ума не хватает
но с другой стороны вродь это строчка есть в переменной $code
 
Последнее редактирование:
ALarik

ALarik

expert
#8
а логотипы добавлены ко всем языкам магазина ?
добавь выше этого кода (прямо в файле модификаций) строку:
PHP:
$this->log->write(__LINE__ . '~|:'. __FUNCTION__ .'|:'. print_r($logos,1));
вызови ошибку и покажи последние 2-3 строки из журнала ошибок
 
ТС
yura_co

yura_co

master
Топик Стартер #9
вот это я дал, я тупо смотрел не в том файле. спасибо @ALarik, за слова
прямо в файле модификаций
оказалось проблема в строке
Код:
    $data['microdatapro_data']['image'] = is_file(DIR_IMAGE . $this->config->get('config_logo'))?$this->config->get('config_logo'):'';
Сори что клепаю вам мозги своей невнимательностью
 
S

SlaSoft

Maestro
#10
я ж говорю - неверный подход

Не проверяется наличие языковой переменной

Это ксатти относится и к модулям с языковыми настройками, особенно при добавлении нового языка
Т.е. настроили на базовый, добавили язык, а в настройках конечно же забыли, да и в основном и не знали
 
ТС
yura_co

yura_co

master
Топик Стартер #11
поправил таким образом:
Код:
 $data['microdatapro_data']['image'] = is_file(DIR_IMAGE . $this->config->get('config_language_id
'))?$this->config->get('config_logo'):'';
ошибка ушла и вродь всё работает
 
Твой e-mail адрес не будет опубликован. Он нужен для подтверждения сообщения !
Вверх