Klaus Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Описание товара перед выводом в карточку товара на странице категории обрезается вот этим кодом utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 90) . '..' однако при этом обрезаются слова (описание может обрываться на полуслове), что не очень красиво и правильно.Хотелось бы сделать так чтобы слова не обрезались, т.е. обрезка текста происходила по пробелу. (можно вообще не буквы считать, а пробелы, и по, скажем 5му, пробелу обрезать текст)Наверняка можно красиво это решить. Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Можно, но проще это решить через short_description (при вменяемом количестве товаров) Надіслати Поділитися на інших сайтах More sharing options... pantagruel964 Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 http://dotdotdot.frebsite.nl/ Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 Можно, но проще это решить через short_description (при вменяемом количестве товаров) То есть делать отдельное описание для вывода на странице категорий? Ил что имеется в виду? http://dotdotdot.frebsite.nl/ Не понял к чему это Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. Надіслати Поділитися на інших сайтах More sharing options... Obelon Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. У Вас какая версия движка? Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 У Вас какая версия движка? 1.5.6.4 Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. А откуда вы её в первое сообщение скопировали? Тут она: /catalog/controller/product/category.php Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 (змінено) ну насколько я понимаю эта строка лишь использование функции, а сама функция гораздо большим кодом описывается. взять хотябы пример, на который дал ссылку sv2109 выше - там сколько строк, чтобы функцию описать? а у нас всё в одной строке Змінено 22 січня 2016 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Нет, это вся функция и есть. Можно ещё вот так сделать. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Klaus, в utf8-helper`e. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options... rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options... 3 years later... igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам [Решено?..] Обрезка описания товара, с сохранением целостности слов Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Всі товари магазину Автор: kJlukOo PAK - Аксесуари для товарів та комплекти Автор: OcEx Список Замовлень PRO Автор: Parallax З цим товаром також купують - Opencart-модуль Автор: vsevolodkarpykov LookBook Автор: 29aleksey × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
pantagruel964 Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 http://dotdotdot.frebsite.nl/ Надіслати Поділитися на інших сайтах More sharing options... sv2109 Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 Можно, но проще это решить через short_description (при вменяемом количестве товаров) То есть делать отдельное описание для вывода на странице категорий? Ил что имеется в виду? http://dotdotdot.frebsite.nl/ Не понял к чему это Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. Надіслати Поділитися на інших сайтах More sharing options... Obelon Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. У Вас какая версия движка? Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 У Вас какая версия движка? 1.5.6.4 Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. А откуда вы её в первое сообщение скопировали? Тут она: /catalog/controller/product/category.php Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 (змінено) ну насколько я понимаю эта строка лишь использование функции, а сама функция гораздо большим кодом описывается. взять хотябы пример, на который дал ссылку sv2109 выше - там сколько строк, чтобы функцию описать? а у нас всё в одной строке Змінено 22 січня 2016 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Нет, это вся функция и есть. Можно ещё вот так сделать. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Klaus, в utf8-helper`e. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options... rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options... 3 years later... igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам [Решено?..] Обрезка описания товара, с сохранением целостности слов Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Всі товари магазину Автор: kJlukOo PAK - Аксесуари для товарів та комплекти Автор: OcEx Список Замовлень PRO Автор: Parallax З цим товаром також купують - Opencart-модуль Автор: vsevolodkarpykov LookBook Автор: 29aleksey × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
sv2109 Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 Можно, но проще это решить через short_description (при вменяемом количестве товаров) То есть делать отдельное описание для вывода на странице категорий? Ил что имеется в виду? http://dotdotdot.frebsite.nl/ Не понял к чему это Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. Надіслати Поділитися на інших сайтах More sharing options... Obelon Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. У Вас какая версия движка? Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 У Вас какая версия движка? 1.5.6.4 Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. А откуда вы её в первое сообщение скопировали? Тут она: /catalog/controller/product/category.php Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 (змінено) ну насколько я понимаю эта строка лишь использование функции, а сама функция гораздо большим кодом описывается. взять хотябы пример, на который дал ссылку sv2109 выше - там сколько строк, чтобы функцию описать? а у нас всё в одной строке Змінено 22 січня 2016 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Нет, это вся функция и есть. Можно ещё вот так сделать. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Klaus, в utf8-helper`e. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options... rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options... 3 years later... igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам [Решено?..] Обрезка описания товара, с сохранением целостности слов Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Всі товари магазину Автор: kJlukOo PAK - Аксесуари для товарів та комплекти Автор: OcEx Список Замовлень PRO Автор: Parallax З цим товаром також купують - Opencart-модуль Автор: vsevolodkarpykov LookBook Автор: 29aleksey
Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 Можно, но проще это решить через short_description (при вменяемом количестве товаров) То есть делать отдельное описание для вывода на странице категорий? Ил что имеется в виду? http://dotdotdot.frebsite.nl/ Не понял к чему это Надіслати Поділитися на інших сайтах More sharing options...
Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 http://stackoverflow.com/questions/12444945/cut-the-content-after-10-words Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. Надіслати Поділитися на інших сайтах More sharing options...
Obelon Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Я подобное уже находил в инете, но мне не совсем понятно, как это применить. Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. У Вас какая версия движка? Надіслати Поділитися на інших сайтах More sharing options...
Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 У Вас какая версия движка? 1.5.6.4 Надіслати Поділитися на інших сайтах More sharing options...
mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Функция utf8_substr уже создана в OC, поидее её бы подправить. Но вот не могу понять, где эта функция лежит. А откуда вы её в первое сообщение скопировали? Тут она: /catalog/controller/product/category.php Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 (змінено) ну насколько я понимаю эта строка лишь использование функции, а сама функция гораздо большим кодом описывается. взять хотябы пример, на который дал ссылку sv2109 выше - там сколько строк, чтобы функцию описать? а у нас всё в одной строке Змінено 22 січня 2016 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Нет, это вся функция и есть. Можно ещё вот так сделать. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Klaus, в utf8-helper`e. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options... rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options... 3 years later... igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам [Решено?..] Обрезка описания товара, с сохранением целостности слов
Klaus Опубліковано: 22 січня 2016 Автор Share Опубліковано: 22 січня 2016 (змінено) ну насколько я понимаю эта строка лишь использование функции, а сама функция гораздо большим кодом описывается. взять хотябы пример, на который дал ссылку sv2109 выше - там сколько строк, чтобы функцию описать? а у нас всё в одной строке Змінено 22 січня 2016 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options...
mazein Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Нет, это вся функция и есть. Можно ещё вот так сделать. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Klaus, в utf8-helper`e. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options... rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options... 3 years later... igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
afwollis Опубліковано: 22 січня 2016 Share Опубліковано: 22 січня 2016 Klaus, в utf8-helper`e. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options... rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options... Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options... 3 years later... igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Задача решена исправлением (а точнее заменой) функции utf8_substrСама функция находится в system/helper/utf8.php примерно 17строка (спасибо OC Team - подсказал где искать)Находим функцию: function utf8_substr($string, $offset, $length = null) { return mb_substr($string, $offset, utf8_strlen($string)); } else { return mb_substr($string, $offset, $length); } } и заменяем её полностью на: function utf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Функцию я сам не разрабатывал (я не программист и в php ничего не смыслю). Взял готовый вариант в интернете на php форуме и немного подправил его с учётом используемых в OC терминов.В итоге получаем сокращение с сохранением целостности слов. Многоточие вставляется только при длине текста большей чем лимит символов (то есть если сокращения не произошло, то многоточие не вставляется).Не забываем убрать лишнее многоточие в контроллере, там где применена данная функция (в моём случае в контроллере категорий)Тему можно закрыть Надіслати Поділитися на інших сайтах More sharing options...
rb2 Опубліковано: 23 січня 2016 Share Опубліковано: 23 січня 2016 Какие сложности :) $descr_plaintext = mb_substr($descr_plaintext, 0, $cut_descr_symbols, 'UTF-8'); $descr_plaintext = mb_substr($descr_plaintext, 0, mb_strripos($descr_plaintext, ' ', 0, 'UTF-8'), 'UTF-8') . ' ...'; Первой строкой обрезали, чтобы было "не более чем", второй - убрали возможные обрезки справа до первого пробела. Надіслати Поділитися на інших сайтах More sharing options...
Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 Вышла лажа. Из за правки файла system/helper/utf8.php перестал работать загрузчик файлов.Вот такой глюк. причём такая картина во всех папках. Вернул на родину функцию utf8_substr - загрузчик фоток заработал в штатном режиме. Т.е. они как-то связанны получается. Надіслати Поділитися на інших сайтах More sharing options...
Klaus Опубліковано: 23 січня 2016 Автор Share Опубліковано: 23 січня 2016 (змінено) Можно считать что решено.Я оставил функцию utf8_substr без изменения.А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточиеВ принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substrБлин по 10 раз одно и тоже написал :oops:Всех благодарю. Тему можно закрывать как решённую! Змінено 23 січня 2016 користувачем Klaus 1 Надіслати Поділитися на інших сайтах More sharing options...
igorfelix Опубліковано: 29 листопада 2019 Share Опубліковано: 29 листопада 2019 В 23.01.2016 в 22:09, Klaus сказал: Можно считать что решено. Я оставил функцию utf8_substr без изменения. А ту функцию о которой я писал выше я переименовал в myutf8_substr. Т.е. в файле system/helper/utf8.php сразу после функции utf8_substr я добавил другую функцию function myutf8_substr($string, $offset, $length = null, $etc = '...', $break_words = false, $middle = false) { if ($length === null) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words && !$middle) { $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length+1)); } if(!$middle) { return mb_substr($string, 0, $length).$etc; } else { return mb_substr($string, 0, $length/2) . $etc . mb_substr($string, -$length/2); } } else { return $string; } } Затем в контроллере категорий, там где для описания применяется функция utf8_substr, я просто вместо utf8_substr написал myutf8_substr и удалил многоточие В принципе меня такое решение устраивает. Теперь если мне нужно будет где-то ещё подработать функцию utf8_substr, я просто в контроллере заменю её на myutf8_substr Блин по 10 раз одно и тоже написал Всех благодарю. Тему можно закрывать как решённую! на os 2.3 не пошло. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts