taleh

taleh

+45
Репутация
5
Рейтинг
#1 Как сделать что бы главная была активна 17 апреля 2016 в 23:55
я делал через присвоение класса и правку шаблона (без js)
1. присваиваем пункту меню css-класс к примеру "home_link"
2. Открываем шаблон меню (по умолчанию /templates/default/assets/ui/menu.tpl.php) и добавляем после $css_classes = array() (строка 19):
  1. if ($is_active || $_SERVER["REQUEST_URI"] == "/" && $item['options']['class'] == "home_link") { $css_classes[] = 'active'; }
i.imgur.com/aGYoDg5.png
#2 InstantShop. Корзина. Как сделать нормальный вывод? 16 апреля 2016 в 11:40

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

Gumoff
на странице корзины?
после добавления ajax-запросом, возвращаются количество и сумма товаров в корзине.
дальнейшие манипуляции со страницей нужно дописывать внутри условия if (res["status"] == "ok") { }, в примере просто выводится отладочная информация в консоль (в firefox — [ctrl + shift + k]. В chrome — [ctrl + shift + j] ).

например так:
  1.  
  2. <div class="cart_block">
  3. <div class="count"><span>0<span> товаров</div>
  4. <div class="summ">Сумма <span>0</span> р.</div>
  5. </div>
  6.  
  1.  
  2. if (res["status"] == "ok") {
  3. $(".cart_block .count span").text(res['count']);
  4. $(".cart_block .summ span").text(res['summ']);
  5. }
  6.  
#3 InstantShop. Корзина. Как сделать нормальный вывод? 16 апреля 2016 в 00:12

Ошибка Некорректный запрос!

Gumoff
нужно привести функцию к такому виду (\core\classes\user.class.php строка 1636):
  1. public static function checkCsrfToken(){
  2.  
  3. if(isset($_POST['csrf_token'])) {
  4. $user_token = $_POST['csrf_token'];
  5. } else if(isset($_SERVER['HTTP_X_CSRF_TOKEN'])) {
  6. $user_token = $_SERVER['HTTP_X_CSRF_TOKEN'];
  7. }
  8.  
  9. if(isset($user_token)) {
  10. $tokens = self::sessionGet('csrf_tokens', 'security');
  11.  
  12. if (is_array($tokens)) {
  13.  
  14. $key = array_search($user_token, $tokens, true);
  15.  
  16. if ($key !== false) {
  17. //unset($tokens[$key]);
  18. //ksort($tokens);
  19. //self::sessionPut('csrf_tokens', $tokens, 'security');
  20. return true;
  21. }
  22.  
  23. }
  24. }
  25.  
  26. return false;
  27.  
  28. }
#4 RSS польза или вред 15 апреля 2016 в 13:12
пользуюсь rss-читалкой на телефоне. Для пользователя удобнее будет пробежаться взглядом по заголовкам в rss-агрегаторе, чем переходить и листать страницы на самих сайтах в поисках нового и интересного материала.
#5 ICMS-2: как вставлять в новость видео с ютуба? 15 апреля 2016 в 11:21

не помогло

Igor
можно ещё перенести папку redactor'а (\wysiwyg\redactor) с версии 2.5.0
Прикрепленный файл
redactor_8bqte.zip 67 Кб
#6 ICMS-2: как вставлять в новость видео с ютуба? 15 апреля 2016 в 00:33

в версии 2,4 в данном фале нет такого кода

Igor
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $('#<?php echo $dom_id; ?>').redactor({
  4. lang: '<?php echo $lang; ?>',
  5. plugins: ['video', 'fontfamily', 'fontsize', 'fontcolor', 'fullscreen'],
  6. imageUpload: '<?php echo href_to('redactor/upload'); ?>',
  7. minHeight: 250,
  8. linebreaks: true,
  9. cleanStyleOnEnter: false,
  10. cleanOnPaste: false,
  11. pastePlainText: false,
  12. <?php if ($user->is_admin) { ?>
  13. buttonSource: true
  14. <?php } ?>
  15. });
  16. });
  17. </script>
