Вход • Регистрация

Всего найдено: 5696

  • 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;
    }
  • 19 марта 2011 г.
  • Это что-то напутали с фигурными скобками, значит
    Посчитайте, в функции количество открывающих скобок должно быть равно закрывающим.
    А тут
    Код
    echo '<td>'.
    ($m?'<hr>':'').'
    <div class="shop-img">';

    Уберите $m, пусть так вообще будет:
    Код
    echo '<td><div class="shop-img">';
  • 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>


    Таким образом цикл настрочит таблицу с кучей строк и с двумя колонками, в каждой из которых будет товар!

    Еще яснее объяснить не могу!
  • 06 апреля 2011 г.
  • Сколько времени... Много! С час точно.
    Но это уже третий раз только на форуме, когда спрашивают одно и тоже, только для разных в оформлении функций. Лучше потом сюда сослать и не отвечать, чем каждому править!
    Замечание... Если бы я еще про закрытие ячеек стал рассказывать, я бы завис еще на полчаса... Начинающим и так сойдет! Потом копнут, сами поправят!
  • 21 апреля 2011 г.
  • Ребят, надоело, честно. Это первый класс программирования. К diafan.CMS отношения прямого не имеет. Эта тема максимально информационна, проще рассказать я не могу. Если тему замусорить файлами "Сделайте мне", "И мне сделайте то же самое", "И мне", "И для меня" и так далее еще 50 человек одно и то же - несерьезно.
    Могу только посоветовать echo "1";
    Ставьте "методом тыка", смотрите: где выходит, сколько раз выходит, после чего выходит, делайте выводы.
    Если не можете разобраться с примитивным циклом одной вложенности, то лучше бросить программирование, заказать у программиста эту доработку за пару сотен рублей и пару минут и все.
  • 15 октября 2012 г. , редакция: 1350327228
  • Немного подправлю пост с учетом актуальности последних версий
    Можно так, как пишет Петр. А можно шаги 3-7 пропустить, а вместо шага 9 в "Дополнительно" в поле javascript вписать то, что выдал Яндекс. Затем уже на шаге 10 в HTML источник вставляется оставшийся код, как описано.
  • 20 декабря 2010 г.
  • Не, тут не совсем так. Сейчас перелинковка идет больше для пользователей, а не для сео. Для поисковым систем вес ссылки выше, если нет обратной. В нашем случае получается, что каждый товар ссылается друг на друга, а это гасит весь эффект. Чтобы что-то было от перелинковки в плане веса - лучше оставить ссылки только "Следующий" и убрать "Предыдущий". Тогда каждая страница будет качать следующую, что получше.
    Конечно, надо заниматься в целом исходящими ссылками на странице. Идеально, когда с главной страницы идет ссылка только на карту сайта. С карты - только на страницы 2УВ, далее глубже. А со всех внутренних страниц идет только ссылка на главную.
    Вот тогда у главной будет такой вес, что ух-х
  • 21 декабря 2010 г.
  • Ну перелинковка такая и получится. Ссылка с главной на разделы. С разделов на товары. Тогда с товаров на главную ссылку можно скрыть. А товары пустить по кольцу без обраток, только через show_next/
    Рекомендую программу PageWeight, с ее помощью очень удобно смотреть, как веса распределяются по сайту.
  • 21 декабря 2010 г.
  • Да с чего у Вас в голове сидит "кольцо" и его катастрофический "разрыв"?
    В этом разрыве единственное, что потеряется, так это вес у первого товара, потому что на него не зайдет ссылка с последнего. Остальные товары будут иметь все как надо.
    Ну если так критично, поставьте ссылку на первый товар вручную с последнего товара, например из описания.
  • 20 декабря 2010 г.
  • Спасибо, старались :) Да, все сами сделали, наш сотрудник озвучивал. Сценарии уроков писали отделом.
    Основная проблема контор, которые предлагают "профессиональное" создание видеоуроков в том, что текст читает профессионал в озвучке, но не профессионал в том, ЧТО он читает. Получаются заминки в спецтерминах, не те ударения, в общем, звучит дилетантски, хоть и красиво.
  • 10 декабря 2010 г.
  • Это да...
    Дело в том, что мы делали на заказ нескольим клиентам такую функцию. Это не проблема. Договариваемся с конкретными людьми о содержимом xls-файла и, зная его магазин и его характеристики, легко делаем такой импортник... Каждый раз разный
    В том-то и дело, что готовить надо файл. И это целесообразно, если надо еженедельно обновлять сайт с тысячами наименований.
    Мы подумываем сделать какой-нибудь универсальный импорт, только наименование, цену и описание, т.е. базовые поля. Но не знаем, будет ли толк.
  • 07 декабря 2010 г. , редакция: 1291751897
  • Первым делом надо эту структуру создать в админке. Идете в "Страницы сайта" и там создаете "меню слева" и "меню справа", или "меню1", "меню2", и "меню3", смотря что надо.

    Затем в "меню слева" создаете плюсиками подстраницы "о нас", "услуги", "контакты" - это будет одно меню.
    А в "меню справа" создаете "предложение 1", "предложение 2" и "предложение 3" - это будет второе меню.
    Естественно, везде ставите галочки "Показывать на сайте" и "Показывать в меню".

    Теперь как их вывести в шаблоне. Меню выводится тегом
    Код
    <insert name="show_menu">

    Просто вписываете в шаблоне в нужном месте этот тег и там выведется меню. По умолчанию этот тег выводит все пункты меню, которые в корне сайта с галочкой "показывать в меню".

    А чтобы вывести пункты из раздела (а нам надо в одном месте вывести подпункты из "меню слева", а в другом из "меню справа") надо просто указать ID этих пунктов в теге в параметре koren.
    Допустим, у "меню слева" ID=16, а у "меню справа" ID=20.
    Тогда в одном месте пишите
    Код
    <insert name="show_menu" koren="16">
    - там выведется "о нас", "услуги", "контакты"
    А в другом месте пишите тег
    Код
    <insert name="show_menu" koren="20">
    - там выведется "предложение 1", "предложение 2" и "предложение 3"
    Все описано в документации: http://cms.diafan.ru/dokument/full-manual/templates/shared-functions/

    И вот гляньте, общие сведения о шаблонах и подключении дизайна: http://cms.diafan.ru/dokument/webmaster/themes/
Показывать по:

Новости

  • 19 сентября
  • Мы внесли изменения в лицензию и объявляем, что прекращаем техническую консультационную поддержку сайтов на DIAFAN.CMS версий старше 7.0. А это все минорные версии платформы, предшествующие актуальной линейке, а именно: версии серии 4.x, 5.x, 6.x.
  • 15 сентября
  • У нас отличные новости! Мы выпустили новую сборку DIAFAN.CMS 7.3, которая включает встроенные нейросети непосредственно в административной панели. Это значит, что создание контента для вашего сайта больше не будет проблемой — искусственный интеллект возьмет эту задачу на себя, избавляя вас от необходимости привлекать копирайтеров или тратить время на написание текстов самостоятельно.
  • 25 марта
  • Мы обновили систему тарифов, учитывая опыт работы с клиентами и современные рыночные условия. Новая тарифная сетка разработана специально для того, чтобы лучше отвечать вашим потребностям. Резкого повышения цен не произошло. Более того, некоторые тарифы даже стали выгоднее и доступнее. 

Блоги

  • 10.09.2025
  • DIAFAN.CMS славится нагрузоустойчивостью и безопасностью, про инциденты со взломом сайта на нашей системе давненько не слышали, но недавно получили мы письмо от fstec.ru такого характера:

    Обнаружена уязвимость в CMS-системе DIAFAN, позволяющая нарушителю, действующему удалённо, красть сессионные куки через XSS-атаку.