Браузер YRC Weblink создан и распространяется индийской софтверной компанией YRC Group Inc. И потому в качестве домашней страницы по умолчанию стоит индийский Google:))

Индийские программисты считаются одними из самых крутых в мире (после русских и китайских:), но с этим браузером у них что-то не заладилось, ибо это просто праздник какой-то, а не браузер. Идеи, которые они постарались воплотить в этом браузере - прекрасны, но сама реализация из рук вон плоха. Браузер работает "через пень-колоду", то есть странно и плохо. Попробовал его на двух разных компьютерах - под Windows 7 и под Windows 8 - и там и там глюки и зависания.

Впрочем, пойдем по порядку.

После установки браузер предлагает выбрать некоторые настройки (как, например, видно на скриншоте выше), а кроме того - создать аккаунт для облачной синхронизации и хранения настроек, закладок, заметок и файлов.

Прекрасная идея! Жму ссылку Sign Up, что значит "Зарегистрироваться", открывается сайт с веселенькими картинками, но открывается он почему-то не в YRC Weblink, а в браузере, который стоит на компьютере по умолчанию и это первая странность. Другая странность заключается в том, что нужно вводить довольно много своих данных - зачем? Например, в браузере Maxthon для регистрации в облаке требуется ввести лишь email и пароль, что гораздо проще, приятнее и не вызывает лишних вопросов.

Ладно, ввожу все эти данные. Приходит письмо для подтверждения аккаунта, жму на ссылку, однако сайт сообщает мне "Oops! - не нахожу твоих данных в базе". Но тут приходит еще одно письмо с новой ссылкой, жму на ссылку в нем и опять - Oops! Однако, в процессе этих упсов приходит третье письмо и там написано - поздравляем, ваш аккаунт подтвержден! Такая вот своеобразная индийская верификация аккаунта.

Открываю браузер, настройки, пытаюсь импортировать закладки. Браузер в упор не видит закладочного файла формата.html, который все известные мне браузеры видят, понимают и принимают без проблем. Ввожу название файла вручную, жму Импортировать и получаю отчет - закладки успешно импортированы!

Вот только куда они успешно импортированы??? Ни в браузере, ни в облаке их нет. Повторяю операцию еще раз и тот же результат. Ладно, проехали. Двигаемся дальше.

В облаке и настройках есть пункт Заметки. Помня про заметки в браузере Maxthon, которые можно создавать с помощью встроенного блокнота и которые автматически сохраняются в облаке, пытаюсь найти нечто подобное в YRC Weblink, увы, безрезультатно. Просмотр заметок есть, а инструмента для их создания нет. Странно? Еще как!

Ну ОК. Смотрим, что у нас есть еще. При инсталляции браузер самостоятельно (без спросу) установил на рабочий стол два ярлыка - ярлык браузера (это нормально) и ярлык Твиттера.

При нажатии на этот ярлык открывается отдельное окно браузера с Твиттером. Какого черта это делать да еще по умолчанию? Может, я вообще не пользуюсь Твиттером? Ладно, ярлык Твиттера с рабочего стола удалил, но не тут-то было! Теперь, при нажатии на ярлык браузера (а не твиттера), в панели задач браузер высвечивается Твиттером! Такого праздничного глюка я еще в своей жизни не встречал!

Кстати, об этих трех окнах, которые вы видите на скриншоте выше. Окно настроек Summary зависает через раз. Причем так, что вырубить его можно только отключением процесса в Диспетчере задач, по-другому - никак. А закрыть окно синхронизации можно только путем разлогинивания в системе.

Если нажать на "Нет", окно будет постоянно висеть открытым. При том, что сам браузер, наоборот, время от времени самопроизвольно выключается. И что смешно: браузер выключается, а зависшее окно Summary и открытое окно Синхронизации - нет, так и висят они бесхозные, брошенные браузером, пока не вырубишь их в Диспетчере задач. Фееричные глюки!

Впрочем, не правильно было бы не перечислить и положительные стороны браузера .

Во-первых, это режим анонимного серфинга. Включаете в настройках этот режим и браузер не использует кэш, куки, не записывает историю посещений. Есть браузеры, которые работают только в таком режиме, например, Browzar , что иногда необходимо, но в целом крайне неудобно. И возможность быстрого подключения-отключения такого режима - большой плюс браузеру.

Во-вторых, в YRC Weblink есть возможность выбора поисковой системы по умолчанию. Выбирать, правда, приходится из достаточно специфичного списка:

Однако, адрес поисковой машины можно задать и вручную, нажав на копку Define New (на скриншоте ее не видно, она под списком).

Ну и последний, но очень весомый плюс - YRC Weblink почти не грузит систему ! Для сравнения открыл в нем 10 вкладок и 10 вкладок с теми же самыми адресами открыл в Яндекс-браузере (лидере среди браузеров по загрузке системы) и вот какая картина получилась.

Яндекс-браузер:

Не трудно догадаться, что YRC Weblink в этом смысле практичеси вне конкуренции, в хорошем смысле.


РЕЗЮМЕ . Если бы все задумки, которые создатели пытались внедрить в этом браузере, были сделаны как надо, цены бы ему не было, YRC Weblink мог бы претендовать на звание лучшего или, как минимум, одного из лучших браузеров. Но с теми недоработками, какие в нем наблюдаются, он даже на "троечку" не тянет. Ставлю ему оценку 3- .

После тестирования, браузер деинсталирую - иметь на компьютере столь глючную программу совершенно ни к чему. Ну и ждем дальнейших шагов от YRC Group Inc. Сумеют индийские программисты устранить все недоработки и выпустить действительно рабочую версию браузера, честь им и хвала. Не сумеют - еще одним мертворожденным браузером в мире будет больше.

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

Для начала создадим базу адресов страниц и возможные анкоры к какждому из них. В качестве базы будем использовать файл формата *.txt . Структура файла будет такой:

Адрес_страницы_1;анкор_1,анкор_2,анкор_3,...,анкор_n адрес_страницы_2;анкор_1,анкор_2,анкор_3,...,анкор_n адрес_страницы_3;анкор_1,анкор_2,анкор_3,...,анкор_n ... адрес_страницы_n;анкор_1,анкор_2,анкор_3,...,анкор_n

Как видите, дальнейшее использование скрипта возможно при любом количестве адресов страниц и анкоров к ним. Адрес страницы пишется без http://www.site.ru/, т.е. сразу от корня без первого слэша. Адрес раздляется от анкоров через точка с запятой, а анкоры между собой просто запятой. Можно сделать и написание полного адреса, просто лично мне так удобнее, а изменить под себя заполнение и выдачу результата вы можете и сами, думаю, вы интуитивно и сами разберетесь.

И так, база ссылок и анкоров к ним создана, далее я приведу пример кода PHP для непосредственного вывода ссылок для перелинковки на сайте:

".$tex2[$tex3].""; } ?>

Вставляем этот код в любое место на сайте, который выводит 5 случайных ссылок из базы и случайным анкором. Анкоры лучше разбавлять, а не писать только 1 к ссылке. При грамотной перелинковке на сайте вы незамедлительно увидите прирост трафика и улучшение других показателей сайта.

Жду ваши вопросы в комментариях к данному посту.

Дата публикации: 03 марта, 2014
    Отзывы и комментарии:

    Дмитрий :
    Спасибо за скрипт, буду внедрять. Из исходного кода с сайта невозможно скопировать, копируется только маленькими отрывками, было бы удобнее целиком.

    Кирилл :
    Спасибо за замечание с копированием, только сейчас это увидел, постараюсь в ближайшее время исправить.

    Алексей Павлов :
    Ошибка в строчке $tex = explode(":",$sendlist[$count] Нужна точка с запятой, а не двоеточие. Я немного изменил код, сделал его понятнее: $anchor"; } ?>

    Matrk :
    Статья полностью бесполезна, т.к. на блоге стоит защита от копирования текста.

    Кирилл :
    Небольшой косяк есть в js, это да, нет времени поправить, но наверное кое-кто другой бесполезный, раз ума не хватает в таком случае исходный код страницы глянуть и взять от туда

    Matrk :
    Т.е. я должен еще по исходному коду лазить и чистить его от всякого мусора? Вы забавный.

    Кирилл :
    Получается я кому-то что-то должен? Я у вас что, деньги взял, стараешься тут, бесплатные советы даешь:))) Бесплатный сыр только в мышеловке, с возрастом поймете.

    Кирилл :
    Убрал косяк, пользуйтесь на здоровье.

    Андрей Копаев :
    1 - наверное лучше это делать с использованием базы данных mysql работать будет быстрее, добавлять проще 2 - не пойму какой смысл каждый раз генерить список ссылок? как это влияет на рост трафика? можно ли подгружать аяксом, т.е. это для людей или для ботов?

    www.сайт :
    Для продвижения, хотя, лично я не сторонник подобных манипуляций с ПС.

Начнем рассмотрение компонентов с того, как базовый компонент Weblinks действует в административной части веб-сайта. Этот компонент, типичный для данной части вебсайта, очень похож на другие ее компоненты, предназначенные для управления статьями, пользователями, модулями и т.д.

Ниже перечислены программные файлы данного компонента. Все эти файлы находятся в папке administator/components/com_weblinks . В остальной части этой главы имена всех файлов компонента Weblinks упоминаются относительно данной начальной папки, если не указано иное. Большинство файлов организовано по шаблону MVC. В частности, все файлы представлений находятся в подпапке представлений, а все основные файлы моделей и контроллеров - в подпапках моделей и контроллеров соответственно. Их также дополняют установочные, конфигурационные и вспомогательные файлы.

Файлы административной части компонента Weblinks, кроме файлов index.html

  • controllers/weblink.php - Основной контроллер для редактирования Контроллер одиночной веб-ссылки
  • controllers/weblinks.php - Основной контроллер для составления Контроллер и отображения списка веб-ссылок на экране Weblinks Manager (Диспетчер веб-ссылок)
  • helpers/weblinks.php - Предоставляет различные методы, применяемые в контроллерах и представлениях
  • models/fields/ordering.php - Модель JformField отображения столбца упорядочения веб-ссылок на экране Weblinks Manager
  • models/forms/weblink.xml - XML-файл, используемый в классе Jform- Модель Field, для разметки формы с полями ввода и редактирования веб-ссылок на экране
  • models/weblink.php - Модель для экранной формы одиночной Модель веб-ссылки
  • models/weblinks.php - Модель для экранной формы диспетчера Модель веб-ссылок
  • sql/install.mysql.utf8.sql - SQL-файл для составления таблицы веб-ссылок во время установки
  • sql/uninstall.mysql.ut8.sql - SQL-файл для удаления таблицы вебссылок во время установки
  • tables/weblink.php - Предоставляет класс Модель
  • views/weblink/tmpl/edit_metadata.php - Файл исходной компоновки для редактирования метаданных веб-ссылки

Административная часть компонента Weblinks

  • views/weblink/tmpl/edit_params.php - Файл исходной компоновки для редактирования вариантов выбора одиночной веб-ссылки
  • views/weblink/tmpl/edit.php - Файл исходной компоновки для редактирования веб-ссылки
  • views/view.html.php - Класс основного представления для вывода одиночной веб-ссылки в формате HTML Файл исходной компоновки для диспетчера веб-ссылок
  • views/weblinks/view.html.php - Класс основного представления для вывода веб-ссылок в формате HTML непосредственно на экране Weblinks Manager
  • access.xml - XML-файл, предоставляющий список действий для системы списков контроля доступа (ACL)
  • config.xml - XML-файл, предоставляющий список вариантов выбора конфигурации компонента
  • controller.php - Класс основного контроллера
  • weblinks.php - Точка входа для запроса
  • weblinks.xml - XML-файл, используемый для управления процессом установки

Точка входа в Joomla! компонент подобна у большинства компонентов. Для этого примера мы будем использовать один из компонентов ядра Joomla – Web Links (Ссылки на сайты). Первый файл, который будет выполнен во front-end: …/components/com_weblinks/weblinks.php .

Сначала мы видим проверку безопасности, предназначенную для уверенности, что никто не сможет вызвать эту страницу непосредственно. Это стандарт, который должен использоваться во всех ваших php-файлах (хотя есть несколько исключений):

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

// Require specific controller if requested if ($controller = JRequest:: getWord ("controller" ) ) { $path = JPATH_COMPONENT. DS. "controllers" . DS. $controller . ".php" ; if (file_exists ($path ) ) { require_once $path ; } else { $controller = "" ; } }

Теперь мы создаем экземпляр класса нашего контроллера, используя имя, которое определили выше:

Как только задача выполнена, производим редирект, если он требуется:

// Redirect if set by the controller $controller -> redirect () ;

Класс контроллера (Controller Class)

Общий (характерный) контроллер для компонента ссылок находится здесь: …/components/com_weblinks/controller.php .
Весь этот класс определяет метод display, который является используемым по умолчанию, если пользователь не определяет другую задачу (task).

