sciens Опубліковано: 15 вересня 2019 Share Опубліковано: 15 вересня 2019 Добрый день. Где-то в этих строчках есть условие, что если есть краткое описание, то выводить краткое описание вместо основного, может ли кто-то подсказать что нужно изменить что бы было условие, если краткое описание больше 30 символов, то тогда выводить краткое описание вместо основного ? Спойлер class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; $this->document->setRobots('noindex,follow'); } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; $this->document->setRobots('noindex,follow'); } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; $this->document->setRobots('noindex,follow'); } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; $this->document->setRobots('noindex,follow'); } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { $this->document->setTitle($category_info['meta_title']); } else { $this->document->setTitle($category_info['name']); } if ($category_info['noindex'] <= 0) { $this->document->setRobots('noindex,follow'); } if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_benefits'] = $this->language->get('text_benefits'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); } else { $data['thumb'] = ''; } $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); $data['description_bottom'] = html_entity_decode($category_info['description_bottom'], ENT_QUOTES, 'UTF-8'); $data['compare'] = $this->url->link('product/compare'); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['categories'] = array(); $results = $this->model_catalog_category->getCategories($category_id); foreach ($results as $result) { $filter_data = array( 'filter_category_id' => $result['category_id'], 'filter_sub_category' => true ); $data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url) ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } $productbenefits = $this->model_catalog_product->getProductBenefitsbyProductId($result['product_id']); $benefits = array(); foreach ($productbenefits as $benefit) { if ($benefit['image'] && file_exists(DIR_IMAGE . $benefit['image'])) { $bimage = $benefit['image']; if ($benefit['type']) { $bimage = $this->model_tool_image->resize($bimage, 25, 25); } else { $bimage = $this->model_tool_image->resize($bimage, 120, 60); } } else { $bimage = 'no_image.jpg'; } $benefits[] = array( 'benefit_id' => $benefit['benefit_id'], 'name' => $benefit['name'], 'description' => strip_tags(html_entity_decode($benefit['description'])), 'thumb' => $bimage, 'link' => $benefit['link'], 'type' => $benefit['type'] ); } $stickers = $this->getStickers($result['product_id']) ; $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => $description, 'price' => $price, 'special' => $special, 'tax' => $tax, 'sticker' => $stickers, 'benefits' => $benefits, 'minimum' => $result['minimum'] > 0 ? $result['minimum'] : 1, 'rating' => $result['rating'], 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); // http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'canonical'); if ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'prev'); } elseif($page > 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), true), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $data['continue'] = $this->url->link('common/home'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('product/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('error/not_found', $data)); } } private function getStickers($product_id) { $stickers = $this->model_catalog_product->getProductStickerbyProductId($product_id) ; if (!$stickers) { return; } $data['stickers'] = array(); foreach ($stickers as $sticker) { $data['stickers'][] = array( 'position' => $sticker['position'], 'image' => HTTP_SERVER . 'image/' . $sticker['image'] ); } return $this->load->view('product/stickers', $data); } } Надіслати Поділитися на інших сайтах More sharing options...
Blast Опубліковано: 15 вересня 2019 Share Опубліковано: 15 вересня 2019 лучше наверное использовать utf8_strlen вместо strlen Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 16 вересня 2019 Автор Share Опубліковано: 16 вересня 2019 Интересно конечно))) Мне дали вот такое решение, в строке: $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); заменить $result['description_mini'] на str_replace('<p><br></p>', '' $result['description_mini']) Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 16 вересня 2019 Share Опубліковано: 16 вересня 2019 (змінено) 11 минут назад, sciens сказал: Интересно конечно))) Мне дали вот такое решение, в строке: $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); заменить $result['description_mini'] на str_replace('<p><br></p>', '' $result['description_mini']) ну эта конструкция вырежет указанную подстроку '<p><br></p>' из описания. Первоначальной задачи не решает Но дело в том, что в этой строке кода и так есть функция strip_tags, которая вырежет вообще все теги. Так что вам подсказали бессмысленную вещь Змінено 16 вересня 2019 користувачем Blast Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 В 16.09.2019 в 23:33, Blast сказал: ну эта конструкция вырежет указанную подстроку '<p><br></p>' из описания. Первоначальной задачи не решает Но дело в том, что в этой строке кода и так есть функция strip_tags, которая вырежет вообще все теги. Первоначальной задачи она может не решает, но возможно решает возникшую проблему, так как решение проблемы, возможно имеет, несколько вариантов решения: При загрузке товаров в ОенкартПРО 2.3 попадает какой-то "пробел" выглядит так - <p><br></p> и после него вроде как и идет этот "пробел", а в "родном" файле прописано условие, что если есть краткое описание, то выводить краткое описание вместо основного в карточках товара на странице категорий, модулей, и тд. И вот получается что это условие и выводит этот "пробел", и в результате получается что часть товаров с описанием которое полное, а часть товаров без описания с "чистым полем", так-как этот "пробел" это "пустота". И получается что можно, или задать условие выведения краткого описания от какого-то количества символов, или же при загрузке товаров нужно "вырезать" эту подстроку '<p><br></p>' ну и заодно "вырезать" этот "пробел"))) Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 19 вересня 2019 Share Опубліковано: 19 вересня 2019 41 минуту назад, sciens сказал: Первоначальной задачи она может не решает, но возможно решает возникшую проблему, так как решение проблемы, возможно имеет, несколько вариантов решения: При загрузке товаров в ОенкартПРО 2.3 попадает какой-то "пробел" выглядит так - <p><br></p> и после него вроде как и идет этот "пробел", а в "родном" файле прописано условие, что если есть краткое описание, то выводить краткое описание вместо основного в карточках товара на странице категорий, модулей, и тд. И вот получается что это условие и выводит этот "пробел", и в результате получается что часть товаров с описанием которое полное, а часть товаров без описания с "чистым полем", так-как этот "пробел" это "пустота". И получается что можно, или задать условие выведения краткого описания от какого-то количества символов, или же при загрузке товаров нужно "вырезать" эту подстроку '<p><br></p>' ну и заодно "вырезать" этот "пробел"))) if (utf8_strlen(trim(strip_tags($result['description_mini']))) > 0) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } можно сразу в if проверить длину с учетом вырезания тегов Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 7 часов назад, sciens сказал: А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } да, html_entity_decode в условии нужен, иначе не сработает strip_tags упустил этот момент в своем сообщении Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 20 вересня 2019 Автор Share Опубліковано: 20 вересня 2019 Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 17 минут назад, sciens сказал: Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? if (utf8_strlen(trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) > N) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } где N - любое число, которым вы хотите ограничить минимальное количество символов в кратком описании. Можете попробовать разные варианты - 0, 15, 30 Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Шаблони, дизайн та оформлення магазину Изменить количество вывода символов от определённого числа в кратком описании Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
sciens Опубліковано: 16 вересня 2019 Автор Share Опубліковано: 16 вересня 2019 Интересно конечно))) Мне дали вот такое решение, в строке: $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); заменить $result['description_mini'] на str_replace('<p><br></p>', '' $result['description_mini']) Надіслати Поділитися на інших сайтах More sharing options...
Blast Опубліковано: 16 вересня 2019 Share Опубліковано: 16 вересня 2019 (змінено) 11 минут назад, sciens сказал: Интересно конечно))) Мне дали вот такое решение, в строке: $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); заменить $result['description_mini'] на str_replace('<p><br></p>', '' $result['description_mini']) ну эта конструкция вырежет указанную подстроку '<p><br></p>' из описания. Первоначальной задачи не решает Но дело в том, что в этой строке кода и так есть функция strip_tags, которая вырежет вообще все теги. Так что вам подсказали бессмысленную вещь Змінено 16 вересня 2019 користувачем Blast Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 В 16.09.2019 в 23:33, Blast сказал: ну эта конструкция вырежет указанную подстроку '<p><br></p>' из описания. Первоначальной задачи не решает Но дело в том, что в этой строке кода и так есть функция strip_tags, которая вырежет вообще все теги. Первоначальной задачи она может не решает, но возможно решает возникшую проблему, так как решение проблемы, возможно имеет, несколько вариантов решения: При загрузке товаров в ОенкартПРО 2.3 попадает какой-то "пробел" выглядит так - <p><br></p> и после него вроде как и идет этот "пробел", а в "родном" файле прописано условие, что если есть краткое описание, то выводить краткое описание вместо основного в карточках товара на странице категорий, модулей, и тд. И вот получается что это условие и выводит этот "пробел", и в результате получается что часть товаров с описанием которое полное, а часть товаров без описания с "чистым полем", так-как этот "пробел" это "пустота". И получается что можно, или задать условие выведения краткого описания от какого-то количества символов, или же при загрузке товаров нужно "вырезать" эту подстроку '<p><br></p>' ну и заодно "вырезать" этот "пробел"))) Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 19 вересня 2019 Share Опубліковано: 19 вересня 2019 41 минуту назад, sciens сказал: Первоначальной задачи она может не решает, но возможно решает возникшую проблему, так как решение проблемы, возможно имеет, несколько вариантов решения: При загрузке товаров в ОенкартПРО 2.3 попадает какой-то "пробел" выглядит так - <p><br></p> и после него вроде как и идет этот "пробел", а в "родном" файле прописано условие, что если есть краткое описание, то выводить краткое описание вместо основного в карточках товара на странице категорий, модулей, и тд. И вот получается что это условие и выводит этот "пробел", и в результате получается что часть товаров с описанием которое полное, а часть товаров без описания с "чистым полем", так-как этот "пробел" это "пустота". И получается что можно, или задать условие выведения краткого описания от какого-то количества символов, или же при загрузке товаров нужно "вырезать" эту подстроку '<p><br></p>' ну и заодно "вырезать" этот "пробел"))) if (utf8_strlen(trim(strip_tags($result['description_mini']))) > 0) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } можно сразу в if проверить длину с учетом вырезания тегов Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 7 часов назад, sciens сказал: А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } да, html_entity_decode в условии нужен, иначе не сработает strip_tags упустил этот момент в своем сообщении Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 20 вересня 2019 Автор Share Опубліковано: 20 вересня 2019 Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 17 минут назад, sciens сказал: Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? if (utf8_strlen(trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) > N) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } где N - любое число, которым вы хотите ограничить минимальное количество символов в кратком описании. Можете попробовать разные варианты - 0, 15, 30 Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Шаблони, дизайн та оформлення магазину Изменить количество вывода символов от определённого числа в кратком описании Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 В 16.09.2019 в 23:33, Blast сказал: ну эта конструкция вырежет указанную подстроку '<p><br></p>' из описания. Первоначальной задачи не решает Но дело в том, что в этой строке кода и так есть функция strip_tags, которая вырежет вообще все теги. Первоначальной задачи она может не решает, но возможно решает возникшую проблему, так как решение проблемы, возможно имеет, несколько вариантов решения: При загрузке товаров в ОенкартПРО 2.3 попадает какой-то "пробел" выглядит так - <p><br></p> и после него вроде как и идет этот "пробел", а в "родном" файле прописано условие, что если есть краткое описание, то выводить краткое описание вместо основного в карточках товара на странице категорий, модулей, и тд. И вот получается что это условие и выводит этот "пробел", и в результате получается что часть товаров с описанием которое полное, а часть товаров без описания с "чистым полем", так-как этот "пробел" это "пустота". И получается что можно, или задать условие выведения краткого описания от какого-то количества символов, или же при загрузке товаров нужно "вырезать" эту подстроку '<p><br></p>' ну и заодно "вырезать" этот "пробел"))) Надіслати Поділитися на інших сайтах More sharing options...
Blast Опубліковано: 19 вересня 2019 Share Опубліковано: 19 вересня 2019 41 минуту назад, sciens сказал: Первоначальной задачи она может не решает, но возможно решает возникшую проблему, так как решение проблемы, возможно имеет, несколько вариантов решения: При загрузке товаров в ОенкартПРО 2.3 попадает какой-то "пробел" выглядит так - <p><br></p> и после него вроде как и идет этот "пробел", а в "родном" файле прописано условие, что если есть краткое описание, то выводить краткое описание вместо основного в карточках товара на странице категорий, модулей, и тд. И вот получается что это условие и выводит этот "пробел", и в результате получается что часть товаров с описанием которое полное, а часть товаров без описания с "чистым полем", так-как этот "пробел" это "пустота". И получается что можно, или задать условие выведения краткого описания от какого-то количества символов, или же при загрузке товаров нужно "вырезать" эту подстроку '<p><br></p>' ну и заодно "вырезать" этот "пробел"))) if (utf8_strlen(trim(strip_tags($result['description_mini']))) > 0) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } можно сразу в if проверить длину с учетом вырезания тегов Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 7 часов назад, sciens сказал: А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } да, html_entity_decode в условии нужен, иначе не сработает strip_tags упустил этот момент в своем сообщении Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 20 вересня 2019 Автор Share Опубліковано: 20 вересня 2019 Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 17 минут назад, sciens сказал: Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? if (utf8_strlen(trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) > N) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } где N - любое число, которым вы хотите ограничить минимальное количество символов в кратком описании. Можете попробовать разные варианты - 0, 15, 30 Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Шаблони, дизайн та оформлення магазину Изменить количество вывода символов от определённого числа в кратком описании
sciens Опубліковано: 19 вересня 2019 Автор Share Опубліковано: 19 вересня 2019 А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } Надіслати Поділитися на інших сайтах More sharing options...
Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 7 часов назад, sciens сказал: А если вот такое решение ? if (trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) { вместо if ($result['description_mini']) { if ($result['description_mini']) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } да, html_entity_decode в условии нужен, иначе не сработает strip_tags упустил этот момент в своем сообщении Надіслати Поділитися на інших сайтах More sharing options... sciens Опубліковано: 20 вересня 2019 Автор Share Опубліковано: 20 вересня 2019 Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? Надіслати Поділитися на інших сайтах More sharing options... Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 17 минут назад, sciens сказал: Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? if (utf8_strlen(trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) > N) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } где N - любое число, которым вы хотите ограничить минимальное количество символов в кратком описании. Можете попробовать разные варианты - 0, 15, 30 Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
sciens Опубліковано: 20 вересня 2019 Автор Share Опубліковано: 20 вересня 2019 Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? Надіслати Поділитися на інших сайтах More sharing options...
Blast Опубліковано: 20 вересня 2019 Share Опубліковано: 20 вересня 2019 17 минут назад, sciens сказал: Тогда как же должно быть прописано условие что бы всё сработало в окончательном варианте, учитывая html_entity_decode ? if (utf8_strlen(trim(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')))) > N) { $description = utf8_substr(strip_tags(html_entity_decode($result['description_mini'], ENT_QUOTES, 'UTF-8')), 0); } else { $description = utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..'; } где N - любое число, которым вы хотите ограничить минимальное количество символов в кратком описании. Можете попробовать разные варианты - 0, 15, 30 Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts