+148.20
Рейтинг
447.45
Сила

Serge Pustovit

  • avatar ff00
  • 2
Быстренько набросал парсер для видео вконтакта, испытал — кажись работает нормально.
Для каждого видео из вконтакта идет загрузка странички с видео из вконтакта, т.е. идут запросы к вконтакту, это необходимо для получения значения hash видео. К счастью это происходит только при добавлении или редактировании топика или коммента, соответственно в этот момент возможен «небольшая» задержка, по другому пока не получается.

Допускаются ссылки вида
<video>http://vk.com/video123456789_123456789</video>

Код (добавить в Text.class.php в функцию VideoParser):
#Регулярка для вконтакта
$regExp = '/<video>http(?:s|):\/\/(?:www\.|)vk\.com\/video([\d]+)_([\d]+)<\/video>/Ui';
#Если есть видео из вконтакта
if(preg_match($regExp, $sText)) {
	#Считаем количество видео вконтакта
	preg_match_all($regExp, $sText, $sTextMatches);
	for($i=0;$i<count($sTextMatches[1]);$i++){
		#Получаем страницу с видео
		$html = file_get_contents('http://vk.com/video'.$sTextMatches[1][$i].'_'.$sTextMatches[2][$i]);
		#Ищем hash для видео
		preg_match('/\\\"hash2\\\":\\\"([a-f0-9]+)\\\"/Ui', $html, $matches);
		#Заменяем ссылки
		$sText = preg_replace('/<video>http(?:s|):\/\/(?:www\.|)vk\.com\/video'.$sTextMatches[1][$i].'_'.$sTextMatches[2][$i].'<\/video>/Ui', '<iframe src="http://vk.com/video_ext.php?oid='.$sTextMatches[1][$i].'&id='.$sTextMatches[2][$i].'&hash='.$matches[1].'" width="560" height="315" frameborder="0"></iframe>', $sText);
	}
}

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

Вот, к примеру, смотрите как здесь организовано www.21vek.by/home_tech/
это все же магазин основанный на продаже товаров выводя за основу бренды. Но к данному плагину это не относиться ибо это все же универсальный который можно использовать к примеру как раздел информации или работы где фильтрация по брендам не имеет значения. Возьму к примеру свой проект у меня сервис гид и я использую этот плагин по максимум он является базой данных для всех мест( еда, отдых и так далее)

Я ни чего не хочу доказывать
Плагин действительно хорош.Если есть фантазия то он станет ключевым моментом для создания чего то более чем просто сайт.
Тем более автор стараеться сделать его лучше.
С автором я часто веду переписку об каких то изменениях и доработках. Знаете ни 1 из разработчиков ни был заинтересован в своем детише как PSNet . Да и за примерам идти не далеко, по смотря на версию данного плагина (6) я еще не встречал в данном сообществе ни 1 кто бы так старался во благо человечества.
vOFFka я ни говорю уже об вас. хоть вы мне и отказали мне, вы трудитесь во благо сообщества. Вы являетесь 1 из 1 по количеству шаблонов (9) и доработок для ЛС(5). Но все же у вас 2 разное мировоззрение. И я думаю что эта дискуссия зашла в тупик. Автор выложил решение по реализации фильтра без категорий, а также подсказал как избавится от блока категории категории товаров
Так давайте все же обсудим более важные решения
  • avatar AlikMis
  • 3
не знаю зачем Вам эта глупость
быдлокод на коленке :)

classes/hooks/HookPostreadingtime.class.php

<?php
//===============================================================
class HookPostreadingtime extends Hook{
//===============================================================
	public function RegisterHook(){
		$this->AddHook('template_topic_show_info','inj_topic_show_info',__CLASS__);
	}
//===============================================================
	public function inj_topic_show_info($aVars){
		$iReading=200;//google: Средняя скорость чтения 200-250 слов в минуту
		$iWords=count(explode(' ',strip_tags($aVars['topic']->getText())));
		$iMinutes=floor($iWords/$iReading);
		$iSeconds=floor(($iWords%$iReading)/($iReading/60));
		$sReturn=($iMinutes>0)?' '.$iMinutes.' мин.':'';
		$sReturn.=($iSeconds>0)?' '.$iSeconds.' сек.':(($iMinutes>0)?'':' моментально.');
		return '<li class="topic-info-date">Время прочтения: '.$sReturn.'</li>';
	}
//===============================================================
}
?>

И по традиции выше описанное не проверялось
  • avatar PSNet
  • 1
Не нужны никакие словари, только намучаетесь с ними. Используйте сравнение схожести строк на основе анализа звучания:

www.php.net/manual/en/function.soundex.php
www.php.net/manual/ru/function.metaphone.php
www.php.net/manual/ru/function.similar-text.php

Ну или прямо в мускул:

dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex
  • avatar KLaus
  • 4
такой опус вместо одного простого действия, в шаблоне \actions\ActionProfile\whois.tpl меняем
<strong>{date_format date=$oUserProfile->getProfileBirthday() format="j F Y"}</strong>
на
<strong>{$oUserProfile->getProfileBirthday()|date_format:"%e %B %Y"}</strong>

Т.е. при выводе ДР дата не анализируется на часовые пояса и просто выводится какая она есть в базе. Может это и неправильно, но дата выводится верно.
  • avatar PSNet
  • 1
я об этом речь и веду что пора переезжать с 0.4 и 0.5 версий — у них есть небольшие проблемы с безопасностью, а также они сильно уже отстают по структуре от новых версий что сводит на «нет» возможность выпуска новых плагинов для старых версий движка.
  • avatar Lego
  • 1
Ура!, сделал вот так:
$config['router']['uri'] = array(
	'~^@(\w+)~i' => "profile/\\1/"
);


Теперь осталось подменить все ссылки, чтоб выдавали не профиль а собаку и т.д.
  • avatar Shrike
  • 2
Недавно столкнулся с подобной проблемой. Проект «переехал» с другой CMS.
Поэтому запросы в БД
Пересчет количества в топиках
UPDATE `PREFIX_topic` t  
           SET t.topic_count_comment = (
               SELECT count(c.comment_id)   FROM `PREFIX_comment` c
                    WHERE c.target_id = t.topic_id AND c.comment_publish = 1 
                              AND c.target_type = 'topic')

Пересчет количества в topic_read
UPDATE `PREFIX_topic_read` t  
           SET t.comment_count_last = (
                    SELECT count(c.comment_id)   FROM `PREFIX_comment` c
                    WHERE c.target_id = t.topic_id')
  • avatar kpoxas
  • 0
Есть решение в начале файла PluginYourplugin_ActionVideo.class.php прописать прослойку:

/**
 * Определяем наличие делегата экшена
 */
$sClass = 'ActionTopic';
if($aChain=Engine::getInstance()->Plugin_GetLastInherit('ActionTopic')) {
    if(!empty($aChain)) {
        $sClass=$aChain['inherit'];
    }
}
class_alias($sClass,'PluginYourplugin_Wrapper_ActionTopic');

class PluginYourplugin_ActionVideo extends PluginYourplugin_Wrapper_ActionTopic {

}
Вы такие интерессные ребята. Потроллили и забыли. А толку то писать бесполезные коменты? Ради количества?
Унаследовал модуль User с одним лиш методом:
$this->public function Init() {
		$this->aUserFieldTypes[] = 'aboutsoundche';
		parent::Init();
	}

А дальше стандартно:
getUserFieldValueByName() и setUserFieldsValues()
  • avatar kpoxas
  • 1
6. в .htaccess вставляем что-то типа:
RewriteRule ^index/(page\d*)$ http://ТВОЙСАЙТ/$1 [R=301,L]

ну и в конфиге ls

'/^(page(\d+)\/?)$/i' => "index/\\1",	

Это так навскидку. Понятное дело, в шаблонах переделать все ссылки.
  • avatar avadim
  • 0
1. В папке engine\lib\external\jquery\ находите файл jquery.jqplugin.js

2. Там находите такие строки:
wmp: {
activex: [«WMPlayer.OCX», «MediaPlayer.MediaPlayer.1»],
plugin: /(windows\smedia)|(Microsoft)/gim
},

3. В начале каждой строки ставите двойной слэш, стобы получилось так:
//wmp: {
// activex: [«WMPlayer.OCX», «MediaPlayer.MediaPlayer.1»],
// plugin: /(windows\smedia)|(Microsoft)/gim
//},
Если готовность заплатить после этого не пройдет, то это можно сделать здесь:
livestreetcms.com/profile/aVadim/donate/
:)
мобильный шаблон под 1.0 сырой не допиленный и вообще…

Для автоопределения в config.php вместо
$config['view']['skin']        = 'synio';

поставить
$phone_array = array('iphone', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );

foreach ($phone_array as $value) {
        if ( strpos($agent, $value) !== false ) {
                $config['view']['skin'] = 'Название мобильного шаблона';  
                break;
        } else {
                $config['view']['skin'] = 'developer';  
        }
}
  • avatar Advert
  • 1
зачем троллить по поводу цены? я купил, плагин нужный. Объем работы по плагину: advert.cc/screen/20120826-6m8-73kb.jpg Либо пытаешься цену сбить либо не знаешь сколько стоит час работы программиста. Спасибо должен говорить за то что он доступен за 8$. Откуда вы такие беретесь вообще.
  • avatar _et
  • 6
Такое ощущение, что вы держите разработчиков за рабов и кидал, вводя какие-то правила. А то, что криворукие юзеры не могут одну строку стилей поправить, это нормально да, при это не ценя того вклада, который разработчики вносят бесплатно в двиг?

Я сам являюсь разработчиком дополнений под другой двиг, и могу сказать, что демо делаю в исключительных случаях, когда задействована админка и по скринам всего не показать. Чтобы я делал демо сайт, да еще и что-то затачивал под дефолные шаблоны идеально за плагин, который стоит 300р… Простите, но это бред.

Если человеку нужен функционал — он его покупает в любом случае.
Если ему нужны еще и красивости которых нет в функционале, то он их либо сам делает, либо заказывает, либо просит разработчика о внесении, возможно и сделают…

У дополнений есть описание. Если в описании нет упоминаний про шаблоны или поддержку в определенных условиях, то и нечего потом создавать подобные топики! Обещаний небыло и требовать что-то может быть бесполезным.
А если руки растут непонятно откуда или знаний банально нет, то стоит задуматься перед покупкой…

В данном случае ТС оказался человеком не способным внести коррективы(или не захотел) и создал топик(так как PSNet , отказал в реализации его задумок и верстки формы под шаб), которого вообще не должно быть, так как PSNet ничего не нарушил и продал РАБОЧИЙ ФУНКЦИОНАЛ, который описан на странице плагина. А теперь недовольные юзеры устроили срач. При этом заголовок странный «Поддержка плагина как развод?». ТС, покажите мне на странице плагина, где там обещания от PSNet поддержки, о которой вы пишете? Я например ничего подобного не увидел. Соответственно, вывод, PSNet не обязан оказывать поддержку по первому требованию, если это не касается работоспособности самого плагина, о которых обещано в описании.
Всем Вам подавай «юзерфрендли» за 10 баксов. Да что там за 10… Прямо из коробки подавай да еще и в ноги поклонись.

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

От поддержки Вам никто не отказывал. Технических проблем у Вас нет? Нет. Плагин работает. Работает? Не нравится внешний вид? К дизайнеру, либо учим html и css. Не устраивает такая политика? У Вас есть возможность договориться о манибэке, благо все мы общаемся на русском.

Особенно то, что авторы плагинов отказываются включения минимальных функций в админку и реализацию её в принципе
Админку для плагина поиска??? Отсыпьте
  • avatar cheru
  • 0
