• Зачем продолжают изучать Corel draw? Он ещё жив?

    dom1n1k
    @dom1n1k
    У Корела более понятный интерфейс для новичка и более простая learning curve.
    "Для дома для семьи" он зачастую проще и удобнее. Илл более хардкорно-профессиональная программа.
    Ответ написан
    5 комментариев
  • Во что может вылиться оптимизация Wordpress?

    @Silm
    "Заводы стоят, одни гитаристы в стране!"

    Не мучайтесь раздумьями. Накидайте сайт с похожей структурой, забейте БД рыбными данными и проведите нагрузочное тестирование. Для этого есть платные онлайн сервисы, утилита командной строки ab, yandex.tank и тп.

    Откажитесь от использование Shared хостинга, используйте VPS. Nginx. Кешируйте.
    Изучите: ruhighload.com
    Ответ написан
    2 комментария
  • Как быстро верстать (нужен совет как быть дальше)?

    Препроцессоры на полную мощь (попробуйте jade для html), gulp, библиотека снипетов, опыт, опыт и ещё раз опыт.

    Так же важно: мощный компьютер, хорошие мониторы в достаточном количестве удобное рабочее место и позволяющая состредоточиться атмофера.

    Ну и самое главное:
    846381d51bb74da8b80e2558501ceb5e.png

    Позиционируйте себя, находите своего клиента.
    Быстро хотят все, но есть и те кто понимает, что лучше подождать немного дольше и получить готовый, кроссбраузерный, качественный продукт. Чем кривую поделку, которую потом в 2 раза дольше править.
    Ответ написан
    3 комментария
  • Наше доменное имя и сайт 18+ тематики, как поступить?

    @JohnJon
    Как поступить? контента он генерирует не слабо (судя по яндекс картинкам)


    Закрыть веб-студию и заняться зарабатыванием денег. Теперь вы знаете как.
    Ответ написан
    1 комментарий
  • Наше доменное имя и сайт 18+ тематики, как поступить?

    @mantyr
    Пишу много Golang кода с удовольствием:)
    Отличный повод для PR. Слоганы такие "Мы не порно-сайт, но сайты делаем не менее интересными:)". Вообще от вас зависит что вам удобно или нравится. Проведите анкетирование у клиентов - предложите им пять-шесть других доменов и названий. С другой стороны - всё равно у кого там какой домен похожий на ваш - если ваш товар или услуга того стоит то ничто не помешает.
    Ответ написан
    Комментировать
  • Какими инструментами пользуются дизайнеры сайтов?

    tragische
    @tragische
    let me google this for you
    Без сарказма, бумага, карндаш, ножницы и клей даже иногда. Экономят кучу времени. Лично для меня интерфейс мозг → рука → карандаш самый быстрый и самый гибкий.

    А дальше уже зависит от команды. Если у всех Скетч, то Скетч. Если фронтенд под виндой сидит, то ФШ. Мне долго был мил иллюстратор, из-за векторности, но с появлением Скетча это прошло, хотя иконки в нём мне удобней рисовать до сих пор.
    Уже написали несколько раз про инвижн, он незаменим, особенно для арт-директорской работы и согласований. Ну и он как тудушка для графики отлично работает. Еще есть всякие https://webflow.com/, бывает очень удобно. Не всегда, не для всего, но когда что-то простое, вроде лендингов, то сильно укорачивает время разработки.

    По-факту рисовать всё равно в чём. Важно из чего ваш конкретный фронтэндер умеет/может извлекать информацию.
    Ответ написан
    Комментировать
  • Какими инструментами пользуются дизайнеры сайтов?

    uncurrent
    @uncurrent
    Photoshop, Sketch — графика
    invisionapp.com, zeppelin — коворкинг, презентация работы и трекинг задач
    Trello — трекинг задач
    DropBox, Git — контроль версий, коворкинг и бекап файлов
    Skype, почта — общение голосом/переписка с клиентами, голосом внутри команды
    Slack, telegram — общение перепиской внутри команды
    Ответ написан
    8 комментариев
  • Как в WordPress реализовать галерею изображений от пользователей?

    Slams
    @Slams
    Допилите уже под свои нужды.

    По нажатию на кнопку будет открываться библиотека мультимедиа, как в админке и туда можно будет загружать фотографии авторизированому пользователю.

    Пользователь будет видеть только свои фотографии.

    <div id="main_photo" class="upload_file button green"><span>Загрузить заглавное фото</span></div>


    $('#selector').on('click','.upload_file',(function(e) {
            e.preventDefault();
            upload_image($(this));
        }));
    
    function upload_image(el){
    
        var custom_uploader;
        var button = $(el);
        var id = button.attr('id').replace('_button', '');
        var att_id = button.next().val();
    
        if (custom_uploader) {
            custom_uploader.open();
            return;
        }
        //Extend the wp.media object
        custom_uploader = wp.media.frames.file_frame = wp.media({
            title: 'Выберите картинку из библиотеки или загрузите новую',
            library : {
                type : 'image',
            },
            button: {
                text: $(this).data( 'uploader_button_text' )
            },
            multiple: false,
            editing:   false
    
    
        });
        custom_uploader.on('select', function() {
    
            selection = custom_uploader.state().get('selection');
            if ( ! selection )
                return;
    
            selection.each( function( attachment ) {
                var src = attachment.attributes.sizes.full.url;
                var src_m = attachment.attributes.sizes.medium.url;
                var id = attachment.id;
                var alt = attachment.attributes.alt;
                var height = attachment.attributes.sizes.medium.height;
                var width = attachment.attributes.sizes.medium.width;
    
                $(button).parent().find('p').html('<img src="'+src_m+'" height="235" width="325">');
                $(button).next().attr('value',id);
                $(button).hide();
                $(button).parent().find('span').html('Изменить фотографию');
    
            });
    
        });
        custom_uploader.on('open',function() {
    
            var selection = custom_uploader.state().get('selection');
            var selected = att_id; // the id of the image
            if (selected) {
                selection.add(wp.media.attachment(selected));
            }
        });
        custom_uploader.open();
    
    }


    functions.php

    add_action('wp_enqueue_scripts', '263459_enqueue_main_script');
    function 263459_enqueue_main_script() {
    if(is_page('add-gallery-page-name')){
            wp_enqueue_media();
    }
    }
    /*
     * Отображаем посты и картинки только для текущего пользователя
     */
    
    add_action('pre_get_posts', 'query_set_only_author' );
    function query_set_only_author( $wp_query ) {
        global $current_user;
        if( is_admin() && !current_user_can('edit_others_posts') ) {
            $wp_query->set( 'author', $current_user->ID );
            add_filter('views_edit-post', 'fix_post_counts');
            add_filter('views_upload', 'fix_media_counts');
        }
    }
    
    // Корректируем подсчет постов
    function fix_post_counts($views) {
        global $current_user, $wp_query;
        unset($views['mine']);
        $types = array(
            array( 'status' =>  NULL ),
            array( 'status' => 'publish' ),
            array( 'status' => 'draft' ),
            array( 'status' => 'pending' ),
            array( 'status' => 'trash' )
        );
        foreach( $types as $type ) {
            $query = array(
                'author'      => $current_user->ID,
                'post_type'   => 'recipe',
                'post_status' => $type['status']
            );
            $result = new WP_Query($query);
            if( $type['status'] == NULL ):
                $class = ($wp_query->query_vars['post_status'] == NULL) ? ' class="current"' : '';
                $views['all'] = sprintf(
                    '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>',
                    admin_url('edit.php?post_type=recipe'),
                    $class,
                    $result->found_posts,
                    __('All')
                );
            elseif( $type['status'] == 'publish' ):
                $class = ($wp_query->query_vars['post_status'] == 'publish') ? ' class="current"' : '';
                $views['publish'] = sprintf(
                    '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>',
                    admin_url('edit.php?post_type=recipe'),
                    $class,
                    $result->found_posts,
                    __('Publish')
                );
            elseif( $type['status'] == 'draft' ):
                $class = ($wp_query->query_vars['post_status'] == 'draft') ? ' class="current"' : '';
                $views['draft'] = sprintf(
                    '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>',
                    admin_url('edit.php?post_type=recipe'),
                    $class,
                    $result->found_posts,
                    __('Draft')
                );
            elseif( $type['status'] == 'pending' ):
                $class = ($wp_query->query_vars['post_status'] == 'pending') ? ' class="current"' : '';
                $views['pending'] = sprintf(
                    '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>',
                    admin_url('edit.php?post_type=recipe'),
                    $class,
                    $result->found_posts,
                    __('Pending')
                );
            elseif( $type['status'] == 'trash' ):
                $class = ($wp_query->query_vars['post_status'] == 'trash') ? ' class="current"' : '';
                $views['trash'] = sprintf(
                    '<a href="%1$s"%2$s>%4$s <span class="count">(%3$d)</span></a>',
                    admin_url('edit.php?post_type=recipe'),
                    $class,
                    $result->found_posts,
                    __('Trash')
                );
            endif;
        }
        return $views;
    }
    
    // Корректируем подсчет элементов галерени
    function fix_media_counts($views) {
        global $wpdb, $current_user, $post_mime_types, $avail_post_mime_types;
        $views = array();
        $count = $wpdb->get_results( "
            SELECT post_mime_type, COUNT( * ) AS num_posts
            FROM $wpdb->posts
            WHERE post_type = 'attachment'
            AND post_author = $current_user->ID
            AND post_status != 'trash'
            GROUP BY post_mime_type
        ", ARRAY_A );
        foreach( $count as $row )
            $_num_posts[$row['post_mime_type']] = $row['num_posts'];
        $_total_posts = array_sum($_num_posts);
        $detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] );
        if ( !isset( $total_orphans ) )
            $total_orphans = $wpdb->get_var("
                SELECT COUNT( * )
                FROM $wpdb->posts
                WHERE post_type = 'attachment'
                AND post_author = $current_user->ID
                AND post_status != 'trash'
                AND post_parent < 1
            ");
        $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
        foreach ( $matches as $type => $reals )
            foreach ( $reals as $real )
                $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real];
        $class = ( empty($_GET['post_mime_type']) && !$detached && !isset($_GET['status']) ) ? ' class="current"' : '';
        $views['all'] = "<a href='upload.php'$class>" . sprintf( __('All <span class="count">(%s)</span>', 'uploaded files' ), number_format_i18n( $_total_posts )) . '</a>';
        foreach ( $post_mime_types as $mime_type => $label ) {
            $class = '';
            if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
                continue;
            if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
                $class = ' class="current"';
            if ( !empty( $num_posts[$mime_type] ) )
                $views[$mime_type] = "<a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), $num_posts[$mime_type] ) . '</a>';
        }
        $views['detached'] = '<a href="upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';
        return $views;
    }
    Ответ написан
    Комментировать
  • Как правильно натягивать LP на WP?

    sakrab
    @sakrab
    Не будь побежден злом, но побеждай зло добром...
    Свечи, шампанское, цветы.......

    извиняюсь. не смог удержатся...
    Ответ написан
    Комментировать
  • Где вы берете полезные наработки для сайтов?

    chelovekmuravei
    @chelovekmuravei
    \(-_-)/ раз два три четыре
    Первым делом велосипед. Это плохо, но весело. Разве могут 30 колес не радовать.
    Ответ написан
    Комментировать
  • Подойдет ли Unity для такой игры?

    AxisPod
    @AxisPod
    Ну сделали же Adventure Capitalist на unity.
    Ответ написан
    Комментировать