Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

esculapra

Users
  
  • Posts

    1,773
  • Joined

  • Last visited

Everything posted by esculapra

  1. Зачем придираться к переменным? Мне так удобно. Token_indent - сокращенно (подразумевается identifier). tablica? Смешно. Такая шняга встречается у других прогеров, но не у меня. "Лодер эгог" - если такое слышу, меня коробит. Я не претендую на звание самого-самого, просто привел пример, который работает.
  2. Для Украины сервис открыт не так давно. Вопрос такого плана. Например, есть основной фид, в котором отражены все необходимые параметры. А есть дополнительный, который должен ежедневно обновляться, и в нем фиксируются только параметры, изменяющмеся во времени (цена, наличие). Кто-нибудь работал с мерчантом на таком принципе? Просто нафига ежедневно создавать основной фид (более 20 кил товырных позиций), если можно закинуть дополнительнй, с указанными изменениями по товарам?
  3. Ну так делайте! Или нужно обязательно съязвить? Ты сам покажи кусок своего отформатированного кода, а потом закидывай упреки. Не нравится - не ешь! Я не навязываю.
  4. Мне плевать на комменты неадекватов - а кому-то пригодится, и если это будет один, то уже хорошо. У меня такие модули отлично работают, и экономят мое время и дисковое пространство.
  5. На всякий случай рекомендую сохранить копию оригинального файла - прога бесплатная, так что все в ваших руках, - думайте головой.
  6. Когда мы пишем код, то не обращаем внимание на его презентабельность - нам важен результат. Но тестирование завершено, а в файле более 10 тыс строк, и все как под линеечку, прилипли к левой стороне.... Мой форматтер это быстро исправит, и все будут восхищаться вашим кодом - ведь "встречают по одежке"... Я архив загрузил в общие загрузки, но там не тот коленкор. Да, могут проявиться и глюки - при сохранении создается бэкап исходника (но только один раз!). Прога бесплатная. В будущем планируется добавить расширенные функции форматирования, например, php+html, twig и пр. Это уже за деньги. Архив распаковывать в определенную папку. Программа нерезидентная, то есть может работать прямо с флешки, никаких заморочек в реестр не кидает. PhpFormatter.zip
  7. я не собираюсь писюнами мерятся. есть лучше? - окей! под "кубом" - вонна!
  8. А как тебе такой вариант? class ModelBase extends Model { public function _FUN($type,$fn,$options=null) { $function=$type.$fn; return $this->$function($options); } public function _get($fn,$options=null) { $function='get'.$fn; return $this->$function($options); } public function _set($fn,$options=null) { $function='set'.$fn; return $this->$function($options); } public function _update($fn,$options=null) { $function='update'.$fn; return $this->$function($options); } public function _delete($fn,$options=null) { $function='delete'.$fn; return $this->$function($options); } *********************************** class ModelShops extends ModelBase { public function __construct() { parent::__construct(); } protected function getProductsTotal() { $query=$this->_db->getQuery(true); $query->select('count(*)'); $query->from('#__shops_cat'); $query->where('parent=0'); $this->_db->setQuery($query); $total=$this->_db->loadResult(); return $total; } *************************** $total=$model->_get('ProductsTotal'); Это не касается Опенкарт - это моя система. Может я зациклился на проблемах безопасности? Я так не думаю - мой модуль модели имеет одну публичную функцию, а остальные или протект, или приват.
  9. Да, в этом примере я взял код из старой версии, но так и было задумано. Действительно, экранирование и указание типа переменной - большое дело. Вот сразу видно, что не профан...
  10. Под понятием "универсальности" я подразумеваю совместимость с различными версиями и платформами (в данном случае Opencart и oStore). эту статью я пишу для опытных разработчиков, которым не нужно объяснять, что в различных версиях магазина наблюдается отличие в структуре некоторых таблиц в БД. Также отличаются некоторые таблицы Opencart и oStore. Например, в Opencart отсутсвует таблица manufacturer_description, а в высших версиях таблица url_alias заменена на seo_url. О программирование "универсального модуля" я расскажу на примере своего генератора ЧПУ. Итак, в самом начале класса объявляю несколько переменных private $ext=''; // расширение файла private $opencart=false; // идентификатор платформы private $taba='url_alias'; // специфическое название таблицы private $token=null; // токен сессии private $token_indent='token'; // идентификатор токена public function index() { $this->load->language('supertools/sef'); $this->document->setTitle($this->language->get('heading_title')); $this->load->model('supertools/sef'); if(!$this->token) { if(VERSION<3) // проверяем версию { $this->token=$this->session->data['token']; if(VERSION<2.3) // также проверяем нижние версии, так как для версий меньше 2.3 при выводе необходимо указывать расширение файла шаблона { $this->ext='.tpl'; } } else { $this->token=$this->session->data['user_token']; $this->token_indent='user_token'; $this->taba='seo_url'; } } // тут мы проверяем переменную task, отправленную методом post, или же включенную в ссылку. задача нам указывает, какая функция затребована if(isset($this->request->post['task'])&&!empty($this->request->post['task'])) $function=$this->request->post['task']; elseif(isset($this->request->get['task'])) $function=$this->request->get['task']; // проверяем наличие функции и вызываем ее // такой подход полезен при отладке, когда в контроллере еще не прописанывсе функции, так как не вызовет фатальное ошибки 500 if(isset($function)) { $this->$function(); } else $this->getList(); } // вот пример универсальной ссылки $data['breadcrumbs'][]=array( 'text'=>$this->language->get('text_home'), 'href'=>$this->url->link('common/dashboard',$this->token_indent.'='.$this->token, 'SSL') ); // а тут универсальный вывод шаблона $this->response->setOutput($this->load->view('supertools/sef'.$this->ext, $data)); // а это одна функция из модели, демонстрирующая "универсальность" public function emptySef($taba,$id,$target,$if_opencart) { $field_title=($target=='information')?'title':'name'; $description=($target=='manufacturer'&&$if_opencart)?'':'_description'; $query=$this->db->query("SELECT query FROM `".DB_PREFIX.$taba."` WHERE `".$taba."_id`=".$id); $target_id=substr($query->row['query'],strpos($query->row['query'],'=')+1); $query=$this->db->query("SELECT ".$field_title." as name FROM `".DB_PREFIX.$target.$description."` WHERE `".$target."_id`=".$target_id); $alias=TransliterateCls::_transliterate($query->row['name']); $this->db->query("UPDATE `".DB_PREFIX.$taba."` SET `keyword`='".$alias."' WHERE `".$taba."_id`=".$id); return $alias; } Разумеется, что для каждой конкретной задачи необходим свой подход, но все в ваших руках. Я показал то, что реально работает.
  11. У меня есть несколько правил 1) Дубль сайта на локалке 2) Бэкап Да, в опенкарт бэкап приходится скачивать на локалку, и он может "потеряться". Но тут есть и плюсик - это секрет. 3) Делать копии (архив) папки modification 4) если смогу - помогу
  12. Смотри, шо добавил до того, как получил фатал.
  13. Разработчик должен подсказать, помочь, пусть даже не бесплатно. Но категорическое НЕТ - неприемлемо в нашей среде. Да, иногда встречаются индивидуумы, но всегда можно решить "полюбовно".
  14. Фиг с вами, открою "тайну" <li id="item-0" class="ui-tabs-nav-item ui-tabs-selected" ><a href="#" onClick="ViewTab(0);return false"><?php echo $gmc_welcome ?></a></li> <li id="item-13" class="ui-tabs-nav-item ui-tabs-nav-item-green" ><a href="#" onClick="ViewTab(13);return false" style="color: white !important; font-weight: bold;"><?php echo $gmc_profiles ?></a></li> <script> var curtab=0; function ViewTab(id){ $('#tab-'+id).removeClass('hidden'); $('#tab-'+curtab).addClass('hidden'); $('#item-'+id).addClass('ui-tabs-selected'); $('#item-'+curtab).removeClass('ui-tabs-selected'); curtab=id; } </script>
  15. А шо мы митингуем? ТС не в диалоге, то и нам побоку.
  16. <li onClick="addClass(this)"> <script> var old=''; function addClass(el){ $(el).addClass(class); if(old!='') $(old).removeClass(class); old = el; } </script>
  17. При загрузке модуля как это можно вызвать? Никак. Для маскла триггер не вызывается непосредственно, а исполняется при наступлении определенного события ( вставка, удаление, обновление строки ). Скинь ссылку, где происходит дубль. Возможно имеется js, который провоцирует событие.
  18. Тут недавно ваще была тема "А можно ли сделать так, чтобы индекс создаваемой категории ставить по своему усмотрению". Я ответил - нельзя. Меня поправили, типа, можно. А потом, как я и ожидал, следующий вопрос "Напишите подробно, как это реализовать"...
  19. Количество товаров без разницы. Если товары не дублируются в других категориях, то для поисковиков это нормально. Если же будут ссылки типа родительская/товар15 и родительская/субкатегория/товар15, то это уже дубли, что плохо. Оптимальный вариант, чтобы ссылка на товар не содержала категорий, тогда его размести хоть во всех категориях, ссылка будет везде товар15 Кстати, в слайдерах ссылки на товар не содержат категорий, поэтому создают дубли, если ЧПУ настроен с включением категории в ссылку на товар
  20. да, если необходимо кастомизировать несколько категорий, то тогда проверка такая if(in_array($category_info['category_id'],array(79,102 и т.п.)))
  21. Добавим в контроллер проверку целевой категории, например if ($category_info['category_id'] == 79) $data['custom_style']=true; а теперь в шаблоне <?php if($custom_style){?> <style> .... </style> <?}?> Можно стиль добавить непосредственно в узел <div style="width:<?php if($custom_style) echo '500'; else echo '700';?>px">
  22. Прямо в шаблоне проверяешь ИД категории, и если она совпадает с требуемой, подключаешь кастомный стиль.
  23. кстати, стандартнй minify может конфликтовать со встроенным js-кодом, поэтому у меня скрипты не минимизируются.
  24. возможно придется подкорректировать, если возникнут конфликты с шаблоном, но это входит в поддержку. напишите в ЛС. я проверю под опенкарт 2.1 и завтра смогу установить.
  25. ты сам-то понял что сказал? во-первых, тригер, это по-сути переключатель on-off. во-вторых, модули выводятся в шаблон без учета событий. в-третьих, чудес не бывает - если вызывается дважды, то и подключен дважды!
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.