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

Вывод запроса на регистрации вместо цены

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

Стоит функция - не показывать цены незарегеным покупателям. То что для просмотра требуется регистрация, увы, не очевидно. Ибо не выводится вообще ничего.

Прошу специалистов подсказать как реализовать подмену цены на фразу "для просмотра цен - зарегистрируйтесь"...

Чтото если честно разобраться не смог.

Заранее спасибо.

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


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

пример для страницы товара

#1

catalog/controller/product/product.php
меняем

if (!$this->config->get('config_customer_price')) {
				$this->data['display_price'] = TRUE;
			} elseif ($this->customer->isLogged()) {
				$this->data['display_price'] = TRUE;
			} else {
				$this->data['display_price'] = FALSE;
			}
на

/* reg for price */
			$this->data["w_reg_for_price"] = "";
			$this->data["w_reg_for_price_register"] = "<a href=\"".$this->model_tool_seo_url->rewrite(HTTP_SERVER . "index.php?route=account/create")."\">".$this->language->get('w_reg_for_price_register')."</a>";
			$this->data["w_reg_for_price_login"] = "<a href=\"".$this->model_tool_seo_url->rewrite(HTTP_SERVER . "index.php?route=account/login")."\">".$this->language->get('w_reg_for_price_login')."</a>";
			
			if (!$this->config->get('config_customer_price')) {
				$this->data['display_price'] = TRUE;
			} elseif ($this->customer->isLogged()) {
				$this->data['display_price'] = TRUE;
			} else {
				$this->data['display_price'] = FALSE;
				$this->data["w_reg_for_price"] = sprintf($this->language->get('w_reg_for_price'), $this->data["w_reg_for_price_register"], $this->data["w_reg_for_price_login"]);
			}

#2

catalog/language/english/english.php
добавляем

/* w - reg for price */
$_['w_reg_for_price'] = 'To see the prices - %s or %s';
$_['w_reg_for_price_register'] = 'Register';
$_['w_reg_for_price_login'] = 'Log in';

#3

catalog/language/russian/russian.php
добавляем

/* w - reg for price */
$_['w_reg_for_price'] = 'Для просмотра цен - %s или %s';
$_['w_reg_for_price_register'] = 'Зарегистрируйтесь';
$_['w_reg_for_price_login'] = 'Войдите';

#4

catalog/view/theme/default/template/product/product.tpl
в районе строк 104-110 находим

<input type="hidden" name="product_id" value="<?php echo $product_id; ?>" />
                <input type="hidden" name="redirect" value="<?php echo str_replace('&', '&', $redirect); ?>" />
              </div>
            </form>
            <?php } ?></td>
меняем на

<input type="hidden" name="product_id" value="<?php echo $product_id; ?>" />
                <input type="hidden" name="redirect" value="<?php echo str_replace('&', '&', $redirect); ?>" />
              </div>
            </form>
            <?php } else { ?>
            <?php echo $w_reg_for_price; ?>
            <?php } ?></td>

post-3682-0-80230600-1301406200_thumb.png

Изменено пользователем afwollis
поменял
  • +1 2

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


Ссылка на сообщение
Поделиться на другие сайты
afwollis, поменяйте местами то, что "добавляем" во втором и третьем шаге. Оно, в принципе, и так понятно, что там очепятка, но может кому непонятно таки... :)

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


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

ну вот, опять... :o

сплошная печаль с этим вашим русским языком... :D

monax, спасибо, поменял.

  • +1 1

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


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

Сделал. Очень рад.

Огромное спасибо. :rolleyes:

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


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

Спасибо за решение

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


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

Здравствуйте, вопрос по данному решению для 1.5.6 очень актуален

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


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

А в чем проблема-то? чем это решение не устраивает?

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


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

Так там в файле на первом шаге нет такого кода...

А в чем проблема-то? чем это решение не устраивает?

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


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

Стоит функция - не показывать цены незарегеным покупателям. То что для просмотра требуется регистрация, увы, не очевидно. Ибо не выводится вообще ничего.

Прошу специалистов подсказать как реализовать подмену цены на фразу "для просмотра цен - зарегистрируйтесь"...

Чтото если честно разобраться не смог.

Заранее спасибо.

А зачем так делать? Я бы просто ушла вместо регистрации))

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


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

Разные виды торговли, у меня только опт

А зачем так делать? Я бы просто ушла вместо регистрации))

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


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

вот в этом файле: catalog/controller/product/product.php

 

нет такого кода:

if (!$this->config->get('config_customer_price')) {
                $this->data['display_price'] = TRUE;
            } elseif ($this->customer->isLogged()) {
                $this->data['display_price'] = TRUE;
            } else {
                $this->data['display_price'] = FALSE;
            }

 

может приложить свой файл? может кто-нибудь сможет помочь? клиенты предупреждение на главной странице не читают(

 

А в чем проблема-то? чем это решение не устраивает?

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


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

вот в этом файле: catalog/controller/product/product.php

 

нет такого кода:

if (!$this->config->get('config_customer_price')) {

                $this->data['display_price'] = TRUE;

            } elseif ($this->customer->isLogged()) {

                $this->data['display_price'] = TRUE;

            } else {

                $this->data['display_price'] = FALSE;

            }

 

У меня нет ОС 1.5.6. В 2.102 аналогичный код выглядит так:

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$data['price'] = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$data['price'] = false;
}

Подкорректировать несложно. Но для этого надо видеть код в вашей версии

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


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

Вариант для ОС 1.5.6.4

 

#1

в контроллере

catalog/controller/product/product.php

меняем

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
	$price = false;
}

на

