Asa de simplu nu se poate. Din acest motiv exista extensii, dezvoltatori.
Probabil ca nu vreti sa porniti o afacere.
Doar va jucati cu OpenCart.
Spor ...
Probabil ca nu vreti sa porniti o afacere.
Doar va jucati cu OpenCart.
Spor ...
If you have any questions or want solutions to your problems, please email: support@medvicompany.ro
@shade_wo
Te vei familiariza cu opencart si vei intelege ca poti face aproape orice cu aceasta platforma. Felicitari pentru alegere!
Referitor la intrebare, se impune alegerea "tipului de pret", sau mai bine spus alegerea unei unitati de masura.
Exemplu: vreau sa vand material textil, unitatea de masura este metru liniar, pretul este de 12 ron / metru liniar
Am de facut 3 operatii: modificare in baza de date, modificare pentru partea de admin (sau "backend"), modificare pentru partea de catalog (ce vad vizitatorii - denumit si "catalog" sau "front")
Baza de date
===========
Voi crea in baza de date o coloana noua in tabelul oc_product (presupun ca prefixul ales la instalare a fost cel implicit - "oc_"):
cPanel -> phpMyAdmin -> baza_de_date_opencart -> oc_product -> structura -> adaugare coloana (ideal dupa coloana price)
nume coloana: price_type
tip: INT
Codul SQL ar fi:
Admin
===========
* Limba
Editez fisierele pentru limba:
admin/language/cod_limba_aici/catalog/product.php
si adaug descrierea pentru noua optiune ca text dupa in variabila $_ (in PHP se poate folosi underscore ca variabila)
Si apoi adaug lista de optiuni
* Model
Editez fisierul pentru model (Opencart este o platforma de tip MVC - model - view - controller; modelul este cel care "leaga" partea de procesare la partea de stocare a informatiei - baza de date)
Adaug o noua egalitate in cod imediat dupa egalitatea pentru price. Stiu ca price este folosit pentru pret, deci ce vreau eu sa adaug ar cam trebui sa fie pus tot pe-acolo. Am stabilit in baza de date ca tipul coloanei este INT (numar intreg), deci voi transforma valoarea cheii price_type intr-o valoare numerica de tip numar intreg inainte de a insera in baza de date pentru a ma asigura ca se salveaza corect. Dupa:
pun:
* Controller
Controller-ul este cel care face partea de procesare propriu-zisa, dar nu este o regula (procesarea se poate face si in model). Controller-ul imi permite sa ma "leg" la fisiere de limba sau la modele, imi permite sa apelez functii si sa primesc informatie ca raspuns.
Editez fisierul
Caut sa pun in cod informatie pentru noua mea coloana tot undeva unde se "intampla" ceva cu price, consider ca ar fi cam inainte de
Adaug:
* View
Asa cum spuneam ca o completare mai sus, Opencart este o platforma de tip MVC. Partea de View reprezinta sablonul folosit pentru a reda informatie apelantului. Limbajul folosit este twig si este foarte usor de deprins.
Ca la controller si model, voi cauta sa pun cod undeva unde este price pentru a pastra o legatura logica cu intentia mea initiala (vreau sa spun ce tip de pret este). Voi edita:
Voi cauta si voi pune 3 randuri mai sus codul:
Pare limba chineza, dar nu este. Engleza si putina logica, nimic mai mult. Am elemente HTML, clase Bootstrap pentru efect vizual si putin twig. De observat ca folosec o prescurtare pentru a stabili care dintre optiuni este selectata.
Am terminat in admin, trecem la...
Front
===========
Am de editat destul de mult, dar mergem din aproape in aproape. Incepem cu ideea ca vrem sa vedem "metru liniar" la un produs.
* Model
Incep tot cu modelul de dragul exemplului.
Caut pe unde ar fi ceva legat de price, deci voi pune ceva inainte de pentru ca aceasta bucata de cod nu se mai repeta in fisierul acesta. Adaug:
* Controller
Adaug cu 1 rand inainte de codul:
Caut de sus pana jos, imi dau seama ca trebuie sa afisez "metru liniar" pentru produse cand sunt intr-un fel de "previzualizare minima" (cand apar doar poza, numele, pretul si posibilitatea de a adauga in cos, la favorite sau comparare). Observatia o fac cam pe la linia de cod care contine:
Ramane sa ma mai gandesc...
Pentru produsele relationate caut:
adaug:
* Language
Pun lista de valori posibile dupa :
Revin la observatia facuta in controller. Acum presupun ca acest tip de pret ar trebui afisat si in listele de produse (categorii, search, speciale, produsele producatorului, extensii), doar ca l-as vrea prescurtat cumva la unele dintre acele texte. Pun o lista de texte scurte in fisierul de limba:
* View
Editam fisierul din tema implicita Opencart:
Trebuie sa pun "metru liniar" sau "/ metru liniar" sau " pe metru liniar" dupa pretul produsului. Aleg " / metru liniar" pentru claritatea informatiei. Adaug dupa
La fel si in cazul pretului special unde adaug dupa :
Completez pentru produsele similare de pe pagina de produs, adaug dupa
Codul:
Fac la fel si in cazul in care am pret special la aceste produse special. Adaug dupa
Codul:
Acesta ar trebui sa fie punctul de pornire pentru a afisa tipul de pret si in alte locuri din opencart. Succes!
Te vei familiariza cu opencart si vei intelege ca poti face aproape orice cu aceasta platforma. Felicitari pentru alegere!
Referitor la intrebare, se impune alegerea "tipului de pret", sau mai bine spus alegerea unei unitati de masura.
Exemplu: vreau sa vand material textil, unitatea de masura este metru liniar, pretul este de 12 ron / metru liniar
Am de facut 3 operatii: modificare in baza de date, modificare pentru partea de admin (sau "backend"), modificare pentru partea de catalog (ce vad vizitatorii - denumit si "catalog" sau "front")
Baza de date
===========
Voi crea in baza de date o coloana noua in tabelul oc_product (presupun ca prefixul ales la instalare a fost cel implicit - "oc_"):
cPanel -> phpMyAdmin -> baza_de_date_opencart -> oc_product -> structura -> adaugare coloana (ideal dupa coloana price)
nume coloana: price_type
tip: INT
Codul SQL ar fi:
Code: Select all
ALTER TABLE `oc_product` ADD `price_type` INT NOT NULL AFTER `price`;
===========
* Limba
Editez fisierele pentru limba:
admin/language/cod_limba_aici/catalog/product.php
si adaug descrierea pentru noua optiune ca text dupa
Code: Select all
<?php
Code: Select all
$_['text_price_type'] = 'Tip pret';
Code: Select all
$_['text_price_type_list'] = array('nespecificat', 'metru liniar', 'metru patrat', 'cutie', 'bucata', 'pachet', 'bax');
* Model
Editez fisierul pentru model (Opencart este o platforma de tip MVC - model - view - controller; modelul este cel care "leaga" partea de procesare la partea de stocare a informatiei - baza de date)
Adaug o noua egalitate in cod imediat dupa egalitatea pentru price. Stiu ca price este folosit pentru pret, deci ce vreau eu sa adaug ar cam trebui sa fie pus tot pe-acolo. Am stabilit in baza de date ca tipul coloanei este INT (numar intreg), deci voi transforma valoarea cheii price_type intr-o valoare numerica de tip numar intreg inainte de a insera in baza de date pentru a ma asigura ca se salveaza corect. Dupa:
Code: Select all
price = '" . (float)$data['price'] . "',
Code: Select all
price_type= '" . (int)$data['price_type'] . "',
Controller-ul este cel care face partea de procesare propriu-zisa, dar nu este o regula (procesarea se poate face si in model). Controller-ul imi permite sa ma "leg" la fisiere de limba sau la modele, imi permite sa apelez functii si sa primesc informatie ca raspuns.
Editez fisierul
Code: Select all
admin/controller/catalog/product.php
Code: Select all
if (isset($this->request->post['price'])) {
Code: Select all
if (isset($this->request->post['price_type'])) {
$data['price_type'] = $this->request->post['price_type'];
} elseif (!empty($product_info)) {
$data['price_type'] = $product_info['price_type'];
} else {
$data['price_type'] = 0;
}
Asa cum spuneam ca o completare mai sus, Opencart este o platforma de tip MVC. Partea de View reprezinta sablonul folosit pentru a reda informatie apelantului. Limbajul folosit este twig si este foarte usor de deprins.
Ca la controller si model, voi cauta sa pun cod undeva unde este price pentru a pastra o legatura logica cu intentia mea initiala (vreau sa spun ce tip de pret este). Voi edita:
Code: Select all
admin/view/template/catalog/product/product_form.twig
Code: Select all
{{ price }}
Code: Select all
<div class="form-group">
<label class="col-sm-2 control-label" for="select-price_type">{{ text_price_type }}</label>
<div class="col-sm-10">
<select name="price_type" value="{{ price_type }}" id="select-price_type" class="form-control" />
{% for item in text_price_type_list %}
{% set isSelected = price_type == loop.index0 ? 'selected="selected"' : '' %}
<option value="{{ loop.index0 }}" {{ isSelected }}>{{ item }}</option>
{% endfor %}
</select>
</div>
</div>
Am terminat in admin, trecem la...
Front
===========
Am de editat destul de mult, dar mergem din aproape in aproape. Incepem cu ideea ca vrem sa vedem "metru liniar" la un produs.
* Model
Incep tot cu modelul de dragul exemplului.
Code: Select all
catalog/model/catalog/product.php
Code: Select all
=> ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
Code: Select all
'price_type' => $query->row['price_type'],
Code: Select all
catalog/controller/product/product.php
Code: Select all
$data['price'] = $this->currency->format
Code: Select all
$data['price_type'] = $product_info['price_type'];
Code: Select all
$data['products'][] = array(
Pentru produsele relationate caut:
Code: Select all
=> $special,
Code: Select all
'price_type' => $result['price_type'],
Code: Select all
catalog/language/cod_limba_aici/product/product.php
Code: Select all
<?php
Code: Select all
$_['text_price_type_list'] = array('', 'metru liniar', 'metru patrat', 'cutie', 'bucata', 'pachet', 'bax');
Code: Select all
$_['text_price_type_list_short'] = array('', 'ml', 'm<sup>2</sup>', 'cutie', 'buc', 'pac.', 'bax');
Editam fisierul din tema implicita Opencart:
Code: Select all
catalog/view/theme/default/template/product/product.twig
Code: Select all
<h2>{{ price }}
Code: Select all
{% if price_type > 0 %} / {{ text_price_type_list.price_type }}{% endif %}
Code: Select all
<h2>{{ special }}
Code: Select all
{% if price_type > 0 %} / {{ text_price_type_list.price_type }}{% endif %}
Code: Select all
{{ product.price }}
Code: Select all
{% if product.price_type > 0 %} / {{ text_price_type_list_short.[product.price_type] }}{% endif %}
Code: Select all
{{ product.special }}
Code: Select all
{% if product.price_type > 0 %} / {{ text_price_type_list_short.[product.price_type] }}{% endif %}
Attachments
Stiam eu ca nu e simplu Multumesc foarte mult. Din pacate, cred ca nu voi avea timp sa invat OC numai pentru proiectul acesta. Eu in mod normal folosesc WooCommerce care desi mai slab, a fost suficient pentru mine.
Voi avea nevoie sa recomand clientului un dezvoltator de OC care sa ii termine proiectul. Va rog sa ma sfatuiti cum/unde sa caut. Clientul este o mica fabrica de produse de lemn din Resita, patronii sunt italieni.
Voi avea nevoie sa recomand clientului un dezvoltator de OC care sa ii termine proiectul. Va rog sa ma sfatuiti cum/unde sa caut. Clientul este o mica fabrica de produse de lemn din Resita, patronii sunt italieni.
Who is online
Users browsing this forum: No registered users and 250 guests