#7 ICMS-2: как вставлять в новость видео с ютуба? 14 апреля 2016 в 21:37
для redactor'а возможно дело в этом параметре (\wysiwyg\redactor\wysiwyg.class.php)

Иллюстрация

можно так попробовать
  1. linebreaks: true,
  2. cleanStyleOnEnter: false,
  3. cleanOnPaste: false,
  4. pastePlainText: false,
#8 Версия сайта для слабовидящих 12 апреля 2016 в 10:26

Фотографии сделайте хорошими или уменьшите растягивание. а то жесть :))

kirkr
верстка не моя. Я только "версию для слабовидящих" делал
#9 Универсальный каталог - Добавить несколько фото 11 апреля 2016 в 14:56

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

Man
instantcms.ru/users/files/download5923.html (для icms-1.10.6)

Иллюстрация

доп. картинки удаляются по клику, для основной нужно поставить галочку.
в шаблоне доп. картинки можно получить через массив $item['images']
#10 InstantShop. Корзина. Как сделать нормальный вывод? 11 апреля 2016 в 14:32

Как сделать что бы и в корзине и в итоге цены были без копеек?

Юрий
можно в \components\shop\model.php в функции getCartItems() исправить строки 2375 и 2376
с:
  1. $items[$key]['price'] = round($item['price'], 2);
  2. $items[$key]['totalprice'] = round($item['price']*$item['cart_qty'], 2);
на:
  1. $items[$key]['price'] = round($item['price']);
  2. $items[$key]['totalprice'] = round($item['price']*$item['cart_qty']);

и возможно ли запилить добавление товара в корзину на аяксе?

yury
к кнопке/ссылке "добавить в корзину" добавляем id:
  1. <a href="#" id="item_{$item.id}">Добавить в корзину</a>
дальше создаем файл \components\shop\ajax.php:
  1. <?php
  2.  
  3. define('PATH', $_SERVER['DOCUMENT_ROOT']);
  4. include(PATH.'/core/ajax/ajax_core.php');
  5.  
  6. $action = cmsCore::request('action', 'str', 'add_to_cart', 'post');
  7. $item_id = cmsCore::request('item_id', 'int', 0, 'post');
  8. $item_qty = cmsCore::request('item_qty', 'int', 0, 'post');
  9. $item_qty = (is_numeric($item_qty) && $item_qty > 0) ? $item_qty : 1;
  10. $var_art_no = cmsCore::request('var_art_no', 'str', '', 'post');
  11.  
  12. if(cmsUser::checkCsrfToken()) {
  13. if ($action != "") {
  14. $session_id = session_id();
  15. cmsCore::loadModel('shop');
  16. $model = new cms_model_shop();
  17.  
  18. // добавление в корзину
  19. if ($action == "add_to_cart" && $item_id != "") {
  20. if ($model->addToCart($item_id, $var_art_no, $item_qty)) {
  21. $cart_count = $model->getCartItemsCount($session_id);
  22. if ($cart_count !== false) {
  23. cmsCore::jsonOutput(array(
  24. 'status' => 'ok',
  25. 'count' => $cart_count,
  26. 'summ' => $model->getCartItemsSumm()
  27. ));
  28. } else {
  29. // не удалось получить колличество товаров в корзине
  30. cmsCore::jsonOutput(array('status' => 'error', 'c' => 3));
  31. }
  32. } else {
  33. // ошибка при добавлении товара в корзину
  34. cmsCore::jsonOutput(array('status' => 'error', 'c' => 2));
  35. }
  36. }
  37.  
  38.  
  39. } else {
  40. // неправильные параметры запроса
  41. cmsCore::jsonOutput(array('status' => 'error', 'c' => 1));
  42. }
  43. } else {
  44. cmsCore::jsonOutput(array('status' => 'error', 'c' => 4));
  45. }
