question
-
Публикаций
275 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные question
-
-
А подскажите как реализовали такое? Тоже нужно разделить шаблоны но группы товаров и категории оставить общими..
У меня так сделано уже давно, года три как. Алгоритм примерно такой:
1. Симпла - нулл (даже если у вас есть лицензия).
2. Два сайта ссылаются на одну и ту же категорию. После этого по двум разным адресам будет открываться один и тот же сайт!
3. В файле... не помню каком, правда, давно это было... что-то вроде template.php назначить переменной, отвечающей за название шаблона (она называется как-то типа $config->theme или просто $theme) значение не из базы, а из адреса url, введённого в браузере (переменная $_SERVER в php)
Всё. Теперь у вас 2 сайта с одинаковым контентом и разными шаблонами, а значит и физическими адресами, номерами телефонов и т.д.
Но я пошёл дальше, назначив для каждого сайта свои заголовки, свои названия разделов, свои описания, свои meta description и так далее. Даже цены какое-то время были разными (на одном из сайтов на 10% выше).
-
Интересуют бесплатные решения. Увы.
Либо направление для самостоятельного написания.
-
Добрый день. В первой версии был такой модуль, формирующий xls файл с прайсом.
1. Где его взять, чтобы адаптировать под текущую версию?
2. Может, кто уже сталкивался и имеет готовое решение?
-
Я меняю у категории, указывая её ID. С брендом аналогично, думаю.
-
Я так меняю
UPDATE n_variants, n_products, n_categories, n_products_categories SET n_variants.compare_price = round (n_variants.price * 0.85 ,2) WHERE n_variants.product_id = n_products.id AND n_products.id = n_products_categories.product_id AND n_products_categories.category_id IN (84, 112, 180, 195, 206, 279, 1796, 1797, 1798, 1799, 1800);
-
Я так меняю
UPDATE n_variants, n_products, n_categories, n_products_categories SET n_variants.compare_price = round (n_variants.price * 0.85 ,2) WHERE n_variants.product_id = n_products.id AND n_products.id = n_products_categories.product_id AND n_products_categories.category_id IN (84, 112, 180, 195, 206, 279, 1796, 1797, 1798, 1799, 1800);
-
Наверное, нужно. Только вопрос - а что оно даст? Или вы думаете, что если в sitemap указать ссылки на все документы поисковики не увидят на них картинки?
-
Ну так проект давно закрыт, зачем разработчику на форум заглядывать? Скажите спасибо, что для вас хостинг оплачивает.
-
{get_new_products var=new_products limit=10 brand_id=$b->id category_id=$category->id}
но все равно. такой вывод через шаблон не идеальный.
это просто пример, который можно использовать. вместо готового get_new_products - другое .
Попробовал, работает на ура.
{foreach $category->brands as $b} <h2>{$b->name}</h2> {get_new_products var=new_products category_id=$category->id brand_id=$b->id} {if $new_products} {foreach $new_products as $p} {$p->name}<br/> {/foreach} {/if} {/foreach}
Генерация страницы занимает от 60 до 90 мсек. Это не похоже на толкание танка. Одна проблема: бренды расположены по алфавиту, а не по их id. Понимаю, что в sql запросе стоит
order by b.name
, который нужно исправить на
order by b.id
, но в каком файле искать этот запрос?
-
Странно, но вариант ST_RU (упростил до такого)
{foreach $category->brands as $b} <h2>{$b->name}</h2> {get_new_products var=new_products brand_id=$b->id} {if $new_products} {foreach $new_products as $p} {$p->name}<br/> {/foreach} {/if} {/foreach}
Выводит товары нужных брендов, но абсолютно всех категорий. Подскажите, как в get_new_products добавить id категории.
-
Попробовал свой вариант
{foreach $category->brands as $b} <h2>{$b->name}</h2> {foreach $products as $p} {if $p->brand == $b} {$p->name}<br/> {/if} {/foreach} {/foreach}
Не работает. Думаю, причина в том, что у товара нет свойства "бренд" (нет в селекте соответствующего запроса).
-
Я уже поднимал тему о кешировании. Сделать его очень просто, в моём случае на диске сохраняется вывод всех товаров со всеми сортировками и прочими параметрами, которые когда-либо запрашивал пользователь, в итоге нагрузка на БД равна 0.1% от лимита самого дешёвого хостинга при запросе 1000 страниц в сутки. Корзина, комментарии и прочие динамические страницы - отдельный разговор. И да, кеш живёт до изменения цен или описания (удаляю руками).
-
Ребята, я и не просил готовое решение. Просто чтобы направили в нужное русло.
Сейчас буду проверять свою и вашу версию, посмотрю, сильно ли вырастет нагрузка. А вообще у меня такое пофигистическое отношение к задаче потому что на сайте реализовано кеширование и даже если время генерации страницы составит немыслимых 1 секунду, то второй и последующие разы эта страница будет выводиться из кеша, понадобится около 5-7 мсек на ssd-хостинге.
Спасибо.
-
По-моему, это то, что нужно.
А список брендов категории так выводится?
{foreach $category->brands as $brand} {$brand->name} {$foreach}
Написал ради того, чтобы не забыть завтра проверить.
-
Это понятно. Весь вопрос - как танк одному толкать?
-
Мне бы для начала решение без оптимизации, чисто на уровне шаблона.
что-то типа
{foreach $products as $product} {foreach $brands as $brand} {if... {/foreach}{/foreach}
посмотрю, как быстро этот код выполняется и сколько ресурсов ест...
-
Кто сталкивался, как делали?
Есть необходимость вывода, например, телефонов в таком виде
Телефоны
Samsung
1,2,3,4,5
Apple
1,2,3,4
Huawei
1,2,3,4
Сделать вложенный цикл... но как быть, если, например, на сайте присутствует бренд Zelmer без телефонов? Вообще не понимаю, с какой стороны к этой задаче подойти.
-
Поблагодарю.
Ваш код в базовом случае выводил только товары без принадлежности к бренду. Немного подправил. Пусть топорно, но работает.
-
simpla/ProductsAdmin.php Заменить это
// Текущий бренд $brand_id = $this->request->get('brand_id', 'integer'); if($brand_id && $brand = $this->brands->get_brand($brand_id)) $filter['brand_id'] = $brand->id;
на это
// Текущий бренд $brand_id = $this->request->get('brand_id', 'integer'); if($brand_id) { $filter['brand_id'] = $brand_id; $brand = $this->brands->get_brand($brand_id); }
Далее в api/Products.php в двух функциях (get_products и count_products) заменить этоif(!empty($filter['brand_id'])) $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']);
на этоif(!empty($filter['brand_id'])) { if ($filter['brand_id'] < 999999) { $brand_id_filter = $this->db->placehold('AND p.brand_id in(?@)', (array)$filter['brand_id']); } else { $brand_id_filter = 'AND p.brand_id IS NULL OR p.brand_id = 0'; } }
теперь по адресу site.ru/index.php?module=ProductsAdmin&brand_id=999999 будут выводиться товары без принадлежности к бренду.
Ремарка. Если у вас 999999 брендов, то работать не будет.
-
Здравствуйте. Можно ли выбрать в админке товары, у которых нет принадлежности ни к одному бренду?
Пока вижу такой выход: создать бренд "без бренда" и сделать sql-запрос, устанавливающий каждому товару, у которого в поле brand стоит null id этого бренда. Костыль.
-
Ну так делайте. Или вы думаете, что кто-то мёртвый движок по вашему желанию будет дорабатывать?
-
Вообще ничего не понял, но, предположу, что вам нужно смотреть в сторону a href onclick return false
-
Мне вот вообще ничего не понятно...
Что именно вы хотите? Если вывести количество товаров на странице Категории, Бренда или Все товары - то это несложно.
А если на какой-то другой - то вообще непонятно, каких именно товаров?
Можете по-человечески описать задачу?
Задача непростая и двумя предложениями её не опишешь. Но если кратко, то я делал кеширование некоторых страниц/категорий/товаров в Симпле. Делал это с целью ускорения генерации страниц (иногда по 400 мсек требовалось, сейчас - 5-8).
А вообще при открытии категории нужно было подсчитать количество товаров в ней и передать значение в index.php, в котором уже своя функция делала кеширование по условию.
-
Всё, разобрался, всем спасибо. Работает!
Фото и Видео-галерея
в Общие вопросы по функционалу и дизайну
Опубликовано
Ваше решение - говно.
Нет, не подумайте, что я вас решил оскорбить. Просто на этом форуме так принято: если кто-то что-то выкладывает в свободный доступ, даже если оно работает идеально и нет никаких багов, надо обязательно обхаять.