Синтаксическая ошибка template

EDIT: Fixed the error

This is my first time working with templates and am getting nasty syntax errors. I have no idea where the error is since the compiler is telling me I am missing a semi-colon, followed by hundreds of errors. Everything appears fine, however. I am almost certain no semi-colons are missing.

Can anyone help me find this needle in a haystack?? PS The error occurs on the definition of the constructor for the List and says missing ‘;’ before ‘<‘ (i.e. the code below)

template <typename T>
class Node
{
template <typename T>
friend class List<T>;

public:
//Default constructor
Node();

//Copy constructor
Node(const Node<T> & copy);

//Overloaded assignment operator
Node<T> &operator=(const Node<T> & rhs);

//Destructor
~Node();

//Methods
T CreateNode(const T & T);
T &getData();

private:
//Data members
T data;
Node * mNext;
};

asked May 22, 2013 at 3:53

MrPickle5's user avatar

MrPickle5MrPickle5

5224 gold badges9 silver badges31 bronze badges

4

I can’t guarantee it’s the only problem, but this certainly looks suspicious:

T &List<T>::Front() const
T &List<T>::Back() const
void Purge();

At a guess, you intended that to declare three separate functions, in which case it is missing a couple of semicolons, and should look more like this:

T &List<T>::Front() const;
T &List<T>::Back() const;
void Purge();

…or, quite possibly:

T &Front() const;
T &Back() const;
void Purge();

answered May 22, 2013 at 3:57

Jerry Coffin's user avatar

Jerry CoffinJerry Coffin

477k80 gold badges630 silver badges1112 bronze badges

2

Found the error. It was in my node.h file. The code was

friend class List<T>;

I removed the and it worked. :)

answered May 22, 2013 at 4:09

MrPickle5's user avatar

MrPickle5MrPickle5

5224 gold badges9 silver badges31 bronze badges

Timon32

0 / 0 / 0

Регистрация: 18.07.2015

Сообщений: 76

1

синтаксическая ошибка при определении функции шаблона

02.12.2020, 19:10. Показов 2050. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Ошибка в определении Vector<T>::Iterator Vector<T>::Iterator::operator-(size_t i)const
Если прописать определение в объявлении, то ошибки не будет.

Вывод:
warning C4346: Iterator: зависимое имя не является типом
message : укажите префикс «typename» для задания типа
error C2061: синтаксическая ошибка: идентификатор «Iterator»
error C2143: синтаксическая ошибка: отсутствие «;» перед «{«
error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)

.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Iterator
        {
        public:
            Iterator();
            Iterator(const Vector& r);
            Iterator(const Iterator& r) = default;
 
            Iterator& operator=(const Iterator& r) = default;
            Iterator& operator++();  //prefix
            Iterator operator++(int);//postfix
            Iterator operator+(size_t i)const;
            Iterator operator-(size_t i)const;
            T& operator*()const;
 
            friend Vector;
        private:
            Vector* v;
            size_t i;
        };

.inl

C++
1
2
3
4
5
6
7
8
9
10
11
template<typename T>
    Vector<T>::Iterator Vector<T>::Iterator::operator-(size_t i)const
    {
        auto t = *this;
        t.i -= i;
    }
    template<typename T>
    inline T& Vector<T>::Iterator::operator*() const
    {
        return v[i];
    }



0



Комп_Оратор)

Эксперт по математике/физике

8916 / 4673 / 626

Регистрация: 04.12.2011

Сообщений: 13,905

Записей в блоге: 16

02.12.2020, 19:15

2

Timon32, вы разделили описание шаблона на 2 файла?



0



Timon32

0 / 0 / 0

Регистрация: 18.07.2015

Сообщений: 76

02.12.2020, 20:21

 [ТС]

3

Да.

На данный момент мне удалось побороть ошибку, но не тем путем которым я хотел.
Часть кода пришлось перенести в .hpp файл.
Весь закоментированный код в .inl вызывал подобные ошибки.
Среда разработки vs19.

На данный момент код выглядит так:

.hpp:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#pragma once
#include <utility>
 
namespace IP
{
    template <typename T>
    class Vector
    {
    public:
        class Iterator
        {
        public:
            Iterator();
            Iterator(Vector& r);
            Iterator(const Iterator& r) = default;
 
