Перейти к содержанию
Официальный форум поддержки Simpla

Использование таблиц в списке товаров


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

Здравствуйте, столкнулся с такой проблемой. Есть шаблон в котором в списке товаров используются таблицы(тоесть через определённое кол-во товаров ставится тег <tr>), но во всех шаблонов для simpla cms список товаров реализуется с помощью <div>. Как можно решить эту проблему? В других cms для создания интернет-магазинов эта проблема решается например с помощью цикла
for ($i = 0; $i < sizeof($products); $i = $i + 2) {
<tr>
for ($j = $i; $j < ($i + 2); $j++) {
// вид товара в тегах <td>
}
</tr>
}
(думаю понятно, здесь будут 2 товара в строке. )Если не будет решения стандартными средствами, то расскажите как правильно вставлять php код в шаблон. Заранее очень благодарен!

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

Кто писал эти ваши cms? Это просто безумие.
Во-первых, проще и быстрее идти в одном цикле, а там где надо - вставлять </tr><tr>
Зачем нам вложенный цикл?
Ваш пример можно упростить до:

for ($i = 0; $i < sizeof($products); $i++) {
// вид товара в тегах <td>
if($i%2) print '</tr><tr>';
}

Во-вторых sizeof($products) нужно выносить за цикл, зачем каждый раз ее вызывать? Наверное из-за таких программистов другие cms и тормозят (не удивлюсь что там могут вызвать еще и mysql_num_rows в цикле :)

В-третьих, зачем нам вообще цикл for, если еще проще использовать foreach:

foreach ($products as $i=>$p) {
// вид товара в тегах <td>
if($i%2) print '</tr><tr>';
}

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

Гениально! Огромное спасибо, всё работает... Не буду создавать ещё тему, спрошу тут же - есть кнопка добавление в корзину, выглядит так <a href="javascript:AddToCart(1)" class="add2cart"></a>, нужно "адаптировать" эту кнопку под шаблон симплы, если использую input с тем же стилем add2cart то прям на кнопке появляется отправить, хотя value нет. Как можно её адаптировать, оставив в теге <a>?(может как нибудь с атрибутом href поиграться или с помощью onclick)

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

Зависит от шаблона который вы используете. Если не нужна аяксовая корзина, то самый простой способ:

<!-- Выбор варианта товара и кнопка в корзину возле каждого из них -->

{foreach $product->variants as $v}
Название варианта: {$v->name}
Цена варианта: {$v->price|convert} {$currency->sign|escape}
В корзину: <a href="/cart?variant={$v->id}"/>в корзину</a>
{/foreach}

А если варианты товаров вам не нужны, тогда вообще просто ссылка
<a href="/cart?variant={$product->variant->id}"/>в корзину</a>

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

Для этого нужно в файле View.php выбрать из базы 4 случайных товара

// Выбираем случайные id товаров
$this->db->query('SELECT id FROM __products ORDER BY RAND() LIMIT 4');
$rand_ids = $this->db->results():

// Выбираем эти товары
$rnd_products = $this->products->get_products(array('id'=>$rand_ids));

// Передаём в шаблон
$this->design->assign('rnd_products', $rnd_products);

В шаблоне выводим
{foreach $rnd_products as $p}
{$p->name}
{/foreach}

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

Разобрался, но этот код выводит все товары которые есть в одинаковом порядке. Ошибка видимо в $rnd_products = $this->products->get_products(array('id'=>$rand_ids)); , т.к. если убрать код где запрашиваются случайные id товаров, то $this->products->get_products(array('id'=>$rand_ids)); всё равно выводит все товары

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

Пробовал реализовать, но увы выводит только один товар и хоть ты тресни!
Вот код:

// Выбираем случайные id товаров
$query = $this->db->placehold('SELECT id FROM __products ORDER BY RAND() LIMIT 4');
$this->db->query($query);
$random = $this->db->result();

// Выбираем эти товары
$random_products = array();
foreach($this->products->get_products(array('id'=>$random)) as $p)
$random_products[$p->id] = $p;

// Передаём в шаблон
$this->design->assign('random_products', $random_products);

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

Ну вообще всё правильно, функция result "Возвращает первый результат запроса. Необязательный второй аргумент указывает какую колонку возвращать вместо всего массива колонок" а results возвращает все результаты запроса массивом. Только у меня results тоже не работает

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

Но results не работает, вот например код который вы мне выше писали
// Выбираем случайные id товаров
$this->db->query('SELECT id FROM __products ORDER BY RAND() LIMIT 4');
$rand_ids = $this->db->results():

// Выбираем эти товары
$rnd_products = $this->products->get_products(array('id'=>$rand_ids));

// Передаём в шаблон
$this->design->assign('rnd_products', $rnd_products);
у меня не работает

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...