Как удалить лишние превью в стандартном скине krpano?

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

Итак, изначально имеет тур с такими превью:

Превьюшки в krpano
Превьюшки в krpano

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

Как это сделать?

  1. Добавьте в ваши skin_settings в файле tour.xml строку preview_count=»»
    Выглядеть это будет примерно так:

    	<skin_settings preview_count=""
                           maps="false"
    	               maps_type="bing"
    	               maps_bing_api_key=""
    	               maps_zoombuttons="false"
    

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

  2. Откройте ваш vtourskin.xml, найдите <action name=»skin_startup»>  и добавьте внутрь условный оператор:

    if(
    skin_settings.preview_count,
    copy(preview_counter, skin_settings.preview_count)
    ,
    copy(preview_counter, scene.count)
    );

    Это условие проверяет, задана ли переменная preview_count , и если задана, то копирует её значение в переменную preview_counter . В противном случае в эту переменную копируется банальный счётчик сцен (учитываются все панорамы).

  3. Найдите функцию <action name=»skin_addthumbs»> и доработайте её напильником. А именно:
    После строки add(thumbbarheight, thumbpadding); добавьте код:

    		if(
    			skin_settings.preview_count,
    			mul(thumbbarwidth, thumbxoffset, preview_counter)
    			,
    			mul(thumbbarwidth, thumbxoffset, scene.count)
    		);

    Затем найдите строку for(set(i,0), i LT preview_counter, inc(i),  и замените константу scene.count  на переменную, заданную нами ранее: preview_counter

    Должно получиться примерно так:

    for(set(i,0), i LT preview_counter, inc(i),
    				inc(thumb_cnt);
    				txtadd(thumbname,'skin_thumb_',get(i));
    				addlayer(get(thumbname));

    А ещё лучше подключите этот код отдельным файлом, удалив предварительно из vtourskin.xml

  4. Отсортируйте ваши сцены в файле tour.xml таким образом, чтобы вначале шли те панорамы, которые вы хотите оставить.
    Просто переносите каждую сцену от <scene> до </scene> выше или ниже, вырезая и вставляя текст.
  5. Вернитесь в пункт 1 и впишите в переменную preview_count=»»  число превьюшек, которые хотите оставить в панели. Например, я оставлю только 4 превью: администратор, бар, кафе, жилой этаж. Всё остальное будет скрыто.

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

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

Как всё это работает?

Очень просто. Функция skin_addthumbs проверяет, какое значение имеет переменная preview_count. Если переменная пустая, то в панели превьюшек выводятся все превью от всех панорам, в порядке очерёдности. Если там стоит число, то выводится именно такое количество панорам, как указано в переменной.

Вот что получилось у меня.

Уроки по созданию виртуальных туров
Уроки по созданию виртуальных туров

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.