            Iterator& operator=(const Iterator& r) = default;
            Iterator& operator++() { ++i; return *this;};  //prefix
            Iterator operator++(int) { auto t = *this;++i;return t; };//postfix
            Iterator operator+(size_t i)const { auto t = *this; t.i += i; };
            Iterator operator-(size_t i)const { auto t = *this; t.i -= i; };
            bool operator==(const Iterator& r);
            bool operator!=(const Iterator& r);
            T& operator*()const;
 
            friend Vector;
        private:
            Vector* v;
            size_t i;
        };
 
        class ConstIterator
        {
        public:
            ConstIterator();
            ConstIterator(const Vector& r);
            ConstIterator(const ConstIterator& r) = default;
 
            ConstIterator& operator=(const ConstIterator& r) = default;
            ConstIterator& operator++() { ++i; return *this; };  //prefix
            ConstIterator operator++(int) { auto t = *this; ++i; return t; };//postfix
            ConstIterator operator+(size_t i)const { auto t = *this; t.i += i; };
            ConstIterator operator-(size_t i)const { auto t = *this; t.i -= i; };
            bool operator==(const ConstIterator& r);
            bool operator!=(const ConstIterator& r);
            const T& operator*()const;
 
            friend Vector;
        private:
            const Vector* v;
            size_t i;
        };
 
        Vector();
        Vector(const Vector& r);
        Vector(Vector&& r) noexcept;
        ~Vector();
 
        void pushBack(const T& el);
        template <typename ...Args>
        void emplaceBack(Args&&... args);
        void reserve(size_t new_capasity);
        void erase(size_t begin, size_t end);
        void clear();
        size_t getSize() const;
 
        Vector& operator=(const Vector& r);
 
        Iterator begin(){ return Iterator(*this); };
        Iterator end(){Iterator i; i.i = size; i.v = this; return i;};
 
        ConstIterator begin()const { return ConstIterator(*this); };
        ConstIterator end()const { ConstIterator i; i.i = size; i.v = this; return i; };
 
        ConstIterator cbegin()const { return ConstIterator(*this); };
        ConstIterator cend()const { ConstIterator i; i.i = size; i.v = this; return i; }
 
        T& operator[](size_t i);
        const T& operator[](size_t i) const;
 
    private:
        T* data;
        size_t size;
        size_t capasity;
    };
}
 
#include "vector.inl"

.inl :

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#include "vector.hpp"
//#include "vector.hpp"
#pragma once
 
namespace IP
{
    //---Iterator---//
    template<typename T>
    inline Vector<T>::Iterator::Iterator(): v(nullptr), i(0) {}
    template<typename T>
    inline Vector<T>::Iterator::Iterator(Vector& r) : v(&r), i(0) {}
    
    //template<typename T>
    //inline Vector<T>::Iterator& Vector<T>::Iterator::operator++()  //prefix
    //{
    //  ++i;
    //  return *this;
    //}
    /*template<typename T>
    Vector<T>::Iterator inline Vector<T>::Iterator::operator++(int)//postfix
    {
        auto t = *this;
        ++i;
        return t;
    }*/
    /*template<typename T>
    Vector<T>::Iterator Vector<T>::Iterator::operator+(size_t i)const
    {
        auto t = *this;
        t.i += i;
    }*/
    /*template<typename T>
    Vector<T>::Iterator 
        Vector<T>::Iterator::operator-(size_t i)const
    {
        auto t = *this;
        t.i -= i;
    }*/
    template<typename T>
    bool Vector<T>::Iterator::operator==(const Iterator& r)
    {
        return v == r.v && i == r.i;
    }
    template<typename T>
    bool Vector<T>::Iterator::operator!=(const Iterator& r)
    {
        return v != r.v || i != r.i;
    }
    template<typename T>
    inline T& Vector<T>::Iterator::operator*() const
    {
        return v->operator[](i);
    }
    //---iterator---//
 
 
    //---ConstIterator---//
    template<typename T>
    inline Vector<T>::ConstIterator::ConstIterator() :v(nullptr), i(0) {}
    template<typename T>
    Vector<T>::ConstIterator::ConstIterator(const Vector& r) : v(&r), i(0) {}
    //template<typename T>
    //inline Vector<T>::ConstIterator& Vector<T>::ConstIterator::operator++()  //prefix
    //{
    //  ++i;
    //  return *this;
    //}
    //template<typename T>
    //Vector<T>::ConstIterator inline Vector<T>::ConstIterator::operator++(int)//postfix
    //{
    //  auto t = *this;
    //  ++i;
    //  return t;
    //}
    //template<typename T>
    //Vector<T>::ConstIterator Vector<T>::ConstIterator::operator+(size_t i)const
    //{
    //  auto t = *this;
    //  t.i += i;
    //}
    //template<typename T>
    //Vector<T>::ConstIterator Vector<T>::ConstIterator::operator-(size_t i)const
    //{
    //  auto t = *this;
    //  t.i -= i;
    //}
    template<typename T>
    bool Vector<T>::ConstIterator::operator==(const ConstIterator& r)
    {
        return v == r.v && i == r.i;
    }
    template<typename T>
    bool Vector<T>::ConstIterator::operator!=(const ConstIterator& r)
    {
        return v != r.v || i != r.i;
    }
    template<typename T>
    inline const T& Vector<T>::ConstIterator::operator*() const
    {
        return v->operator[](i);
    }
    //---iterator---//
 
 
    //---vector---//
    template<typename T>
    inline Vector<T>::Vector():
        data(static_cast<T*>(operator new[](10 * sizeof(T)))), size(0), capasity(10)
    {}
    template<typename T>
    inline Vector<T>::Vector(const Vector& r):
        data(static_cast<T*>(operator new[](r.size * sizeof(T)))), size(r.size), capasity(r.size)
    {
        for (size_t i = 0; i < size; i++)
            new (data + i) T(r.data[i]);
    }
    template<typename T>
    inline Vector<T>::Vector(Vector&& r) noexcept:
        data(r.data), size(r.size), capasity(r.capasity)
    {
        r.data = nullptr;
    }
    template<typename T>
    inline Vector<T>::~Vector()
    {
        if (data == nullptr)
            return;
 
        for (size_t i = 0; i < size; i++)
            data[i].~T();
 
        operator delete[](data);
    }
 