функция getCartItemsCount() из примера выше (добавить в model.php):
  1. public function getCartItemsCount($session_id) {
  2. $res = $this->inDB->query("SELECT * FROM `cms_shop_cart` WHERE `session_id` = '".$session_id."'");
  3. $count = $this->inDB->num_rows($res);
  4. if($count != 0) {
  5. return $count;
  6. } else {
  7. return false;
  8. }
  9.  
  10. }
и getCartItemsSumm():
  1. public function getCartItemsSumm() {
  2. $items = $this->getCartItems();
  3. $totalsumm = 0;
  4. if ($items) {
  5. foreach ($items as $item) {
  6. $totalsumm += ($item['price'] * $item['cart_qty']);
  7. }
  8. }
  9. return floor($totalsumm);
  10. }
так же слегка подправляем функцию checkCsrfToken() в файле \core\classes\user.class.php, чтоб token брался не только из формы но и из http-заголовка:
  1.  
  2. public static function checkCsrfToken(){
  3.  
  4. if(isset($_POST['csrf_token'])) {
  5. $user_token = $_POST['csrf_token'];
  6. } else if(isset($_SERVER['HTTP_X_CSRF_TOKEN'])) {
  7. $user_token = $_SERVER['HTTP_X_CSRF_TOKEN'];
  8. }
  9.  
  10. if(isset($user_token)) {
  11. $tokens = self::sessionGet('csrf_tokens', 'security');
  12.  
  13. if (is_array($tokens)) {
  14.  
  15. $key = array_search($user_token, $tokens, true);
  16.  
  17. if ($key !== false) {
  18. //unset($tokens[$key]);
  19. //ksort($tokens);
  20. //self::sessionPut('csrf_tokens', $tokens, 'security');
  21. return true;
  22. }
  23.  
  24. }
  25. }
  26.  
  27. return false;
  28.  
  29. }
  30.  
js-код примерно такой:
  1.  
  2. // добавление товара в корзину
  3. $(".add_cartB a").click(function(e) {
  4. e.preventDefault();
  5.  
  6. var el = $(this);
  7. var variant_art = $("select[name=var_art_no]").val(); // разновидность товара
  8.  
  9. $.ajax({
  10. type: "POST",
  11. url: "/components/shop/ajax.php",
  12. data: {
  13. item_id: el.attr("id").replace("item_", ""),
  14. item_qty: el.parent().find(".qty_input input").val(), // количество товара
  15. var_art_no: variant_art,
  16. action: "add_to_cart"
  17. },
  18. beforeSend: function (request) {
  19. return request.setRequestHeader("X-CSRF-Token", $("meta[name='csrf-token']").attr('content'));
  20. }
  21.  
  22. }).done(function (res) {
  23. if (res["status"] == "ok") {
  24. console.log("Торар добавлен!");
  25. } else if (res["status"] == "error") {
  26. switch (res["c"]) {
  27. case 1:
  28. core.alert("Некорректные параметры запроса!","Ошибка");
  29. break;
  30. case 2:
  31. core.alert("Не удалось добавить товар в корзину!","Ошибка");
  32. break;
  33. case 3:
  34. core.alert("Не удалось получить колличество товаров в корзине!","Ошибка");
  35. break;
  36. case 4:
  37. core.alert("Некорректный запрос!","Ошибка");
  38. break;
  39. default:
  40. break;
  41. }
  42. } else {
  43. console.log("Произошла ошибка!");
  44. }
  45. });
  46.  
  47. });
  48.  
не забываем добавлять в мета-теги:
  1. <meta name="csrf-token" content="<?php echo cmsUser::getCsrfToken(); ?>">
#11 Версия сайта для слабовидящих 11 апреля 2016 в 14:01
instantcms.ru/users/files/download5920.html (на icms1) — но нужно адаптировать под конкретную верстку
пример — rmc05.ru/
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.