Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.
Как создать 3 колонки в каталоге товаров
-
20 декабря 2010 г.
-
Помогите разобраться как вывести список товаров в 3 или больше колонки?
-
-
-
-
20 декабря 2010 г.
-
Это ж первый курс программирования в институте :)
Перед циклом вывода товаров ставитеКодecho "<table><tr><td>";
$nnn=1;
в цикле ставите после вывода товара:Кодif ($nnn%3==0) echo "</td></tr><tr><td>"; else echo "</td><td>";
$nnn++;
После цикла ставитеКодecho "</td></tr></table>";
Поставите if ($nnn%2==0) - будет две колонки. if ($nnn%4==0) - четыре колонки. И т.д. -
-
-
-
28 февраля 2014 г.
-
http://kosadaka.net/g3555173-kosadaka
Если посмотреть код, то здесь колонки формируются списком. Этот вариант чем отличается от таблицы? Мне кажется, так даже легче? -
-
-
-
02 марта 2014 г. , редакция: 02 марта 2014 г.
-
если наполнение блока товара делать одинаковым, то лучше делать блокам, там просто делем фиксированный размер блока и ставим ему flat:left, а для последнейго делаем к примеру ul.shop_list li:nth-child(3n+3) {margin-right:0}
а если наоплнение разное по высоте, то табличка будет лучше. ну либо если блоками, то после третьего надо будет ставить
<div style="clear:both"></div> -
-
-
-
20 декабря 2010 г.
-
ну у меня на первом курсе было "растениеводство" )))
можно табличками, а можно в базовом шаблоне классу назначить .shop{float; left}
Кирилл, чтоб сделать как предложил Виталий, надо залезть в папку modules/shop а там найти файл shop.view.php и отредактировать его.
Если шаблон базовый, то можно попробовать отыскать класс, который отвечает за вывод одной позиции и назначить ему float: left. Второмы способом удобно пользоваться при "резиновой верстке"
-
-
-
-
21 декабря 2010 г.
-
Пётр, только не .shop{float; left} а .shop{float: left}
Так тоже можно, но это будет не "три колонки", а две или пять, в зависимости от разрешения экрана -
-
-
-
21 декабря 2010 г.
-
Петр спасибо через CSS получилось. Но с методом Виталия я так и не разобрался, если можно объяснить подробней.
-
-
-
-
22 декабря 2010 г.
-
Вы файл приложите shop.view.php
Я вам его поправлю и с комментариями внутри выложу обратно. -
-
-
-
22 декабря 2010 г.
-
Ок. он стандартный из пакета установки
-
-
-
-
27 декабря 2010 г. , редакция: 27 декабря 2010 г.
-
Вот
-
-
-
-
28 декабря 2010 г.
-
Виталий большое спасибо!
-
-
-
-
19 июня 2013 г.
-
Виталий, вопрос тот же, скачали этот файл, но видимо для новой версии он уже не актуален, можете нам подсказать в каком именно файле из серии shop.view нужно редактировать отображение колонок?
-
-
-
-
21 декабря 2010 г.
-
Виталий я правильно понимаю ваше описание:
Код//товары в разделе
echo "<table><tr><td>";
$nnn=1;
if(! empty($result["rows"]))
{
foreach($result["rows"] as $row)
{
echo '
<div class="shop">
<div class="shop-name"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a></div>';if(! empty($row["img"]))
{
echo '<div class="shop-img">';
if(! empty($row["img"]["link"]))
{
echo '<a href="'.BASE_PATH_HREF.$row["img"]["link"].'">'.$row["img"]["tag"].'</a>';
}
elseif(! empty($row["img"]))
{
foreach($row["img"] as $img)
{
echo ' <a href="'.BASE_PATH_HREF.$img["link"].'">'.$img["tag"].'</a>';
}
}
echo '</div>';
}
echo (empty($row["depend"]) && ! empty($row["price"]) ? '<div class="shop-price">'._LANG_PRICE.': <span class="shop-price-value">'.$row["price"].'</span> <span class="shop-price-currency">'.$result["currency"].'</span></div>' : '');
self::form($row, $result);
if(! empty($row["param"]))
{
foreach($row["param"] as $k => $v)
{
echo '
<div class="shop-param">'.$k.($v ? ': <span class="shop-param-value">'.(is_array($v) ? implode(', ',$v) : $v).'</span>' : '')."</div>\n";
}
}
echo (! empty($row["anons"]) ? '
<div class="shop-text">'.$row["anons"].'</div>' : '').'
</div>';
if ($nnn%3==0) echo "</td></tr><tr><td>"; else echo "</td><td>";
$nnn++;
}
}
echo "</td></tr></table>";
//ссылка на все товары -
-
-
-
23 декабря 2010 г.
-
Я когда заботился темой нескольких колонок натолкнулся на шаблон "зимний день" вот тут http://templates.diafan.ru/show5/ там хоть и в две колонки, но додумать там как сделать в три не сложно. Тем более в шаблоне уже всё со стилями красивыми. И первая строчка там по особому выделяется. Классный шаблон для экспериментов с колонками.
-
-
-
-
13 марта 2011 г.
-
Уважаемые коллеги, приветствую! Установил этот шаблон "зимний день", как раз для того, чтобы сделать больше колонок в магазине, нужно - 3-4. В шаблоне только две, а вот дополнить - не получается... И способ Виталия не помогает в случае с этим шаблоном, как я понимаю. Очень прошу, помогите советом, это, безусловно, положительно отразится на вашей карме и перерождениях в следующих жизнях Код шаблона прилагаю...
-
-
-
-
16 марта 2011 г.
-
Виталий, спасибо за желание помочь! сайт на домене art-narod.ru. в разделе "каталог" товары (картины). сейчас в 2 колонки, нужно - 3 или 4. и желательно чтобы подписи к каждому товару размещались под картинкой, а не справа. теоретически - как-то просто должно быть, а практически не могу допетрить...
-
-
-
-
17 марта 2011 г. , редакция: 17 марта 2011 г.
-
Все просто!
Файл /modules/shop/shop.view.php
функция first_page для первой страницы каталога (http://art-narod.ru/shop/) или функция list_ для списка (http://art-narod.ru/shop/cat11/)
//товары в разделе
Обратите внимание, открывается таблицаКодecho '<table class="shop-block">';
затем есть переменная $k=0;
Если $k пустая, то выводится еще одна колонка: </td><td> и в конце переменная делается не пустой ($k=1-$k;). Тогда в очередной цикл она проверится и уже откроется новая строка.Код(!$k?'
<tr valign="top">
<td class="shop-td-first">'
:'
<td>'
)
В данном алгоритме $k - переключатель в двух положениях, либо пусто, либо нет. Поэтому две колонки.
Поправьте $k, чтобы в конце цикла $k обнулялось когда доходит до 3 или 4. И закрывайте tr когда $k достигает 3 или 4. И все! -
-
-
-
17 марта 2011 г.
-
Виталий, читаю Ваше объяснение - все, вроде, понятно. Но попытки правки заканчиваются неминуемыми ошибками синтаксиса... что-то я не так делаю... Огромная просьба, можно указать прямо в коде, куда и что вставить правильно?Код//товары в категории
if(! empty($cat["rows"]))
{
$k = 0;
$m = 0;
echo '
<table class="shop-block">';
foreach($cat["rows"] as $row)
{
echo(!$k?'
<tr valign="top">
<td class="shop-td-first">'
:'
<td>'
)
.($m?'<hr>':'').'
<div class="shop-img">';
if(! empty($row["img"]["link"]))
{
echo '<a href="'.BASE_PATH_HREF.$row["img"]["link"].'">'.$row["img"]["tag"].'</a>';
}
elseif(! empty($row["img"]))
{
foreach($row["img"] as $img)
{
echo ' <a href="'.BASE_PATH_HREF.$img["link"].'">'.$img["tag"].'</a>';
}
}
echo '</div>
<div class="shop-name"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a> '.$row["show-rating"].'</div>
<div class="shop-text">'.$row["anons"].'</div>'
.($row["price"]?'
<div class="shop-price">'._LANG_PRICE.': <span class="shop-price-value">'.$row["price"].'</span> <span class="shop-price-currency">'.$result["currency"].'</span></div>':'');
self::form($row, $result);
echo (!empty($row["tags"])?$row["tags"]:'').'
</td>'
.($k?'
</tr>':'');
if($k)
{
$m=1;
}
$k=1-$k;
}
echo ($k?'
</tr>':'').'
</table>';
}
echo '
</div>';
}
return TRUE;
} -
-
-
-
18 марта 2011 г.
-
Постю не проверяя, должно работатьКод
//товары в категории
if(! empty($cat["rows"]))
{
$k = 0;
$m = 0;
echo '
<table class="shop-block">
<tr valign="top">';
foreach($cat["rows"] as $row){
echo '<td>'.
($m?'<hr>':'').'
<div class="shop-img">';
if(! empty($row["img"]["link"]))
{
echo '<a href="'.BASE_PATH_HREF.$row["img"]["link"].'">'.$row["img"]["tag"].'</a>';
}
elseif(! empty($row["img"]))
{
foreach($row["img"] as $img)
{
echo ' <a href="'.BASE_PATH_HREF.$img["link"].'">'.$img["tag"].'</a>';
}
}
echo '</div>
<div class="shop-name"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a> '.$row["show-rating"].'</div>
<div class="shop-text">'.$row["anons"].'</div>'
.($row["price"]?'
<div class="shop-price">'._LANG_PRICE.': <span class="shop-price-value">'.$row["price"].'</span> <span class="shop-price-currency">'.$result["currency"].'</span></div>':'');
self::form($row, $result);
echo (!empty($row["tags"])?$row["tags"]:'').'</td>';
if ($k>3) { echo '</tr><tr>'; $k=0; } else { $k++; }
if($k)
{
$m=1;
}
}
echo '</tr></table>';
}
}
echo '
</div>';
}
return TRUE;
} -
-
-
-
02 апреля 2011 г.
-
а как сделать чтоб в магазине для разной категории выводилось разное кол-во колонок?
-
-
-
-
04 апреля 2011 г.
-
В шаблон list_ передается переменная $result["id"] с номером текущей категории. Можете анализируя эту переменную выводить свой шаблон для каждой категории. Например:Код
if(! empty($result["id"]) && $result["id"] == '1')
{
//выводим 2 колонки для первой категории
}
else
{
//выводим 5 колонок по умолчанию
} -
-
-
-
04 апреля 2011 г. , редакция: 04 апреля 2011 г.
-
Я в последнее время склоняюсь к тому чтобы модульные структуры образующие колонки оформлять не таблицей а DIV'ами прилепленными влево или вправо. Они начинают размазываться по ширине аккуратно заполняя пространство рабочей области под любое разрешение.
Есть только небольшая проблемка с решением растяжки блока являющегося обёрткой для данной структуры повысоте но и она тоже решается :) -
-
-
-
04 апреля 2011 г.
-
Народ, помогите! Нужно главную страницу магазина сделать таким образом: 2 колонки: в каждой колонке блок из: Имя категории (заголовок H2), фотка категории, и под ней "ПОСМОТРЕТЬ ВСЕ ТОВАРЫ КАТЕГОРИИ" Из кода шаблона главной страниц убрал всё лишнее, вот код, как сделать?:)Код/**
* Шаблон первой страницы магазина
*
* @param array $result сгенерированные в моделе данные
* @return boolean
*/
public function first_page($result)
{
if(empty($result["categories"]))
return FALSE;
//категории
foreach($result["categories"] as $cat_id => $cat)
{
echo '<div class="shop_list">';
//название категории
echo '<h2>'.$cat["name"].'</h2>';
//краткое описание категории
if(! empty($cat["anons"]))
{
echo '<div class="shop_cat_text">'.$cat["anons"].'</div>';
}
//изображения категории
if(! empty($cat["img"]))
{
echo '<div class="shop_cat_img">';
foreach($cat["img"] as $img)
{
switch($img["type"])
{
case 'animation':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'shop]">';
break;
case 'big_image':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="big_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
break;
default:
echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
break;
}
echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
.'</a> ';
}
echo '</div>';
}
//подкатегории
if(! empty($cat["children"]))
{
foreach($cat["children"] as $child)
{
//название и ссылка подкатегории
echo '<div class="shop_cat_links"><a href="'.BASE_PATH_HREF.$child["link"].'">'.$child["name"].'</a></div>';
//краткое описание подкатегории
if(! empty($child["anons"]))
{
echo '<div class="shop_cat_text">'.$child["anons"].'</div>';
}
//изображения подкатегории
if(! empty($child["img"]))
{
echo '<div class="shop_cat_img">';
foreach($child["img"] as $img)
{
switch($img["type"])
{
case 'animation':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$child["id"].'shop]">';
break;
case 'big_image':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="big_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
break;
default:
echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
break;
}
echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
.'</a> ';
}
echo '</div>';
}
}
}
//товары в категории
if(! empty($cat["rows"]))
{
foreach($cat["rows"] as $row)
{
echo '<div class="shop">';
//изображения товара
if(! empty($row["img"]))
{
echo '<div class="shop_img">';
foreach($row["img"] as $img)
{
switch($img["type"])
{
case 'animation':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$row["id"].'shop]">';
break;
case 'big_image':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="big_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
break;
default:
echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
break;
}
echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
.'</a> ';
}
echo '</div>';
}
//название и ссылка товара
echo '<div class="shop_name"><a href="'.BASE_PATH_HREF.$row["link"].'">'.$row["name"].'</a>';
//рейтинг товара
if(! empty($row["show_rating"]))
{
echo ' '.$row["show_rating"];
}
echo '</div>';
//артикул
if(! empty($row["article"]))
{
echo '<div class="shop_article">'.$this->_('ARTICLE').': <span class="shop_article_value">'.$row["article"].'</span></div>';
}
//цена на товар
if(empty($row["depend"]) && ! empty($row["price"]))
{
echo '<div class="shop_price">'.$this->_('PRICE').': <span class="shop_price_value">'.$row["price"].'</span> <span class="shop_price_currency">'.$result["currency"].'</span></div>';
if(! empty($row["old_price"]))
{
echo '<div class="shop_old_price">'.$this->_('OLD_PRICE').': <span class="shop_price_value">'.$row["old_price"].'</span>'
.' <span class="shop_price_currency">'.$result["currency"].'</span></div>';
}
}
//скидка на товар
if(! empty($row["discount"]))
{
echo '<div class="shop_discount">'.$this->_('DISCOUNT').': <span class="shop_discount_value">'.$row["discount"].' %</span></div>';
}
// параметры товара
if(! empty($row["param"]))
{
self::param($row["param"]);
}
//краткое описание товара
if(! empty($row["anons"]))
{
echo '<div class="shop_text">'.$row["anons"].'</div>';
}
//кнопка "Купить"
self::form($row, $result);
//теги товара
if(! empty($row["tags"]))
{
echo $row["tags"];
}
echo '</div>';
}
}
//ссылка на все товары в категории
if($cat["link_all"])
{
echo '<div class="show_all"><a href="'.BASE_PATH_HREF.$cat["link_all"].'">'
.$this->_('SHOW_ALL_GOODS_IN_CATEGORY').' '.$this->_('LQUOT').$cat["name"].$this->_('RQUOT')
.'</a></div>';
}
echo '</div>';
}
return TRUE;
}
так то начинаю потихоньку вникать в суть проблемы, но специальность у меня "инженер автомобильного транспорта" так что... -
-
-
-
04 апреля 2011 г.
-
блин ! вот правильный кусок кода! в буфере обмена не то было, отправил и сейчас только заметил :(
Код/**
* Шаблон первой страницы магазина
*
* @param array $result сгенерированные в моделе данные
* @return boolean
*/
public function first_page($result)
{
if(empty($result["categories"]))
return FALSE;
//категории
foreach($result["categories"] as $cat_id => $cat)
{
echo '<div class="shop_list">';
//название категории
echo '<h2>'.$cat["name"].'</h2>';
//краткое описание категории
if(! empty($cat["anons"]))
{
echo '<div class="shop_cat_text">'.$cat["anons"].'</div>';
}
//изображения категории
if(! empty($cat["img"]))
{
echo '<div class="shop_cat_img">';
foreach($cat["img"] as $img)
{
switch($img["type"])
{
case 'animation':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'shop]">';
break;
case 'big_image':
echo '<a href="'.BASE_PATH.$img["link"].'" rel="big_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
break;
default:
echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
break;
}
echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
.'</a> ';
}
echo '</div>';
}
//ссылка на все товары в категории
if($cat["link_all"])
{
echo '<div class="show_all"><a href="'.BASE_PATH_HREF.$cat["link_all"].'">'
.$this->_('SHOW_ALL_GOODS_IN_CATEGORY').' '.$this->_('LQUOT').$cat["name"].$this->_('RQUOT')
.'</a></div>';
}
echo '</div>';
}
return TRUE;
} -
-
-
-
05 апреля 2011 г.
-
Ребята, давайте я один раз напишу принцип и вы будете его применять везде сами, как сильные программисты?
В HTML есть такое понятие, как таблица:Код<table> - это таблица
<tr> - это 1 строка
<td></td> - это 1 колонка 1 строки
<td></td> - это 2 колонка 1 строки
</tr>
<tr> - это 2 строка
<td></td> - это 1 колонка 2 строки
<td></td> - это 2 колонка 2 строки
</tr>
<tr> - это 3 строка<td></td> - это 1 колонка 3 строки
<td></td> - это 2 колонка 3 строки
</tr>
</table>
Видите принцип?
По краям стоит <table></table>
Каждая строка начинается и заканчивается <tr></tr>
И внутри каждой строки есть колонки <td>содержимое</td>
Т.е. у нас в таблице повторяются <tr></tr> - это строки в таблице, а в каждой строке повторяются по две колонки <td></td>.
Соответственно, чтобы в РНР вывести таблицу надо сделать цикл:
Кодecho "<table>";
цикл { //for или while или foreach
echo "<tr><td></td><td></td></tr>";
}
echo "</table>";
Понятно? Если будет цикл в 3 круга, этот код выведет таблицу с тремя строками и двумя колонками в каждой, как в примере выше.
Или вложенный цикл:Кодecho "<table>";
foreach() {
echo "<tr>";
foreach() {
echo "<td></td>";
}
echo "</tr>";
}
echo "</table>";
Надеюсь, это понятно.
Теперь: если у вас один цикл, в котором куча товаров выводятся подряд, один за одним:и их надо вывести в две колонки, что надо сделать? Первым делом надо вывести снаружи цикла таблицу.Кодforeach {
вывод товара;
}Почему снаружи, а не в цикле? Потому, что таблица одна будет.Код<table>
foreach {
вывод товара;
}
</table>
Теперь каждое содержимое цикла надо выводить в ячейке таблицы. Для этого надо вывести начало строки <tr> и начало колонки <td>. Затем вывести содержимое цикла и закрыть колонку и строку:Код<table>
foreach {
echo "<tr>";
echo "<td>";
вывод товара;
echo "</td>";
echo "</tr>";
}
</table>
Этот цикл выведет товары в одну колонку, а нам надо в две.
Т.е. надо <tr> <td>один товар</td> и еще раз <td>второй товар</td> </tr>
Или другими словами в цикле надо первый раз вывестиИ второй раз вывестиКодecho "<tr>";
echo "<td>";
вывод товара;
echo "</td>";Кодecho "<td>";
вывод товара;
echo "</td>";
echo "</tr>";
Затем то же самое снова:
первая колонка - вторая
первая-вторая
первая-вторая
и т.д.
Для этого нам надо знать, какой товар по счету выводится, первый или второй. Введем любую переменную $pipka и будем ею считать колонки:Код<table>
$pipka=0; //сделаем наш счетчик 0, чтобы понимать, что не выведено пока ничего и будет выводиться первая колонка
foreach {
if ($pipka==0) echo "<tr>"; //т.е. выводим tr для первого раза, когда счетчик
echo "<td>";
вывод товара;
echo "</td>";
$pipka++; // делаем наш счетчик +1, потому, что товар вывели
if ($pipka==2) { echo "</tr>"; $pipka=0; } // если первый товар выведен, то $pipka будет равна 1 и строка </tr> не закроется. А если уже второй раз цикл пройдется, то $pipka станет 2 и тогда </tr> закроется и $pipka станет 0, для очередного цикла. И тогда сработает первое условие if ($pipka==0) которое откроет новую строку.
}</table>
Таким образом цикл настрочит таблицу с кучей строк и с двумя колонками, в каждой из которых будет товар!
Еще яснее объяснить не могу! -
-
-
-
05 апреля 2011 г.
-
Во! супер) Виталию большое ЧЕЛОВЕЧЕСКОЕ спасибо пойду в денвере покапаюсь! очень подробно!
-
-
-
-
06 апреля 2011 г. , редакция: Виталий (DIAFAN.CMS) 867 06 апреля 2011 г.
-
Виталь сколько времени убил? Мог бы какую нибудь небольшую фишечку для магазина настроить. Меня ломает объяснять школьный курс информатики клиентам, если толку нет, то тогда я говорю, давайте я сам сделаю за денежку. У клиентов сразу все вопросы пропадают. Или даю ссылочку на материал по теме. Тут уместнее всего было послать на обалденный учебник по HTML сам его часто рекомендую студентам или начинающим проявляющим к этому делу интерес клиентам всё-таки, как никак не всё можно решить интегрированным в CMS редактором.
1. http://www.postroika.ru/html/21step2.html
циклы зачем они нужны и как их использовать.
2. http://ab-w.net/PHP/php_loop.php
Иещё одно замечание. Я предпочитаю дописывать таблицу до конца то-есть если у нас вдруг товары заканчиваются на первой колонке то необходимо вставить ещё одну пустую ячейку во вторую колонку или больше в зависимости от того сколько у нас всего колонок. Плюс всё-таки необходимо закрыть строчку коли она начата. Это необходимо чтобы таблица имела законченный вид. В выше указанном примере нет таких проверок и целостность таблицы может быть нарушена.
aprofi (aprofi)Учи мат часть - удачи. -
-
-
-
06 апреля 2011 г.
-
Сколько времени... Много! С час точно.
Но это уже третий раз только на форуме, когда спрашивают одно и тоже, только для разных в оформлении функций. Лучше потом сюда сослать и не отвечать, чем каждому править!
Замечание... Если бы я еще про закрытие ячеек стал рассказывать, я бы завис еще на полчаса... Начинающим и так сойдет! Потом копнут, сами поправят! -
-
-
-
09 апреля 2011 г.
-
ЦитатаВиталь сколько времени убил? Мог бы какую нибудь небольшую фишечку для магазина настроить. Меня ломает объяснять школьный курс информатики клиентам, если толку нет, то тогда я говорю, давайте я сам сделаю за денежку. У клиентов сразу все вопросы пропадают. Или даю ссылочку на материал по теме. Тут уместнее всего было послать на обалденный учебник по HTML сам его часто рекомендую студентам или начинающим проявляющим к этому делу интерес клиентам всё-таки, как никак не всё можно решить интегрированным в CMS редактором.
1. http://www.postroika.ru/html/21step2.html
циклы зачем они нужны и как их использовать.
2. http://ab-w.net/PHP/php_loop.php
Иещё одно замечание. Я предпочитаю дописывать таблицу до конца то-есть если у нас вдруг товары заканчиваются на первой колонке то необходимо вставить ещё одну пустую ячейку во вторую колонку или больше в зависимости от того сколько у нас всего колонок. Плюс всё-таки необходимо закрыть строчку коли она начата. Это необходимо чтобы таблица имела законченный вид. В выше указанном примере нет таких проверок и целостность таблицы может быть нарушена.
aprofi (aprofi)Учи мат часть - удачи.
ЦитатаСколько времени... Много! С час точно.
Но это уже третий раз только на форуме, когда спрашивают одно и тоже, только для разных в оформлении функций. Лучше потом сюда сослать и не отвечать, чем каждому править!
Замечание... Если бы я еще про закрытие ячеек стал рассказывать, я бы завис еще на полчаса... Начинающим и так сойдет! Потом копнут, сами поправят!
Уже читаю, спасибо вам :) -
-
-
-
19 апреля 2011 г.
-
В релизе 4.4.1 кто-нибудь тестил данное решение. Файл модуля shop.view.php изменился.
-
-
-
-
19 апреля 2011 г.
-
Виталий спасибо за потраченное время, но у меня не получилось. Может поправите оригинал. Сделаю вывод и выложу с объяснениями для всех.
if(! empty($result["rows"]))
{
//открываем таблицу перед циклом
echo "<table><tr><td>";
$pipka=0;
foreach {
if ($pipka==0) echo "<tr>"; //т.е. выводим tr для первого раза, когда счетчик
echo "<td>";
вывод товара и т.д.
foreach($result["rows"] as $row)
{
echo '<div class="shop">';
финал echo "</td>"; $pipka++;
if ($pipka==2) { echo "</tr>"; $pipka=0; }
}
</table> -
-
-
-
19 апреля 2011 г.
-
А причем тут версия? Принцип тот же. К тому же view изменился несильно.
-
-
-
-
19 апреля 2011 г.
-
Дмитрий (Onmaster) подскажите как сделать проверку (на основании примера Виталия) - чтобы таблица имела законченный вид.
-
-
-
-
20 апреля 2011 г. , редакция: 20 апреля 2011 г.
-
хе хе я же говорил что таблицы -ЗЛО
ну вот в принципе после циклаКодforeach($result["rows"] as $row) {
...
}
Надо ставить проверки на законченность структуры для правильной расстановки пипок нужен
цикл ставим пипку пока их не будет 2 то {
ещё <td></td>
увеличиваем пипку на 1
}
после того как пипки рассравлены надо закрыть строку и таблицу -
-
-
-
20 апреля 2011 г.
-
Дмитрий (Onmaster) можете прикрепить решение на дивах.
Или помогите закончить проблему с 2-3 колонками на таблицах.
Виталий от вас нужна помощь
Сбился с пути. -
-
-
-
21 апреля 2011 г.
-
Ребят, надоело, честно. Это первый класс программирования. К diafan.CMS отношения прямого не имеет. Эта тема максимально информационна, проще рассказать я не могу. Если тему замусорить файлами "Сделайте мне", "И мне сделайте то же самое", "И мне", "И для меня" и так далее еще 50 человек одно и то же - несерьезно.
Могу только посоветовать echo "1";
Ставьте "методом тыка", смотрите: где выходит, сколько раз выходит, после чего выходит, делайте выводы.
Если не можете разобраться с примитивным циклом одной вложенности, то лучше бросить программирование, заказать у программиста эту доработку за пару сотен рублей и пару минут и все. -
-
-
-
21 апреля 2011 г.
-
-
-
-
03 июня 2011 г.
-
Диафанщики наверное запарились отвечать по этой теме. Поэтому спрашиваю у таких как я пользователей.
У меня с помощью css выводится 3 товара в строке. НО! При добавлении 1-го или 2-го товара в корзину смещаются вниз нижние товары - см. приаттаченную картинку. При этом если добавлять в корзину 3-й товар, то никакого смещения нет.
В общем какой-то мой css косяк. Не знаете как исправить?
Вот http://floral-kingdom.com.ua/shop/bukety/bukety_iz_roz/ -
-
-
-
01 ноября 2011 г.
-
Вроде получилось на стандартном шаблоне вывести n-колонок, ЦМС 4.5
шоп.вью во вложении.
Вопрос к разработчикам: что за блок такой <div id="clear"></div>?
можно ли размещать закрытие таблицы </td></tr></table> после этого блока?
кусок кода:
Код
начало цикла вывода товаров
....
....
//вывод кнопки "Купить"
self::form($row, $result);
echo '</td></tr></table>';
//мои правки
if ($nnn%3==0) echo "</td></tr><tr><td>"; else echo "</td><td>";
$nnn++;} //конец цикла foreach() вывода товаров
echo '<div class="clear"></div>'; - что это такое?
//мои правки
echo "</td></tr></table>"; - можно ли закрыть эту таблицу после этого блока "clear"?
} //конец блока if, который перед циклом вывода товаров
-
-
-
-
01 ноября 2011 г.
-
Код
<div id="clear"></div>
Необходимый инструмент для борьбы с наездами блоков друг на друга.
Если выше есть блоки у которых в стиляих например имеются float: left; или float: right; то идущие за ними блоки будут обтекать их. Вот чтобы не обтекали и ставится <div id="clear"></div> у которого есть свойство clear: both; -
-
-
-
02 ноября 2011 г. , редакция: 03 ноября 2011 г.
-
Насколько правильное решение по выводу товара в 2 колонке на divах? Вопрос к сообществу.
Вопрос к Дмитрий (Onmaster): если выше было озвучено о закрытие таблиц через проверку, дабы получить целостность. То как быть с дивами?
//товары в категории
if (! empty($cat["rows"]))
{
echo '<div class="contener">';
$i=1;
foreach ($cat["rows"] as $row)
{
echo ($i==1?'<div class="cont_one"><div class="shop_td_first">':'</div><div class="shop_td_second">');
echo '<div class="shop">';
---------------------------------------------------------------
все что касается основного содержимого
//изображения товара
if (! empty($row["img"]))
и т.д. {
----------------------------------------------------------------
echo '</div>';
echo ($i<2?'':'</div></div>');
if($i==2)$i=1;
else $i++;
}
echo ($i==1?'':'</div></div>');
echo '</div>';
} -
-
-
-
03 ноября 2011 г. , редакция: 03 ноября 2011 г.
-
Адски
Смотри делаешь контейнер, который выравниваешь с помощью float: left;
А дальше всё простоКод
количество столбцов = х;
цикл (перебрать все) {
вывод 'открыть контейнер';
вывод '[содержимое контейнера]';
вывод 'закрыть контейнер';
количество столбцов--;
если (!количество столбцов) {
количество столбцов = x;
вывод '<div id="clear"></div>'; // супер инструмент :)}
}
Помоему достаточно просто и элегантно и не надо парится по поводу целостности таблицы, как в случае с <table>.
Осталось алгоритм на РНР перевести :) -
-
-
-
13 января 2012 г.
-
Добрый день,
если кому надо прикрепляю файл shop.view.php
для вывода данных в 3 колонки (табличный вариант).
За основу брался файл из шаблона "Зимний день" версия 4.5.
Внес в него правки согласно инструкций Виталий (Diafan.CMS). Спасибо большое за разъяснения.
У меня вроде все заработало. -
-
-
-
23 ноября 2012 г.
-
Здравствуйте!
В версии diafan.CMS.5.1.1 нет файла shop.view.php...
Что в этом случае править? -
-
-
-
23 ноября 2012 г.
-
Думаю, что shop.view.list.php.
-
-
-
-
- Denis (Drachoon)
- 154
-
23 ноября 2012 г.
-
Надо исходить из задачи.
раньше был 1 файл shop.view.php
Теперь этот файл раздраконили и вместо него куча файлов каждый view занимается формированием отображения конкретной штуки. Смотря что надо оформить такой и файл нужно править.
shop.view.list.php - список категорий
shop.view.id.php - Карточка товара
shop.view.first_page.php - Корневая папка магазина и т.д. Внутри каждого файла есть подсказки если чего. -
-
-
-
-
26 ноября 2012 г.
-
Обращусь с просьбой к бывалым.
А можно ли под свежую версию diafan.CMS.5.1.1 скорректировать 3х колончатый вывод товаров для Главной?
Понимаю, что тема достала. Помогите пожалуйста!
Извините за доставучесть(( -
-
-
-
27 ноября 2012 г.
-
Можно посмотреть в шаблонах бесплатных, как там реализовано
-
-
-
-
27 ноября 2012 г.
-
Приложенный файлик должен Вам помочь. 4 на 3 смените только, в остальном затруднений быть не должно.
-
-
-
-
27 ноября 2012 г.
-
Андрей, а в какой файл и в какое место сувать этот код?
-
-
-
-
28 ноября 2012 г. , редакция: 28 ноября 2012 г.
-
Как правило товары, новости и т.д. в шаблонах выводятся циклом. Начинается он со строк
"foreach ($result["rows"] as $row){"
а заканчивается символом "}"
Начало замените на
$i=1;
echo '<table>';
foreach($result["rows"] as $row)
{
echo ($i==1?'<tr><td>':'</td><td>');
а окночание, т.е. "}" на
echo ($i<4?'':'</td></tr>');
if($i==4)$i=1;
else $i++;
}
echo ($i==1?'':'</td></tr>');
echo '</table>'; -
-
-
-
30 ноября 2012 г. , редакция: 30 ноября 2012 г.
-
Кстати, сейчас рылся в адмике Shop-Script PRO 2008 года (!) (сейчас называется - WebAsyst Shop-Script) и увидел у них опцию задания нужного количества столбцов - очень удобно!
-
-
-
-
- Denis (Drachoon)
- 154
-
30 ноября 2012 г.
-
Ну и как часто планируется использовать эту опцию для отдельно взятого проекта? Могу ответить 1 раз. 1 раз это можно и решить путём настрйки шаблона - не так уж и долго.
Выводы:
Решение для диафана
+ Очень мало кода в CMS.
- Непонятно для домохозяек.
Решение ShopScript
+ Понятно для домохозяек
- Очень много лишнего кода -
-
-
-
-
01 декабря 2012 г.
-
Денис, ты видел сколько на форуме об этом развели сыр-бора? Значит тема актуальная не только для домохозяек (покажи мне тут домохозяек).
Ну, и скажи, сколько "лишнего" кода будет? -
-
-
-
- Denis (Drachoon)
- 154
-
03 декабря 2012 г.
-
Ну вот те персы, которые не могут освоить данный вопрос и есть домохозяйки.
Там проблем особых нет, нужно уметь составлять простенькие алгоритмы на 1 вложенном цикле, этому учать в 7 классе общеобразовательной школы. И синтаксис PHP знать как этот алгоритм оформить.
А уж HTML не знать человеку, который решил сайт сделать - это вообще позор.
Любой 5 класник у которого есть комп наверное, это освоил если задавался целью сделать собственную страничку в интернете. -
-
-
-
03 декабря 2012 г.
-
Получается, что я домохозяйка по твоим стандартам.
Хотя HTML знаю ещё с прошлого века. -
-
-
-
- Андрей (R4W)
- 140
-
03 декабря 2012 г.
-
Где это у нас в 7 классе на PHP кодить учат???
-
-
-
-
04 декабря 2012 г.
-
Не PHP, а простым алгоритмам.
Хотя лично меня и этому в школе не учили...все в ворде печатали и в пейнте рисовали. -
-
-
-
- Denis (Drachoon)
- 154
-
04 декабря 2012 г.
-
Ну сейчас дети реактивные и стандарты поменялись с того времени. В 9 классе уже на С'ях роботов программять а азы раньше учат. В ворде и пайнте в 3-4 классе калякают. Блок схемы алгоритмы в 7'ом.
-
-
-
-
04 декабря 2012 г.
-
Везет им)
-
-
-
-
- Denis (Drachoon)
- 154
-
05 декабря 2012 г.
-
Да уж и не говори. Тоже завидую чёной завистью, ну почему я не родился на 20 лет позже.
Но зато я нюхнул больше хардкора, о чём они могут только догадываться :) -
-
-
-
-
-
-
02 июня 2014 г.
-
Ребят, прошу помощи.
Хочу сделать вывод товаров в магазине с одной колонкой (чтобы каждый товар на своей строчке)
Вывод модуля осуществляется файлом shop.view.list.php. На данный момент товар выводится в 4 колонки, как файл ни крутил, все равно выводит 4.
Вот код:Код//вывод списка товаров
if (!empty($result["rows"]))
{
//вывод сортировки товаров
if(! empty($result["link_sort"]))
{
echo $this->get('sort_block', 'shop', $result);
}
echo '<div class="shop-pane">';
$rows = array(array(), array(), array(), array());
$t = 0;
foreach ($result["rows"] as $row => $value)
{
if($t > 3) $t = 0;
$rows[$t][] = $value;
$t++;
}
foreach ($rows as $value)
{
echo '<div class="shop-col">';
foreach ($value as $row)
{
echo '<div class="shop-item">';
Подскажите, пожалуйста, что поправить, чтобы выводился 1 товар в строке. -
-
-
-
02 июня 2014 г.
-
Двумерный массив здесь будет лишним. Достаточно будет сложить все товары в один ряд
Код
$rows[] = $value;
и выводить одним циклом, как-то так:
Код
foreach ($rows as $row)
{
echo '<div class="shop-col">';
echo '<div class="shop-item">'; -
-
-
-
02 июня 2014 г.
-
ЦитатаНа данный момент товар выводится в 4 колонки, как файл ни крутил, все равно выводит 4.
И не все зависит только от кода. Очень многое зависит от CSS. -
-
-
-
04 июня 2014 г.
-
Код
.shop-col{
width: 100%;
float: none;
}
по идее что-то типа того -
-
-
Новости
-
18 июня
-
В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
-
24 апреля
-
В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
-
12 января
-
После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке.
Блоги
-
24.04.2024
-
Выпустили новую сборку DIAFAN.CMS 7.1.4.
Блоги
-
12.01.2024
-
В данном руководстве познакомим вас с панелью управления DIAFAN.CMS