Вход • Регистрация

Всего найдено: 1412

  • 11 августа 2016 г.
  • Далее получаем контент с web-ресурса.
    Например, $source=file_get_contents($url);
    где в $url строка со всеми get-параметрами. Важно. Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция "fopen wrappers". Смотрите более подробную информацию об определении имени файла в описании функции fopen(), а также список поддерживаемых протоколов URL.
    Но это плохая практика. Поясню из-за чего не стоит использовать url-оболочку для файловых функций. Вы не только лишаетесь возможности передавать POST-запросы и cookie-данные, но и свои собственные HTTP-заголовки, а также в случае передачи сложных структур данных Вы не сможете контролировать передачу данных.
    Используйте лучше CURL либо fsockopen. Как говориться: проще написать функцию основанную на одном из этих подходов один роз и использовать в будущем.
    Если использовать fsockopen, то можно будет считывать по байтам или по массиву байтов сразу. fgets - считывает строчку (до символа начала новой строки) или fread (считывает указанное количество байтов). Использование fsockopen достаточно просто, т.к. Вы используете файловые функции + вы уже можете контролировать HTTP-соединение. Подробности в мануале.
    Ну, или вот пример кода (взят из просторов интернета, автор не я, не проверял), привел его некий movEAX
    Код

    function getContent($url, array $post){
    $ecx = count($post);
    while($ecx--){
    @$post['fields'].=key($post).'='.array_shift($post).'&';
    }
    $post = rtrim($post['fields'], '&');
    try {
    $crl = curl_init($url);
    curl_setopt_array($crl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $post,
    CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
    CURLOPT_FOLLOWLOCATION => 1
    )
    );
    if(!($html = curl_exec($crl))) throw new Exception();
    curl_close($crl);
    return $html;
    } catch(Exception $e){
    return FALSE;
    }
    }

    Успехов.
  • 10 августа 2016 г. , редакция: 1470842269
  • Цитата
    Добрый день, я заказчик. Столкнулся с проблемой.
    Цитата
    я ведь сидел часа 4 руками удалял все это.
    Цитата
    После чего он все сделал сам, буквально за пол часа
    Цитата
    Я в отчаянии и мне не с кем проконсультироваться по всем этим вопросам
    Это все говорит о том, что существует принцип разделения труда: каждый должен заниматься своим делом.
    Цитата
    Попросил разработчика исправить данный косяк, на что получил ответ, что это не косяк, все нормально, и вообще я должен был указать это в ТЗ.
    Цитата
    Неужели настолько элементарный вопрос надо указывать в ТЗ отдельным пунктом? Чья правда?
    Это зависит от подхода и сложившихся отношений.
    Не отчаивайтесь, думаю Вам в ближайшее время напишут товарищи в личку с предложение о доработке и сопровождении сайта. Сможете выбрать. Или пишите сюда http://pro.user.diafan.ru/
  • 10 августа 2016 г.
  • Цитата
    А как фильтровать не совсем догоняю. Особенно, скажем, в show block
    Фильтровать с помощью sql-запроса. При необходимости модернизируйте тег. Так, как Вы партнер - разработчик со стажем, то для Вас это минутное дело.
  • 10 августа 2016 г.
  • Цитата
    Разработчик.

    Антон (bank), не воспринимайте сказанное мной с негативной точки зрения (я отношусь к Вам с уважением), но разработчики кучу вопросов во всех ветка форума не задают. На то они и разработчики, чтобы с начала изучить вопрос, спланировать решение и реализовать его. Если Вы предполагаете, что Вам не хватит времени, чтобы реализовать пожелания своего заказчика, то можете Заказать решение. Всего лишь вопрос цены и без лишних вопросов.
    Успехов.
  • 08 августа 2016 г.
  • Цитата
    че то не то делаю?

    "Инструкцию к изделию читают только в том случае, когда аппарат или безнадежно испорчен, или не помогают другие методы воздействия". (Один из законов Мерфи).
    Рекомендую прочесть Документацию Там, кстати, есть ответ на Ваш вопрос (да же пример приведен).
    Делаю вывод, что русские - самая быстро читающая нация в мире! Например,
    Цитата
    соглашение перед пользованием программы прочитывается в доли секунды, прежде чем нажать кнопку согласен. Среднестатистический американец тратит на это несколько минут.
  • 09 августа 2016 г.
  • Ну, если
    Цитата
    Надо было написать "ОЧЕВИДНО"
    Тогда исправим опечатку в коде. Берем файл modules/subscribtion/admin/subscribtion.admin.php, открываем ее редактором и находим там вот эту функцию
    Код
    public function send_mail() { ... }
    В этой функции ищем следующую строчку
    Код
    $rows = DB::query_fetch_all("SELECT mail, name, code FROM {subscribtion_emails} WHERE act='1' AND trash='0'".$ids." LIMIT ".$i.", ".$this->mail_count);
    и удаляем ее. В замен удаленной строчки (там где была искомая строчка) вставим вот эти
    Код
    if ($i <= 0) $i = 1;
    $last_row = $i + $this->mail_count - 1;
    $rows = DB::query_fetch_all("SELECT mail, name, code FROM {subscribtion_emails} WHERE act='1' AND trash='0'".$ids." LIMIT ".$i.", ".$last_row);
    Все, вытираем испарину, самое сложное сделано. Сохраняем файл, сбрасываем кэш и наслаждаемся работой отправки писем.

    Для любопытных и пытливых поясню (профессионалы и так знают).
    Оператор SQL LIMIT позволяет вывести указанное число строк из таблицы. Оператор SQL LIMIT записывается всегда в конце запроса. Используется в СУБД MySQL. Аналогом в MS SQL Server является оператор SQL TOP.
    Оператор LIMIT имеет следующий синтаксис:
    Код
    LIMIT first_row [, last_row]
    Оператор SQL LIMIT выводит то количество записей, которое указано в параметре first_row. Если, через запятую указано значение параметра last_row, то будут выведены строки в диапазоне first_row - last_row включительно.

    Как-то так.

    Успехов.
  • 09 августа 2016 г.
  • Цитата
    Теоретически, если браузер не поддерживает редиректы или хостинг рубит GET-переменные, скрипт может не воспринимать $i, которая пропускает УЖЕ отправленные письма и может бесконечно крутиться, отправляя одно и то же первым.
    Не соглашусь. Здесь ключевое слово у истца следующее:
    Цитата
    Итого: у меня в базе 50 адресов, а отправляет в разы больше.
    Другим словом - зацикливание.
  • 06 августа 2016 г. , редакция: 1470433307
  • Цитата
    как правильно реализовать данное условие на основе выбора?

    Цитата
    самый простой вариант

    php (это основа) + session (это, чтоб запомнить текущий выбор) + cookies (это, чтоб запомнить выбор пользователя и вспомнить его в следующий раз) + sql (это, чтоб на стадии запроса к БД отбросить все лишнее - это в разы быстрее, чем перебирать массивы)
    Успехов
  • 28 июля 2016 г. , редакция: 1469721451
  • Код

    $(document).on('click', '.time_pnl > .button', function() {

    if(! $(this).hasClass("active"))
    return;

    $('.time_pnl > .button.active').removeClass("active");
    var markDate = $(this).addClass("active").attr('id');

    switch(markDate) {
    case 'yesterday':
    setTimeInterval("<time1>", "<time2>");
    break;
    case 'today':
    // только сегодня
    setTimeInterval("<time1>", "<time2>");
    break

    ....
    }

    var sTimeISO = $('input[name="start_action_time"]').datepicker("getDate");
    var sUTC = Date.parse(sTimeISO)/1000;

    var fTimeISO = $('input[name="finish_action_time"]').datepicker("getDate");
    var fUTC = Date.parse(fTimeISO)/1000;

    var custom_diafan_ajax = diafan_ajax;

    custom_diafan_ajax.init({
    data:{
    action: 'get_actions',
    module: 'statcollector',
    start_action_time: sUTC,
    finish_action_time: fUTC,
    },
    success: function(response) {
    if (response.actions) {
    window.actions = response.actions;
    }
    alert ("Далее будет обработка полученных данных");

    $('.time_pnl > .button.active').addClass("active");
    }
    });

    return false;
    });


    а лучше так

    Код

    var custom_diafan_ajax = diafan_ajax;

    $(document).on('click', '.time_pnl > .button', function() {

    if(! $(this).hasClass("active"))
    return;

    $('.time_pnl > .button.active').removeClass("active");
    var markDate = $(this).addClass("active").attr('id');

    switch(markDate) {
    case 'yesterday':
    setTimeInterval("<time1>", "<time2>");
    break;
    case 'today':
    // только сегодня
    setTimeInterval("<time1>", "<time2>");
    break

    ....
    }

    var sTimeISO = $('input[name="start_action_time"]').datepicker("getDate");
    var sUTC = Date.parse(sTimeISO)/1000;

    var fTimeISO = $('input[name="finish_action_time"]').datepicker("getDate");
    var fUTC = Date.parse(fTimeISO)/1000;

    if (window.custom_diafan_ajax !== undefined) { custom_diafan_ajax = diafan_ajax; }
    else { var custom_diafan_ajax = diafan_ajax; }

    custom_diafan_ajax.init({
    data:{
    action: 'get_actions',
    module: 'statcollector',
    start_action_time: sUTC,
    finish_action_time: fUTC,
    },
    success: function(response) {
    if (response.actions) {
    window.actions = response.actions;
    }
    alert ("Далее будет обработка полученных данных");

    $('.time_pnl > .button.active').addClass("active");
    }
    });

    return false;
    });
  • 28 июля 2016 г.
  • Предлагая вариант, который написан выше, я исходил из того, что Вы категорически против
    Цитата
    try и catch

    Но если это не так, то
    Цитата
    try и catch и обработать ошибку
    Именно так и надо действовать!!!
    Успехов.
  • 26 июля 2016 г.
  • Александр, если никто так и не подскажит за пару дней, то определите вознаграждение - это стимулирует. Но можете и самостоятельно все реализовать. Детерминируем столь сложную задачу на простые этерации:
    1. Читаем базу, отсекая все лишнее.
    2. Выводим в виде списка.
    3. Сохраняем изменения.
    Кстати, в документации cms.diafan даже примеры есть.
  • 26 июля 2016 г. , редакция: 1469561142
  • Как вариант: это похоже на зацикливание адресов. Возможно: посмотрите редиректы, перелинковку. Т.е. Вы обращаетесь на одну страницу, она перебрасывает на вторую, вторая опять на первую. Посмотрите таблицу адресов.
  • 24 июля 2016 г. , редакция: 1469335488
  • Иван, в cms страницы генеряться в зависимости от url на основе шаблонов. Например, 200 000 товаров (каждый товар можно видеть на отдельной странице), но на хосте физически нет 200 000 страниц товаров. В шаблоне или где Вам удобнее можно отслеживать, что запрошено, соответственно и выдать можно то, что нужно и как Вам нужно индивидуально для каждой страницы.
  • 25 июля 2016 г. , редакция: 1469437857
  • Цитата
    от того что я сменил url категории что появится фильтр на главной модуля магазина?
    Нее, я говорил о преемственности url ссылок.
    Цитата
    появится фильтр
    Думаю, что просто соответствующий шаблонный тег вставить надо с требуемыми параметрами.
  • 25 июля 2016 г.
  • Владимир (german3w), все верно! Но, если я не ошибаюсь, такую манипуляцию нужно делать до создания товаров, т.к. эта ссылка автоматически не распространица на и имеющийся товара (потому, что у имеющегося товара уже сгенерировались ссылки). В имеющимся товаре при таком варианте необходимо будет вручную менять ссылки, если необходима преемственность в ссылках. Тоже относится и к подкатегориям.
    Не буду утверждать, но, по-моему, это так.
  • 23 июля 2016 г. , редакция: 1469294851
  • Предполагаю, что разницу между Memcache и Memcached Вы понимаете. Соответственно настроен и работает Memcached, порт открыт и доступен, простая страница php с использование Memcached работает без ошибок, в cms.diafan включен Memcached и определен его порт, и включено кэширование. Однако, все равно ответ
    Цитата
    Не установлен модуль Memcached для PHP
    Хорошо, а log, что говорит?

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум