Браузер 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 для непосредственного вывода ссылок для перелинковки на сайте:
Вставляем этот код в любое место на сайте, который выводит 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"
)
)
;
?>