    template<typename T>
    void inline Vector<T>::pushBack(const T& el)
    {
        if (size == capasity)
            reserve(size * 2);
 
        new (data + size) T(el);
 
        size++;
    }
    template<typename T>
    template<typename ...Args>
    void inline Vector<T>::emplaceBack(Args&&... args)
    {
        if (size == capasity)
            reserve(size * 2);
 
        new (data + size) T(std::move(args ...));
 
        size++;
    }
    template<typename T>
    void inline Vector<T>::reserve(size_t new_capasity)
    {
        if (this->size >= size)
            return;
 
        T* temp_data = static_cast<T*>(operator new[](new_capasity * sizeof(T)));
 
        for (size_t i = 0; i < size; i++)
            new (temp_data + i) T(std::move(data[i]));
 
        for (size_t i = 0; i < size; i++)
            data[i].~T();
 
        operator delete[](data);
 
        data = temp_data;
        capasity = new_capasity;
    }
    template<typename T>
    void inline Vector<T>::erase(size_t begin, size_t end)
    {
        for (size_t i = begin; i != end; i++)
            data[i].~T();
 
        size -= end - begin;
        for (size_t i = begin; i < size; i++)
        {
            new (data + i) T(std::move(data[i + end - begin]));
            data[i + end - begin].~T();
        }
    }
    template<typename T>
    void inline Vector<T>::clear()
    {
        for (size_t i = 0; i < size; i++)
            data[i].~T();
        size = 0;
    }
    template<typename T>
    inline size_t Vector<T>::getSize() const
    {
        return size;
    }
 
    template<typename T>
    Vector<T>& Vector<T>::operator=(const Vector& r)
    {
        for (size_t i = 0; i < size; i++)
            data[i].~T();
 
        if (capasity < r.size)
        {
            operator delete[](data);
            data = static_cast<T*>(operator new[](r.size * sizeof(T)));
            capasity = r.size;
        }
 
        size = r.size;
        for (size_t i = 0; i < size; i++)
            new (data + i) T(r.data[i]);
 
        return *this;
    }
 
    /*template<typename T>
    Vector<T>::Iterator Vector<T>::begin()
    {
        return Iterator(*this);
    }
    template<typename T>
    Vector<T>::Iterator Vector<T>::end()
    {
        Iterator i;
        i.i = size;
        v = *this;
        return i;
    }*/
 
    template<typename T>
    T& Vector<T>::operator[](size_t i)
    {
        return data[i];
    }
    template<typename T>
    const T& Vector<T>::operator[](size_t i) const
    {
        return data[i];
    }
    //---vector---//
}

main:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include "vector.hpp"
 
using namespace std;
 
using IP::Vector;
 
class Test
{
public:
    //Test():a(0) { cout << "defoult" << endl; }
    Test(size_t a):a(a) { cout << "param" << endl; }
    Test(const Test& r):a(r.a) { cout << "copy" << endl; }
    Test(Test&& r)noexcept :a(r.a) { cout << "move" << endl; }
    ~Test() { cout << "del" << endl; }
    size_t a;
};
 
int main()
{
    Vector<Test> v;
 
    v.pushBack(0);
    v.pushBack(1);
    v.pushBack(2);
    v.pushBack(3);
    v.emplaceBack(Test(4));
 
    for (size_t i = 0; i < v.getSize(); i++)
    {
        cout << v[i].a << endl;
    }
    cout << endl;
    v.erase(0, 2);
 
    const Vector<Test> v2(v);
    for (const auto& t : v2)
    {
        cout << t.a << endl;
    }
    cout << endl;
 
    Vector<Test> v3;
    v3.emplaceBack(100);
    v3.emplaceBack(100);
    v3.emplaceBack(100);
 
    v3 = v2;
    for (const auto& t : v3)
    {
        cout << t.a << endl;
    }
}



0



Комп_Оратор)

Эксперт по математике/физике

8916 / 4673 / 626

Регистрация: 04.12.2011

Сообщений: 13,905

Записей в блоге: 16

02.12.2020, 21:01

4

Цитата
Сообщение от Timon32
Посмотреть сообщение

но не тем путем которым я хотел.

Но тем путём которым и следовало. Шаблон это не чертёж для построения исполнимого кода. Это чертёж для построения исходного кода. Компоновщик не может слинковать код который не сгенерирован. Всё нужно писать в заголовочник в итоге)



0



0 / 0 / 0

Регистрация: 18.07.2015

Сообщений: 76

02.12.2020, 21:57

 [ТС]

5

Не один раз видел как выносят реализацию шаблонных функций в отдельный файл(.inl).
Да и писать код так проще.
Как было сказано ранее, компилируются все функции кроме тех которые пытаются возвращать Vector<T>::Iterator & Vector<T>::ConstIterator. Мне интересно почему?



0



Комп_Оратор)

Эксперт по математике/физике

8916 / 4673 / 626

Регистрация: 04.12.2011

Сообщений: 13,905

Записей в блоге: 16

02.12.2020, 22:51

6

Цитата
Сообщение от Timon32
Посмотреть сообщение

Не один раз видел как выносят реализацию шаблонных функций в отдельный файл(.inl).

Явные специализации — можно, сам шаблон — нет. Когда-то пытались это сделать (export), но передумали .



0



0 / 0 / 0

Регистрация: 18.07.2015

Сообщений: 76

03.12.2020, 00:01

 [ТС]

7



0



Комп_Оратор)

Эксперт по математике/физике

8916 / 4673 / 626

Регистрация: 04.12.2011

Сообщений: 13,905

Записей в блоге: 16

03.12.2020, 00:23

8

Timon32, вы включаете файл в хедер. Я такого не видел и не имел ввиду. Тут скорее всего не идёт речь ни о какой раздельной компиляции. Потому что ваш ini файл не видит хедера и всё что в нём написано не будет распарсено компилятором в отдельной единице трансляции. Если ваш компилятор на стадии препроцессинга сразу сливает всё в один текст, то может оно и будет работать.
И ещё. Объявления инлайн для шаблонных методов. В чём смысл? Это же не методы а шаблоны. Компилятор сам решит как поступить и встроит если он умный, а встраивание возможно.



0



TheCalligrapher

Вездепух

Эксперт CЭксперт С++

11087 / 6054 / 1651

Регистрация: 18.10.2014

Сообщений: 15,183

03.12.2020, 00:47

9

Лучший ответ Сообщение было отмечено Timon32 как решение

Решение

Цитата
Сообщение от Timon32
Посмотреть сообщение

warning C4346: Iterator: зависимое имя не является типом
message : укажите префикс «typename» для задания типа

Вам же сам компилятор ясно написал, что нужно сделать.

C++
1
2
3
4
5
6
template<typename T>
    typename Vector<T>::Iterator Vector<T>::Iterator::operator-(size_t i)const
    {
        auto t = *this;
        t.i -= i;
    }

Цитата
Сообщение от Timon32
Посмотреть сообщение

C++
1
friend Vector;

Что это вообще такое?



1



Just starting to learn templates in C++ and I have a small piece of code that’s not compiling:

template <class gen_data>
{
    gen_data calculate(gen_data a, gen_data b)
    {
        return a+b;
    } 
}

int main()
{
    int c,d;
    cout<<"The sum is: "<<calculate(c,d)<<endl;
    return 0;
}

When I compiled it it gave me an error

in function main ‘calculate’ was not declared in that scope

Can anyone help explain where this error comes from?

templatetypedef's user avatar

asked Jan 6, 2014 at 2:42

user3150381's user avatar

You have the wrong syntax for declaring a template function. There shouldn’t be braces surrounding the calculate function. Try rewriting it like this:

template <class gen_data> gen_data calculate(gen_data a, gen_data b)
{
    return a+b;
} 

Hope this helps!

answered Jan 6, 2014 at 2:45

templatetypedef's user avatar

templatetypedeftemplatetypedef

363k104 gold badges900 silver badges1066 bronze badges

0

You have one pair of braces too many. This worked for me:

#include <iostream>

template <class gen_data>
gen_data calculate(gen_data a, gen_data b) {
 return a+b;
}

int main() {
 int c = 1, d = 2;
 std::cout<<"The sum is: "<<calculate(c,d)<<std::endl;
 return 0;
}

answered Jan 6, 2014 at 2:47

Gabriel Perdue's user avatar

Gabriel PerdueGabriel Perdue

1,5532 gold badges15 silver badges23 bronze badges

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Pick a username
Email Address
Password

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Здравствуйте. Столкнулся с такой проблемой. С утра при выборе товара на сайте выбивает ошибку #0. Включил отладку и вот что оно мне пишет

Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-data/public/shop/themes/incart/product.html" on line 389 "{include file="list-thumbs.html" products=$upselling list_only=true item_wrapper_class="nc-item"}" - Unexpected """, expected one of: "identifier" code 0
## wa-system/waSystem.class.php(519)
#0 index.php(7): waSystem->dispatch()
#1 {main}

Next SmartyCompilerException with message &#039;Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-data/public/shop/themes/incart/product.html"  on line 389 "{include file="list-thumbs.html" products=$upselling list_only=true item_wrapper_class="nc-item"}"  - Unexpected """, expected one of: "identifier"&#039;:
## wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(667)
#0 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error()
#1 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(78, &#039;"&#039;)
#2 wa-system/vendors/smarty3/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(78, &#039;"&#039;)
#3 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(206): Smarty_Internal_SmartyTemplateCompiler->doCompile(&#039;{strip}/n{$_them...&#039;)
#4 wa-system/vendors/smarty3/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template))
#5 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(159): Smarty_Internal_Template->compileTemplateSource()
#6 wa-system/view/waSmarty3View.class.php(118): Smarty_Internal_TemplateBase->fetch(&#039;file:product.ht...&#039;, NULL)
#7 wa-system/controller/waViewAction.class.php(162): waSmarty3View->fetch(&#039;file:product.ht...&#039;, NULL)
#8 wa-apps/shop/lib/actions/frontend/shopFrontend.action.php(139): waViewAction->display(false)
#9 wa-system/controller/waViewController.class.php(86): shopFrontendAction->display()
#10 wa-apps/shop/lib/actions/frontend/shopFrontendProduct.controller.php(49): waViewController->executeAction(Object(shopFrontendProductAction))
#11 wa-system/controller/waController.class.php(21): shopFrontendProductController->execute()
#12 wa-system/controller/waViewController.class.php(46): waController->run(NULL)
#13 wa-system/controller/waFrontController.class.php(254): waViewController->run(NULL)
#14 wa-system/controller/waFrontController.class.php(189): waFrontController->runController(Object(shopFrontendProductController), NULL)
#15 wa-system/controller/waFrontController.class.php(83): waFrontController->execute(NULL, &#039;frontend&#039;, &#039;product&#039;)
#16 wa-system/waSystem.class.php(761): waFrontController->dispatch()
#17 wa-system/waSystem.class.php(503): waSystem->dispatchFrontend(&#039;product/nasalan...&#039;)
#18 index.php(7): waSystem->dispatch()
#19 {main}
GET
array()
Params
array(
  &#039;app&#039; => &#039;shop&#039;,
  &#039;theme&#039; => &#039;incart&#039;,
  &#039;theme_mobile&#039; => &#039;incart&#039;,
  &#039;checkout_version&#039; => &#039;1&#039;,
  &#039;locale&#039; => &#039;ru_RU&#039;,
  &#039;title&#039; => &#039;Велосипеды, купить велосипед в Минске, цены велосипедов в интернет-магазине Клаксон&#039;,
  &#039;meta_keywords&#039; => &#039;&#039;,
  &#039;meta_description&#039; => &#039;&#039;,
  &#039;og_title&#039; => &#039;&#039;,
  &#039;og_image&#039; => &#039;&#039;,
  &#039;og_video&#039; => &#039;&#039;,
  &#039;og_description&#039; => &#039;&#039;,
  &#039;og_type&#039; => &#039;&#039;,
  &#039;og_url&#039; => &#039;&#039;,
  &#039;url_type&#039; => &#039;1&#039;,
  &#039;type_id&#039; => &#039;0&#039;,
  &#039;currency&#039; => &#039;BYR&#039;,
  &#039;public_stocks&#039; => &#039;0&#039;,
  &#039;drop_out_of_stock&#039; => &#039;1&#039;,
  &#039;payment_id&#039; => &#039;0&#039;,
  &#039;shipping_id&#039; => &#039;0&#039;,
  &#039;checkout_storefront_id&#039; => &#039;1b3219d8e1c5635918c38b49bc65ec9c&#039;,
  &#039;product_url&#039; => &#039;nasaland-k718-275-zelyonyjchyornyj-2018&#039;,
  &#039;module&#039; => &#039;frontend&#039;,
  &#039;action&#039; => &#039;product&#039;,
)