/* reg for price */
$this->data['text_reg_for_price'] = "";

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
	$price = false;
	$this->data['text_reg_for_price'] = sprintf($this->language->get('text_reg_for_price'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));
}

#2

в файлах языка

добавляем (перед  ?>  )

 

англ.

catalog/language/english/english.php
/* text - reg for price */
$_['text_reg_for_price']  = 'To see the prices - <a href="%s">Log in</a> or <a href="%s">Register</a>';

русс.

catalog/language/russian/russian.php
/* text - reg for price */
$_['text_reg_for_price']  = 'Для просмотра цен - <a href="%s">войдите</a> или <a href="%s">зарегистрируйтесь</a>';

#3

в шаблоне

(если шаблон не дефолтный, выбирайте аналогичный файл вашего шаблона)

catalog/view/theme/default/template/product/product.tpl

меняем 

      <?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } ?>

на

      <?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } else { ?>
        <?php echo $text_reg_for_price; ?>
      <?php } ?>

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


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

Выдало ошибку(((

 

 

Notice: Undefined variable: price in /home/tltdetstvo/salyra.ru/docs/vqmod/vqcache/vq2-catalog_view_theme_default_template_product_product.tpl on line 34

 

 

 

 

 

Вариант для ОС 1.5.6.4

 

#1

в контроллере

catalog/controller/product/product.php

меняем

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
	$price = false;
}

на

/* reg for price */
$this->data['text_reg_for_price'] = "";

if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
	$price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
} else {
	$price = false;
	$this->data['text_reg_for_price'] = sprintf($this->language->get('text_reg_for_price'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));
}

#2

в файлах языка

добавляем (перед  ?>  )

 

англ.

catalog/language/english/english.php
/* text - reg for price */
$_['text_reg_for_price']  = 'To see the prices - <a href="%s">Log in</a> or <a href="%s">Register</a>';

русс.

catalog/language/russian/russian.php
/* text - reg for price */
$_['text_reg_for_price']  = 'Для просмотра цен - <a href="%s">войдите</a> или <a href="%s">зарегистрируйтесь</a>';

#3

в шаблоне

(если шаблон не дефолтный, выбирайте аналогичный файл вашего шаблона)

catalog/view/theme/default/template/product/product.tpl

меняем 

      <?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } ?>

на

      <?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } else { ?>
        <?php echo $text_reg_for_price; ?>
      <?php } ?>

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


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

А вы нигде не ошиблись, заменяя/добавляя?

На дефолтном шаблоне работает точно.

 

Покажите ваш файл из vqmod/vqcache

vq2-catalog_view_theme_default_template_product_product.tpl

 

И, если есть (скорее всего, есть), из этой же папки файл типа бла-бла-бла-product.php

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


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

Всё один в один делал

 

 

 

А вы нигде не ошиблись, заменяя/добавляя?

На дефолтном шаблоне работает точно.

 

Покажите ваш файл из vqmod/vqcache

vq2-catalog_view_theme_default_template_product_product.tpl

 

И, если есть (скорее всего, есть), из этой же папки файл типа бла-бла-бла-product.php

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


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

Как-то странно, сделал как Вы сказали, появилась ошибка, но надписи войти или зарегиться не появилось, вернул все файлы кэша, ошибка пропала, но и надписи так же нет %)

Изменено пользователем HardTLT

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


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

Что-то я под влиянием https://opencartforum.com/topic/2359-vyvod-zaprosa-na-registratcii-vmesto-tceny/?do=findComment&comment=14814 написал лишнего, и не того, что надо.. Надо было сразу самому думать(
 
Правильный вариант для ОС 1.5.6
 
#1
в файлы языка добавляем

 

catalog/language/russian/russian.php

$_['text_reg_for_price']  = 'Для просмотра цен - <a href="%s">войдите</a> или <a href="%s">зарегистрируйтесь</a>';

catalog/language/english/english.php

$_['text_reg_for_price']  = 'To see the prices - <a href="%s">Log in</a> or <a href="%s">Register</a>';

#2

в контроллер, в самом начале, после

$this->language->load('product/product');

добавляем

$this->data['text_reg_for_price'] = sprintf($this->language->get('text_reg_for_price'), $this->url->link('account/login', '', 'SSL'), $this->url->link('account/register', '', 'SSL'));

#3

в шаблоне

(если шаблон не дефолтный, выбирайте аналогичный файл вашего шаблона)

 

catalog/view/theme/default/template/product/product.tpl

 

ищем

      <?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } ?>

 меняем на

      <?php if ($price) { ?>
      <div class="price"><?php echo $text_price; ?>
        <?php if (!$special) { ?>
        <?php echo $price; ?>
        <?php } else { ?>
        <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
        <?php } ?>
        <br />
        <?php if ($tax) { ?>
        <span class="price-tax"><?php echo $text_tax; ?> <?php echo $tax; ?></span><br />
        <?php } ?>
        <?php if ($points) { ?>
        <span class="reward"><small><?php echo $text_points; ?> <?php echo $points; ?></small></span><br />
        <?php } ?>
        <?php if ($discounts) { ?>
        <br />
        <div class="discount">
          <?php foreach ($discounts as $discount) { ?>
          <?php echo sprintf($text_discount, $discount['quantity'], $discount['price']); ?><br />
          <?php } ?>
        </div>
        <?php } ?>
      </div>
      <?php } else { ?>
       <div class="text_price"> <?php echo $text_reg_for_price; ?></div>
      <?php } ?>

в css задаем нужные стили для класса .text_price

Изменено пользователем Shureg

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


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

Всё отлично, получилось!!! Спасибо Вам огромное!)

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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

×

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

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