• Какую литературу по Wordpress стоит прочитать?

    IvanCher
    @IvanCher
    Мысли шире
    Wordpress - это просто инструмент, причем не очень большой. С лихвой хватает прочитать документацию и по коду полазить. Попробуйте в коде отследить весь процесс обработки запроса от файла index.php до рендера страницы и сами сможете книгу написать :) На это уйдет у вас в худшем случае день.
    Лучше изучайте пхп в целом и wordpress вам покажется очень маленьким и компактным инструментом хорошо подходящим для "своих" задач, без фанатизма писать на нем всё подряд.
    Ответ написан
    Комментировать
  • Реализация xml-парсинга со вставкой в базу данных на Yii 2?

    IvanCher
    @IvanCher
    Мысли шире
    Загружаете хмл, как обычный файл на сервер, получаете его содержание, берете нужные данные из хмл с помощью SimpleXML, расталкиваете их куда хотите по какой хотите логике.
    Ответ написан
    Комментировать
  • Как настроить локальный веб-сервер на OS X Yosemite?

    IvanCher
    @IvanCher
    Мысли шире
    Настройка компонентов веб-сервера, а именно - сам веб-сервер(я выбрал давно и не пожалел nginx), php-fpm, mysql - настраивается точно также, как на любом линуксе(убунта, центос и т.д.).
    Мне понравился вот этот пакетный менеджер для мака. По ссылке есть, как его установить. Дальше через него всё ставим.
    Стал писать мануал, но вот набрел на статью.
    Будут вопросы, спрашивай.
    Ответ написан
    Комментировать
  • Yii2 Обмен сообщениями на сайте и система отображения онлайн-оффлайн?

    IvanCher
    @IvanCher
    Мысли шире
    Реализация зависит от текущей структуры БД и проекта.
    1. Если не нужно обновление сообщений у пользователей без перезагрузки страницы, то просто создаете табличку messsage с полями id, text, user_id (может еще какие-то Вам понадобятся) и форму для создания сообщения. Тут не вижу никаких сложностей.
    Если обновлять сообщения нужно без перезагрузки страницы, наподобие чата, то посмотрите в сторону пуш-сообщений, либо тупо через js раз в несколько секунд проверяйте не появилось ли новых сообщений, если есть, то отрисовывайте.
    2. Тут интереснее. Вариантов много самых разных. Из самых простых:
    • На все страницы сайта повесить js скрипт, который на каждое событие отправляет запрос на какой-нибудь скрипт, но не чаще, например, 1 раза в 10 сек, чтобы не задосить себя. Хранить состояние юзера (онлайн/оффлайн) лучше в быстрой nosql базе. Также в базе хранить время последнего обновления состояния. Скриптом, например, по крону, отмечать всех оффлайн, кто не подавал признаков жизни более n кол-ва минут
    • Аналогично предыдущему варианту, но не делать js, а отмечать онлайн при открытии страниц, совершении каких-то действий. Можно даже скрипт отметки онлайном пользователя повесить на событие init приложения.

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

    IvanCher
    @IvanCher
    Мысли шире
    В yii2 связь не сможет произойти, если обе модели не имеют первичного ключа. Поэтому только через создание свойства основной модели.
    UPDATE
    Можно у основной модели написать сеттер setChildren и через него записывать в приватное свойство $childrenRelation основной модели. В afterSave просто через метод link() связать модели. Тогда в контроллере для Вас всё должно выглядеть также просто, как и в yii1, просто $model->children = new Childrens();.
    Ответ написан
    2 комментария
  • Как разбить 2 строки на ключ и значение?

    IvanCher
    @IvanCher
    Мысли шире
    Попробуйте
    list(, $key, $value) = explode("=", $explode[0]);
    Ответ написан
  • Задача. Возможна ли подпись исходного кода файла?

    IvanCher
    @IvanCher
    Мысли шире
    Если есть доступ к исходнику, то подделать можно что угодно. Можете посмотреть в сторону обфускации, но это всё ровно не надежно будет.
    Если нужно быть уверенным, что ничего в скрипте не менялось, то я вижу только 1 вариант.
    Сам файл index.php должен просто перенаправлять запрос к Вам на скрипт по апи со всеми данными, вы обрабатываете их у себя и отвечаете скрипту index.php, index.php передает ответ от Вас пользователю.
    Простым языком файл index.php, который может любой скачать и к себе установить должен в этом случае являться просто прокси к Вашему API.
    Ответ написан
    Комментировать
  • Как в Yii обновить без foreach для всех моделей, результат выборки find..()?

    IvanCher
    @IvanCher
    Мысли шире
    Если я правильно понял, то попробуйте так:
    $category=Category::model()->findByPk(1);
    $descendants=$category->descendants()->findAll();
    $ids = array_map(function($descendant) {
        return $descendant->id;
    }, $descendants);
    
    Category::model()->addInCondition('id', $ids)->updateAll(array('exist' => 0));
    Ответ написан
    Комментировать
  • Yii2. Как удалить классы генерируемые Yii в виджетах?

    IvanCher
    @IvanCher
    Мысли шире
    Переопределите класс своим и делов-то.
    class NavBar extends \yii\bootstrap\NavBar
    {
        public function init()
        {
            parent::init();
            Html::removeCssClass($this->options, 'navbar');
        }
    }
    Ответ написан
    4 комментария
  • Как указать место индексации на сервере?

    IvanCher
    @IvanCher
    Мысли шире
    Роботс закрывает от индексации. В вашем случае лучше будет использовать sitemap.
    А если по-хорошему, то весь ajax привязывайте к урлам. Идеальный вариант, который я стараюсь соблюдать последние пару лет, это когда при клике на ссылку меняется урл в браузере, но данные обновляются через ajax. Если по этой ссылке перейти, то отображается та же страница, что и подгруженная аяксом. Иными словами при клике на ссылку не должно быть разницы сработает js(ajax) или просто перейдем по ссылке.
    Ответ написан
    Комментировать
  • Почему я не могу использовать heredoc в методе?

    IvanCher
    @IvanCher
    Мысли шире
    Можете, просто уберите пробелы(табы) перед закрывающим XML;
    Закрываться он должен со слова, с которого начинался без пробелов и табов перед, то есть:
    return <<<XML
            <request>
                ...
            </request>
    XML;
    Ответ написан
    3 комментария
  • Как в модуле Yii можно перебить правила CUrlManager?

    IvanCher
    @IvanCher
    Мысли шире
    Правила сравниваются сверху вниз и берется первое совпадение.
    Например, если запрос /ru/edit-post/12 должен нас отправлять в модуль админки по пути admin-module/post/edit и передавать id поста 12. Тогда правила выглядят примерно так:
    'rules'=>array(
        '<language:(ru|en|kz|de|ch|tu|ar)>/' => 'site/index',
        '<language:(ru|en|kz|de|ch|tu|ar)>/<action:edit-post>/<id:\d+>' => 'admin-module/post/<action>',
        ...
    ),


    Но, разумеется, так не очень красиво получиться перечислять все нужные Вам экшены модулей. Поэтому напишите свой класс правила и поместите в него всю логику. Я не знаю, какие у Вас модули и контроллеры, и какие требуются для них пути, поэтому тут подсказать уже не могу.
    Можете почитать про пользовательские классы урл-правил тут.
    Ответ написан
    1 комментарий