• Структурированные данные (хлебные крошки) smarty v2, как пронумеровать элементы?

    dskripchenko
    @dskripchenko
    Мда, не лучшая реализация, из текущего контекста невозможно точно ответить на ваш вопрос, но судя во всему весь ваш код должен прокручиваться в цикле, который тут не представлен и $e как раз элемент массива с bread crumbs. Если догадка верна то именуем цикл {foreach from=$breadcrumbsList item=e name=bc} и тогда можем воспользоваться переменными цикла content="{$smarty.foreach.bc.iteration}".

    Читайте документацию тут
  • Как делают защиту на сайте на PHP?

    dskripchenko
    @dskripchenko
    Читай про SQL Injection и XSS тут, а про ddos например тут
  • Как собрать все ссылки на сайте, php?

    dskripchenko
    @dskripchenko
    /**
     * Date: 05.05.17
     * Time: 17:42
     */
    
    namespace app\components;
    
    /**
     * Class UrlGrabberService
     * @package app\components
     */
    class UrlGrabberService
    {
        public $newLink = [];
        public $savedLink = [];
        public $siteUrl = false;
    
        /**
         * @return static
         */
        public static function getInstance(){
            return new  static();
        }
    
        /**
         * @param $url
         * @return array
         */
        public function getAllLinkBySite($url){
            $this->newLink = $this->getAllLinkByUrl($url);
            while(!empty($this->newLink)){
                $link = array_shift($this->newLink);
                $this->savedLink[] = $link;
                $this->addLinkByUrl($link);
            }
            return $this->savedLink;
        }
    
        /**
         * @param $url
         * @return array
         */
        protected function getAllLinkByUrl($url){
            $pattern = '/<a[\s\W]*?href\S*?=\S*?[\'"](\/\w.*?)\/?[\'"]/';
            $headers = @get_headers($url);
            if(strpos($headers[0],'200')===false){
                $result = [];
            }
            else{
                $opts = array('https'=>array('header' => "User-Agent:MyAgent/1.0\r\n"));
                $context = stream_context_create($opts);
                $content = \file_get_contents($url,false,$context);
                $matches = [];
                preg_match_all($pattern,$content,$matches);
                $result = array_unique($matches[1]);
            }
            return $result;
        }
    
        /**
         * @param $url
         */
        protected function addLinkByUrl($url){
            $this->newLink = array_merge($this->newLink,$this->getAllLinkByUrl($this->siteUrl . $url));
            $this->newLink = array_unique($this->newLink);
            $this->newLink = array_diff($this->newLink, $this->savedLink);
        }
    }


    $result = UrlGrabberService::getInstance()->getAllLinkBySite('http://example.com');
  • Как вы пользуетесь twig или smaty?

    dskripchenko
    @dskripchenko
    Максим Тимофеев: они в принципе решают разные задачи, так что не сравнивайте их. И ваше утверждение о том, что хелперы решают вопросы нагроможденности кода не очень понятны. Приведу примет. На любом шаблонизаторе я могу разнести структуру всех типовых блоков по отдельным файлам, в результате я получу максимально гибкую структуру блоков с простой структурой, в дополнение к этому я получаю полный а главное явный контроль над переменными передаваемыми в каждый из включаемых блоков. Вы конечно можете попытаться тоже самое провернуть на php, но как раз в этом месте и получите значительное проседание производительности. Шаблонизатор соберет прекешенную версию общего шаблона в один файл, а подключения php файлов останутся подключениями что в априори гораздо медленнее. В итоге либо ваш код работает медленнее, либо поддерживать ваш проект долго дорого и неудобно.
  • Как в Yii2 поменять ID на slug/alias в url?

    dskripchenko
    @dskripchenko
    ksl1980: про регулярки на википедии посмотри для понимания что к чему достаточно, а вот тут https://regex101.com можно их писать и проверять сразу
  • Как вы пользуетесь twig или smaty?

    dskripchenko
    @dskripchenko
    Максим Тимофеев: вот уж совсем не верно, хелперы ни как не связаны с шаблонизатором, вы что то путаете. Хелпер это компонент позволяющий быстро аттрибутировать и встроить типизированный блок html кода, а шаблонизатор это полноценный набор управляющих конструкций. Вы точно так же можете использовать и хелперы и виджеты при построении шаблона, вопрос остается только в целесообразности, можете ли вы позволить себе каждый раз переписывать шаблон самостоятельно(в случае с хелперами и виджетами ) или позволите нормально работать верстальщику. При работе в команде это как минимум необходимо.
  • Как вы пользуетесь twig или smaty?

    dskripchenko
    @dskripchenko
    Максим Тимофеев: отлично, вы еще увеличили количество мусорного кода в шаблоне и напрочь отбили возможность верстальщику работать с шаблоном.
  • Как вы пользуетесь twig или smaty?

    dskripchenko
    @dskripchenko
    mitaichik: редизайн, поддержка, нет? или у вас после получения верстки все правки только программист вносит? даже если нужно переверстать какой то блок?
  • Как вы пользуетесь twig или smaty?

    dskripchenko
    @dskripchenko
    mitaichik: Действитель, какой же все таки удобный php в качестве шаблонизатора, прям так и хочется его везде использовать

    php <?= strip_tags(substr($item['subtitle'],0,150).'...')?>
    twig {{item.subtitle|truncate(150,true,'...')|striptags|raw}}
    smarty {item.subtitle|truncate:150:'...':true|strip_tags}

    смотришь на шаблон и сразу все ясно, особенно для верстальщика, с шаблонами то ему в первую очередь работать, а верстальщики они такие, постоянно на php пишут.

    RE: "...а шаблонизатор медленнее, чем php..." на самом деле шаблон во время первого же рендера компилируется в файл php. так что аргумент про скорость так себе аргумент.