defined ("_JEXEC" ) or die ( "Restricted access" ) ; jimport("joomla.application.component.controller" ) ; /** * Weblinks Component Controller * * @package Joomla * @subpackage Weblinks * @since 1.5 */ class WeblinksController extends JController { /** * Method to show a weblinks view * * @access public * @since 1.5 */ function display() { // Set a default view if none exists if ( ! JRequest:: getCmd ( "view" ) ) { JRequest:: setVar ("view" , "categories" ) ; } //update the hit count for the weblink if (JRequest:: getCmd ("view" ) == "weblink" ) { $model =& $this -> getModel ("weblink" ) ; $model -> hit () ; } // View caching logic -- simple... are we logged in? $user = & JFactory:: getUser () ; $view = JRequest:: getVar ("view" ) ; $viewcache = JRequest:: getVar ("viewcache" , "1" , "POST" , "INT" ) ; if ($user -> get ("id" ) || ($view == "category" && $viewcache == 0 ) ) { parent:: display (false ) ; } else { parent:: display (true ) ; } } }

В этом методе мы устанавливаем вид (представление) по умолчанию: показ категорий, если другой вид не был передан как параметр строки запроса. Если требуемый вид — weblink, мы увеличиваем значение счетчика просмотра ссылки. Затем мы устанавливаем значение переменной вида и вызываем метод diplay нашего родительского класса JController .
Стоит обратить отдельное внимание на вызов метода getModel. Он загружает необходимую модель для компонента . В рассматриваемом примере, этот метод загрузит модель weblink, находущуюся здесь: …/components/com_weblinks/models/weblink.php .
Здесь условимся, что мы не запрашивали определенное представление, и поэтому наш вид будет установлен в categories.
Затем, мы открываем класс представления.

Класс представления (вида) (View Class)

Так как мы предполагаем, что хотим представление категорий, это — следующий файл, который будет выполнен: …/components/com_weblinks/views/categories/view.html.php

// Check to ensure this file is included in Joomla! defined ( "_JEXEC" ) or die ( "Restricted access" ) ; jimport( "joomla.application.component.view" ) ; /** * HTML View class for the WebLinks component * * @static * @package Joomla * @subpackage Weblinks * @since 1.0 */ class WeblinksViewCategories extends JView { function display( $tpl = null ) { global $mainframe ; $document =& JFactory:: getDocument () ; $categories =& $this -> get ("data" ) ; $total =& $this -> get ("total" ) ; $state =& $this -> get ("state" ) ; // Get the page/component configuration $params = & $mainframe -> getParams () ; $menus = & JSite:: getMenu () ; $menu = $menus -> getActive () ; // because the application sets a default page title, we need to get it // right from the menu item itself if (is_object ( $menu ) ) { $menu_params = new JParameter( $menu -> params ) ; if (! $menu_params -> get ( "page_title" ) ) { $params -> set ("page_title" , JText:: _( "Web Links" ) ) ; } } else { $params -> set ("page_title" , JText:: _( "Web Links" ) ) ; } $document -> setTitle ( $params -> get ( "page_title" ) ) ; // Set some defaults if not set for params $params -> def ("comp_description" , JText:: _("WEBLINKS_DESC" ) ) ; // Define image tag attributes if ($params -> get ("image" ) != - 1 ) { if ($params -> get ("image_align" ) != "" ) $attribs [ "align" ] = $params -> get ("image_align" ) ; else $attribs [ "align" ] = "" ; $attribs [ "hspace" ] = 6 ; // Use the static HTML library to build the image tag $image = JHTML:: _("image" , "images/stories/" . $params -> get ("image" ) , JText:: _("Web Links" ) , $attribs ) ; } for ($i = 0 ; $i < count ($categories ) ; $i ++ ) { $category =& $categories [ $i ] ; $category -> link = JRoute:: _("index.php?option=com_weblinks&view=category&id=" . $category -> slug ) ; // Prepare category description $category -> description = JHTML:: _("content.prepare" , $category -> description ) ; } $this -> assignRef ("image" , $image ) ; $this -> assignRef ("params" , $params ) ; $this -> assignRef ("categories" , $categories ) ; parent:: display ($tpl ) ; } } ?>

И снова, это — очень простой класс с одним методом display. БОльшая часть логики здесь является специфической для компонента ссылок, но если присмотреться можно найти функциональность используемую в большинстве классов представлений компонентов. В конце метода display этот класс вызывает родительский (JView) метод display , передавая название шаблона для отображения. Если название шаблона отображения не передается, используется шаблон «default».
И в последних, мы открываем класс шаблона.

Класс шаблона (Template Class)

Условимся что определенное имя шаблона не было передано, таким образом будет использован шаблон по умпочанию «default». В этом случае, следующий файл, который будет рассмотрен: …/components/com_weblinks/views/categories/tmpl/default.php
-> escape ($this -> params -> get ("page_title" ) ) ; ?>