Main menu

Карточки контрагентов, документов проектов и всего прочего в CRM системе открываются по нажатию на ссылку. Мне была поставлена задача научить Vtiger открывать эти карточки в новом окне. Кому то эта функция может показаться неудобной, так как применится для всех модулей и можно открывать страницы в новом окне средней кнопкой мыши, но многие пользователи либо не знают об этом, либо не хотят этого делать и тем не менее, им нужно, чтобы все открывалось в новом окне. Вот об этом Я и расскажу...

Вообще кажется, что все очень просто и на самом деле так и есть, ведь нужно всего лишь добавить опцию target="_blank" в код, в котором формируются ссылки. Остается одна загвоздка: найти код отвечающий за формирование ссылок на карточки модулей. А код этот находится в файле /include/ListView/ListViewController.php в районе 472 строки и выглядит так:

if(in_array($fieldName, $nameFieldList) && $module != 'Emails' ) {
                    $value = "<a href='index.php?module=$module&parenttab=$parenttab&action=DetailView&record=".
                    "$recordId' title='".getTranslatedString($module, $module)."'>$value</a>";
                } elseif($fieldName == $focus->list_link_field && $module != 'Emails') {
                    $value = "<a href='index.php?module=$module&parenttab=$parenttab&action=DetailView&record=".
                    "$recordId' title='".getTranslatedString($module, $module)."'>$value</a>";
                }

И вот как раз тут нам и нужно добавить заветную опцию target="_blank", только аккуратней с синтаксисом, у нас тут все таки не html. Приводим этот кусок кода к такому вот виду:

if(in_array($fieldName, $nameFieldList) && $module != 'Emails' ) {
                    $value = "<a href='index.php?module=$module&parenttab=$parenttab&action=DetailView&record=".
                    "$recordId' title='".getTranslatedString($module, $module)."'target='_blank'>$value</a>";
                } elseif($fieldName == $focus->list_link_field && $module != 'Emails') {
                    $value = "<a href='index.php?module=$module&parenttab=$parenttab&action=DetailView&record=".
                    "$recordId' title='".getTranslatedString($module, $module)."'target='_blank'>$value</a>";
                }

Собственно на этом и все. Теперь все карточки в списках модулей будут открываться в новом окне. Удобства и неудобства этого решения уже совсем другой вопрос. Но можно добавить условия, при которых target="_blank" будет включен только у определенных групп пользователей. Как расставлять такие условия Я расскажу чуть позже, в другой статье.