Так же при переходе в пункт установленных плагинов бъёт это:

Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-apps/installer/templates/actions/assets/Assets.html" on line 22 "{include file="./Assets.row.html" item=$plugin item_id=$item_id item_type=&#039;plugin&#039; inline}" - Unexpected "&#039;plugin&#039;", expected one of: "identifier" code 0
## wa-system/waSystem.class.php(519)
#0 index.php(7): waSystem->dispatch()
#1 {main}

Next SmartyCompilerException with message &#039;Syntax Error in template "/var/www/klaksonby/data/www/klakson.by/wa-apps/installer/templates/actions/assets/Assets.html"  on line 22 "{include file="./Assets.row.html" item=$plugin item_id=$item_id item_type=&#039;plugin&#039; inline}"  - Unexpected "&#039;plugin&#039;", expected one of: "identifier"&#039;:
## wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(667)
#0 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error()
#1 wa-system/vendors/smarty3/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(60, &#039;&#039;plugin&#039;&#039;)
#2 wa-system/vendors/smarty3/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(60, &#039;&#039;plugin&#039;&#039;)
#3 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatecompilerbase.php(206): Smarty_Internal_SmartyTemplateCompiler->doCompile(&#039;<div class="sha...&#039;)
#4 wa-system/vendors/smarty3/sysplugins/smarty_internal_template.php(187): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template))
#5 wa-system/vendors/smarty3/sysplugins/smarty_internal_templatebase.php(159): Smarty_Internal_Template->compileTemplateSource()
#6 wa-system/view/waSmarty3View.class.php(118): Smarty_Internal_TemplateBase->fetch(&#039;templates/actio...&#039;, NULL)
#7 wa-system/controller/waViewAction.class.php(162): waSmarty3View->fetch(&#039;templates/actio...&#039;, NULL)
#8 wa-system/controller/waViewController.class.php(86): waViewAction->display()
#9 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction(Object(installerAssetsAction))
#10 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
#11 wa-system/controller/waViewController.class.php(46): waController->run(NULL)
#12 wa-system/controller/waFrontController.class.php(254): waViewController->run(NULL)
#13 wa-system/controller/waFrontController.class.php(189): waFrontController->runController(Object(waDefaultViewController), NULL)
#14 wa-system/controller/waFrontController.class.php(83): waFrontController->execute(NULL, &#039;assets&#039;, NULL)
#15 wa-system/waSystem.class.php(582): waFrontController->dispatch()
#16 wa-system/waSystem.class.php(501): waSystem->dispatchBackend(&#039;velik/installer...&#039;)
#17 index.php(7): waSystem->dispatch()
#18 {main}
GET
array(
  &#039;module&#039; => &#039;assets&#039;,
  &#039;_&#039; => &#039;1557298049456&#039;,
)
Params
array()

Подскажите пожалуйста, из-за чего такое и как это можно исправить?

Понравилась статья? Поделить с друзьями:
  • Синонимы это богатство языка ошибка
  • Синтаксическая ошибка на айфоне
  • Синтаксическая ошибка utorrent
  • Синтаксическая ошибка код 800a03ea
  • Синтаксическая ошибка rightparen перед colon