rpc.pingomatic.com/
blogsearch.google.com/ping/RPC2
blogsearch.google.ru/ping/RPC2
rpc.pingomatic.com/
ping.feedburner.com
ping.blogs.yandex.ru/RPC2
rpc.technorati.com/rpc/ping
api.my.yahoo.com/rss/ping
api.my.yahoo.com/RPC2
audiorpc.weblogs.com/RPC2
blog.goo.ne.jp/XMLRPC
blogpeople.net/servlet/weblogUpdates
hamo-search.com/ping.php
blog.youdao.com/ping/RPC2
ping.kutsulog.net/
ping.myblog.jp
ping.fc2.com
ping.namaan.net/rpc
ping.syndic8.com/xmlrpc.php
ping.weblogalot.com/rpc.php
rpc.blogrolling.com/pinger/
rpc.icerocket.com:10080
rpc.reader.livedoor.com/ping
rpc.twingly.com
www.blogpeople.net/servlet/weblogUpdates
www.syndic8.com/xmlrpc.php
rpc.weblogs.com/RPC2
www.blogdigger.com/RPC2
www.wasalive.com/ping/
xianguo.com/xmlrpc/ping.php
xping.pubsub.com/ping
xping.pubsub.com/ping/
wasalive.com/ping/
rpc.weblogs.com/RPC2
rpc.icerocket.com:10080/
pinger.blogflux.com/rpc
ping.weblogalot.com/rpc.php
ping.syndic8.com/xmlrpc.php
ping.feedburner.com
blogpeople.net/servlet/weblogUpdates
api.moreover.com/RPC2
www.xianguo.com/xmlrpc/ping.php
www.feedsky.com/api/RPC2
www.blogpeople.net/servlet/weblogUpdates
rpc.reader.livedoor.com/ping
ping.namaan.net/rpc
ping.kutsulog.net
ping.fc2.com
ping.blogoon.net
rpc.pingomatic.com
ping.weblogs.se/
blogmatcher.com/u.php
coreblog.org/ping/
bulkfeeds.net/rpc
ping.myblog.jp
ping.bitacoras.com
ping.bloggers.jp/rpc/
ping.blogmura.jp/rpc/
— это список для wordpress движка.
я так понимаю там все это через XML сделано.
  • avatar PSNet
  • 1

<script>
jQuery (document).ready (function ($) {
  //
  // YouTube iframe fix for Chrome browsers
  //
  $ ("iframe").each (function () {
    var ifr_source = $ (this).attr ('src');
    var wmodeStr = "wmode=transparent";
    if (ifr_source.indexOf ('youtube.com') != -1) {
      if (ifr_source.indexOf ('?') != -1) {
        $ (this).attr ('src', ifr_source + '&' + wmodeStr);
      } else {
        $ (this).attr ('src', ifr_source + '?' + wmodeStr);
      }
    }
  });
});
</script>


вставить в header.tpl, например, после

<body onload="prettyPrint()">


З.Ы. для тех кто не понял что произошло и хочет разобраться — ютуб не добавляет параметр wmode=transparent для ембед кода видео (который само собой находится внутри ифрейма, в странице) и поэтому даже установка значения z-index заоблачных высот не спасает ситуацию — в ФФ все ок, а хром прячет все попапы под флеш.
Но ютуб позволяет устанавливать в ссылке с ифрейм кодом дополнительные параметры к коду видео, и это именно здесь и происходит: выбираем все видео на странице в ифреймах с ютуба, проверяем есть ли там уже какие-то параметры и добавляем в зависимости от этого либо ?wmode=transparent либо &wmode=transparent.
как я и сказал — метод не ахти — видео предзагружаются два раза с ютуба, но по-другому — никак. разве что на сервере все это парсить, так уж лучше браузер этим займется.
У меня причиной неработания было следующее:
/**
 * Формируем ссылку для запроса
 */
$sRequest="https://api.vkontakte.ru/method/wall.post?owner_id={$iWallId}=&access_token={$sAccessToken}&message={$sText}&attachment={$sLink}&from_group={$bFromGroup}";


Заменить на

$sRequest="https://api.vkontakte.ru/method/wall.post?owner_id={$iWallId}&access_token={$sAccessToken}&message={$sText}&attachment={$sLink}&from_group={$bFromGroup}";


лишнее равно там было.
  • avatar kpoxas
  • 2
ls — это глобальный объект скрипта
Основные методы, такие как ls.ajax, описаны в main.js.
В этот объект через closures подключаются дополнительные модули (talk, comments,...), которые лежат в отдельных файлах.

Если хотите дополнить модуль чем-то своим без вреда, используйте конструкцию:


/**
 * Дополнительные функции
 */
ls.comments_addon = (function ($) {	
	/**
	 * Показывает/скрывает форму комментирования
	 */
	this._toggleCommentFormParent = this.toggleCommentForm;
	this.toggleCommentForm = function(idComment, bNoFocus) {
		this._toggleCommentFormParent(idBlog);
                /**
                 * Ваши действия
                 */
                ls.msg.notice('Bla bla bla!');
		return false;
	}		
	return this;
}).call(ls.comments || {},jQuery);


Данный код дополняет функцию toggle формы комментария, добавляя после вашу функцию.